/* Do not remove the headers from this file! see /USAGE for more info. */ // // DELETE.C 970408 Fritti // // Delete a post from a bulletin board. // inherit CMD; 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 main(string arg) { object ob, brd; int array ids; int id; class news_msg msg; 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 delete notes from.\n"); return; } if (!arg || arg == "" || sscanf(arg, "%d", id) != 1) { write("Usage: delete <postnr>.\n"); return; } if (!NEWS_D->query_write_to_group(brd->query_group())) { write("You don't have permission to delete notes from this board.\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("You can only delete posts that are on the bulletin board!\n"); return; } msg = NEWS_D->get_message(brd->query_group(), ids[id - 1]); if (msg->poster != this_body()->query_name()) { write("You can only delete your own posts.\n"); return; } NEWS_D->remove_post(brd->query_group(), ids[id - 1]); write("Post nr. " + id + " removed.\n"); }