/* Do not remove the headers from this file! see /USAGE for more info. */
//
// FOLLOWUP.C 970408 Fritti
//
// Followup a post on a bulletin board.
//
#include <edit.h>
inherit CMD;
inherit M_INPUT;
inherit CLASS_NEWSMSG;
private int filter_removed(object brd, int elem) {
class news_msg msg = NEWS_D->get_message(brd->query_group(), elem);
if (!msg || !msg->body)
return 0;
return 1;
}
private void receive_body(object brd, int followup_id, string array body) {
if (!body) {
write("Followup aborted.\n");
return;
}
NEWS_D->followup(brd->query_group(), followup_id, implode(body, "\n"));
write("Posted.\n");
}
private void main(string arg) {
object ob, brd;
int array ids;
int id;
brd = 0;
foreach (ob in deep_inventory(environment(this_body()))) {
if ((int)ob->is_bulletin_board())
brd = ob;
}
if (!brd) {
write("There is nothing here to post on.\n");
return;
}
if (!NEWS_D->query_write_to_group(brd->query_group())) {
write("You can't write on the bulletin board.\n");
return;
}
if (sscanf(arg, "%d", id) != 1) {
write("Please specify a post number.\n");
return;
}
ids = sort_array(filter_array(NEWS_D->get_messages(brd->query_group()),
(: filter_removed, brd :)), 1);
if (id <= 0 || id > sizeof(ids)) {
write("No such note.\n");
return;
}
new(EDIT_OB, EDIT_TEXT, 0, (: receive_body, brd, ids[id - 1] :));
}