Please make sure IN_MYBB is defined."); } $page->add_breadcrumb_item($lang->moderation_queue, "index.php?module=forum-moderation_queue"); $sub_tabs['threads'] = array( 'title' => $lang->threads, 'link' => "index.php?module=forum-moderation_queue&type=threads", 'description' => $lang->threads_desc ); $sub_tabs['posts'] = array( 'title' => $lang->posts, 'link' => "index.php?module=forum-moderation_queue&type=posts", 'description' => $lang->posts_desc ); $sub_tabs['attachments'] = array( 'title' => $lang->attachments, 'link' => "index.php?module=forum-moderation_queue&type=attachments", 'description' => $lang->attachments_desc ); $plugins->run_hooks("admin_forum_moderation_queue_begin"); // Actually performing our moderation choices if($mybb->request_method == "post") { $plugins->run_hooks("admin_forum_moderation_queue_commit"); require_once MYBB_ROOT."inc/functions_upload.php"; require_once MYBB_ROOT."inc/class_moderation.php"; $moderation = new Moderation; if(is_array($mybb->input['threads'])) { // Fetch threads $query = $db->simple_select("threads", "tid", "tid IN (".implode(",", array_map("intval", array_keys($mybb->input['threads'])))."){$flist}"); while($thread = $db->fetch_array($query)) { $action = $mybb->input['threads'][$thread['tid']]; if($action == "approve") { $threads_to_approve[] = $thread['tid']; } else if($action == "delete") { $moderation->delete_thread($thread['tid']); } } if(is_array($threads_to_approve)) { $moderation->approve_threads($threads_to_approve); } $plugins->run_hooks("admin_forum_moderation_queue_threads_commit"); // Log admin action log_admin_action('threads'); flash_message($lang->success_threads, 'success'); admin_redirect("index.php?module=forum-moderation_queue&type=threads"); } else if(is_array($mybb->input['posts'])) { // Fetch posts $query = $db->simple_select("posts", "pid", "pid IN (".implode(",", array_map("intval", array_keys($mybb->input['posts'])))."){$flist}"); while($post = $db->fetch_array($query)) { $action = $mybb->input['posts'][$post['pid']]; if($action == "approve") { $posts_to_approve[] = $post['pid']; } else if($action == "delete") { $moderation->delete_post($post['pid']); } } if(is_array($posts_to_approve)) { $moderation->approve_posts($posts_to_approve); } $plugins->run_hooks("admin_forum_moderation_queue_posts_commit"); // Log admin action log_admin_action('posts'); flash_message($lang->success_posts, 'success'); admin_redirect("index.php?module=forum-moderation_queue&type=posts"); } else if(is_array($mybb->input['attachments'])) { $query = $db->simple_select("attachments", "aid, pid", "aid IN (".implode(",", array_map("intval", array_keys($mybb->input['attachments'])))."){$flist}"); while($attachment = $db->fetch_array($query)) { $action = $mybb->input['attachments'][$attachment['aid']]; if($action == "approve") { $db->update_query("attachments", array("visible" => 1), "aid='{$attachment['aid']}'"); } else if($action == "delete") { remove_attachment($attachment['pid'], '', $attachment['aid']); } } $plugins->run_hooks("admin_forum_moderation_queue_attachments_commit"); // Log admin action log_admin_action('attachments'); flash_message($lang->success_attachments, 'success'); admin_redirect("index.php?module=forum-moderation_queue&type=attachments"); } } $all_options = "\n"; // Threads awaiting moderation if($mybb->input['type'] == "threads" || !$mybb->input['type']) { $plugins->run_hooks("admin_forum_moderation_queue_threads"); $forum_cache = $cache->read("forums"); $query = $db->simple_select("threads", "COUNT(tid) AS unapprovedthreads", "visible=0"); $unapproved_threads = $db->fetch_field($query, "unapprovedthreads"); if($unapproved_threads > 0) { // Figure out if we need to display multiple pages. $per_page = 15; if($mybb->input['page'] > 0) { $current_page = intval($mybb->input['page']); $start = ($current_page-1)*$per_page; $pages = $unaproved_threads / $per_page; $pages = ceil($pages); if($current_page > $pages) { $start = 0; $current_page = 1; } } else { $start = 0; $current_page = 1; } $pagination = draw_admin_pagination($current_page, $per_page, $unaproved_threads, "index.php?module=forum-moderation_queue&page={page}"); $page->add_breadcrumb_item($lang->threads_awaiting_moderation); $page->output_header($lang->threads_awaiting_moderation); $page->output_nav_tabs($sub_tabs, "threads"); $form = new Form("index.php?module=forum-moderation_queue", "post"); $table = new Table; $table->construct_header($lang->subject); $table->construct_header($lang->author, array("class" => "align_center", "width" => "20%")); $table->construct_header($lang->posted, array("class" => "align_center", "width" => "20%")); $query = $db->query(" SELECT t.tid, t.dateline, t.fid, t.subject, p.message AS postmessage, u.username AS username, t.uid FROM ".TABLE_PREFIX."threads t LEFT JOIN ".TABLE_PREFIX."posts p ON (p.pid=t.firstpost) LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=t.uid) WHERE t.visible='0' ORDER BY t.lastpost DESC LIMIT {$start}, {$per_page} "); while($thread = $db->fetch_array($query)) { $thread['subject'] = htmlspecialchars_uni($thread['subject']); $thread['threadlink'] = get_thread_link($thread['tid']); $thread['forumlink'] = get_forum_link($thread['fid']); $forum_name = $forum_cache[$thread['fid']]['name']; $threaddate = my_date($mybb->settings['dateformat'], $thread['dateline']); $threadtime = my_date($mybb->settings['timeformat'], $thread['dateline']); $profile_link = build_profile_link($thread['username'], $thread['uid'], "_blank"); $thread['postmessage'] = nl2br(htmlspecialchars_uni($thread['postmessage'])); $table->construct_cell("{$thread['subject']}"); $table->construct_cell($profile_link, array("class" => "align_center")); $table->construct_cell("{$threaddate}, {$threadtime}", array("class" => "align_center")); $table->construct_row(); $controls = "
\n"; $controls .= $form->generate_radio_button("threads[{$thread['tid']}]", "ignore", $lang->ignore, array('class' => 'radio_ignore', 'checked' => true))." "; $controls .= $form->generate_radio_button("threads[{$thread['tid']}]", "delete", $lang->delete, array('class' => 'radio_delete', 'checked' => false))." "; $controls .= $form->generate_radio_button("threads[{$thread['tid']}]", "approve", $lang->approve, array('class' => 'radio_approve', 'checked' => false)); $controls .= "
"; $forum = "{$lang->forum} {$forum_name}
"; $table->construct_cell("
{$controls}
{$forum}
{$thread['postmessage']}
", array("colspan" => 3)); $table->construct_row(); } $table->output($lang->threads_awaiting_moderation); echo $all_options; echo $pagination; $buttons[] = $form->generate_submit_button($lang->perform_action); $form->output_submit_wrapper($buttons); $form->end(); $page->output_footer(); } } // Posts awaiting moderation if($mybb->input['type'] == "posts" || $mybb->input['type'] == "") { $plugins->run_hooks("admin_forum_moderation_queue_posts"); $forum_cache = $cache->read("forums"); $query = $db->query(" SELECT COUNT(pid) AS unapprovedposts FROM ".TABLE_PREFIX."posts p LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid) WHERE p.visible='0' AND t.firstpost != p.pid "); $unapproved_posts = $db->fetch_field($query, "unapprovedposts"); if($unapproved_posts > 0) { // Figure out if we need to display multiple pages. $per_page = 15; if($mybb->input['page'] > 0) { $current_page = intval($mybb->input['page']); $start = ($current_page-1)*$per_page; $pages = $unaproved_posts / $per_page; $pages = ceil($pages); if($current_page > $pages) { $start = 0; $current_page = 1; } } else { $start = 0; $current_page = 1; } $pagination = draw_admin_pagination($current_page, $per_page, $unaproved_posts, "index.php?module=forum-moderation_queue&type=posts&page={page}"); $page->add_breadcrumb_item($lang->posts_awaiting_moderation); $page->output_header($lang->posts_awaiting_moderation); $page->output_nav_tabs($sub_tabs, "posts"); $form = new Form("index.php?module=forum-moderation_queue", "post"); $table = new Table; $table->construct_header($lang->subject); $table->construct_header($lang->author, array("class" => "align_center", "width" => "20%")); $table->construct_header($lang->posted, array("class" => "align_center", "width" => "20%")); $query = $db->query(" SELECT p.pid, p.subject, p.message, t.subject AS threadsubject, t.tid, u.username, p.uid, t.fid FROM ".TABLE_PREFIX."posts p LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid) LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid) WHERE p.visible='0' AND t.firstpost != p.pid ORDER BY p.dateline DESC LIMIT {$start}, {$per_page} "); while($post = $db->fetch_array($query)) { $altbg = alt_trow(); $post['threadsubject'] = htmlspecialchars_uni($post['threadsubject']); $post['subject'] = htmlspecialchars_uni($post['subject']); if(!$post['subject']) { $post['subject'] = $lang->re." ".$post['threadsubject']; } $post['postlink'] = get_post_link($post['pid'], $post['tid']); $post['threadlink'] = get_thread_link($post['tid']); $post['forumlink'] = get_forum_link($post['fid']); $forum_name = $forum_cache[$post['fid']]['name']; $postdate = my_date($mybb->settings['dateformat'], $post['dateline']); $posttime = my_date($mybb->settings['timeformat'], $post['dateline']); $profile_link = build_profile_link($post['username'], $post['uid'], "_blank"); $post['message'] = nl2br(htmlspecialchars_uni($post['message'])); $table->construct_cell("{$post['subject']}"); $table->construct_cell($profile_link, array("class" => "align_center")); $table->construct_cell("{$postdate}, {$posttime}", array("class" => "align_center")); $table->construct_row(); $controls = "
\n"; $controls .= $form->generate_radio_button("posts[{$post['pid']}]", "ignore", $lang->ignore, array('class' => 'radio_ignore', 'checked' => true))." "; $controls .= $form->generate_radio_button("posts[{$post['pid']}]", "delete",$lang->delete, array('class' => 'radio_delete', 'checked' => false))." "; $controls .= $form->generate_radio_button("posts[{$post['pid']}]", "approve", $lang->approve, array('class' => 'radio_approve', 'checked' => false)); $controls .= "
"; $thread = "{$lang->thread} {$post['threadsubject']}"; $forum = "{$lang->forum} {$forum_name}
"; $table->construct_cell("
{$controls}
{$forum}{$thread}
{$post['message']}
", array("colspan" => 3)); $table->construct_row(); } $table->output($lang->posts_awaiting_moderation); echo $all_options; echo $pagination; $buttons[] = $form->generate_submit_button($lang->perform_action); $form->output_submit_wrapper($buttons); $form->end(); $page->output_footer(); } else if($mybb->input['type'] == "posts") { $page->output_header($lang->moderation_queue); $page->output_nav_tabs($sub_tabs, "posts"); echo "

{$lang->error_no_posts}

"; $page->output_footer(); } } // Attachments awaiting moderation if($mybb->input['type'] == "attachments" || $mybb->input['type'] == "") { $plugins->run_hooks("admin_forum_moderation_queue_attachments"); $query = $db->query(" SELECT COUNT(aid) AS unapprovedattachments FROM ".TABLE_PREFIX."attachments a LEFT JOIN ".TABLE_PREFIX."posts p ON (p.pid=a.pid) LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid) WHERE a.visible='0' "); $unapproved_attachments = $db->fetch_field($query, "unapprovedattachments"); if($unapproved_attachments > 0) { // Figure out if we need to display multiple pages. $per_page = 15; if($mybb->input['page'] > 0) { $current_page = intval($mybb->input['page']); $start = ($current_page-1)*$per_page; $pages = $unapproved_attachments / $per_page; $pages = ceil($pages); if($current_page > $pages) { $start = 0; $current_page = 1; } } else { $start = 0; $current_page = 1; } $pagination = draw_admin_pagination($current_page, $per_page, $unapproved_attachments, "index.php?module=forum-moderation_queue&type=attachments&page={page}"); $page->add_breadcrumb_item($lang->attachments_awaiting_moderation); $page->output_header($lang->attachments_awaiting_moderation); $page->output_nav_tabs($sub_tabs, "attachments"); $form = new Form("index.php?module=forum-moderation_queue", "post"); $table = new Table; $table->construct_header($lang->filename); $table->construct_header($lang->uploadedby, array("class" => "align_center", "width" => "20%")); $table->construct_header($lang->posted, array("class" => "align_center", "width" => "20%")); $table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 3)); $query = $db->query(" SELECT a.*, p.subject AS postsubject, p.dateline, p.uid, u.username, t.tid, t.subject AS threadsubject FROM ".TABLE_PREFIX."attachments a LEFT JOIN ".TABLE_PREFIX."posts p ON (p.pid=a.pid) LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid) LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid) WHERE a.visible='0' ORDER BY a.dateuploaded DESC LIMIT {$start}, {$per_page} "); while($attachment = $db->fetch_array($query)) { if(!$attachment['dateuploaded']) $attachment['dateuploaded'] = $attachment['dateline']; $attachdate = my_date($mybb->settings['dateformat'], $attachment['dateuploaded']); $attachtime = my_date($mybb->settings['timeformat'], $attachment['dateuploaded']); $attachment['postsubject'] = htmlspecialchars_uni($attachment['postsubject']); $attachment['filename'] = htmlspecialchars_uni($attachment['filename']); $attachment['threadsubject'] = htmlspecialchars_uni($attachment['threadsubject']); $attachment['filesize'] = get_friendly_size($attachment['filesize']); $link = get_post_link($attachment['pid'], $attachment['tid']) . "#pid{$attachment['pid']}"; $thread_link = get_thread_link($attachment['tid']); $profile_link = build_profile_link($attachment['username'], $attachment['uid'], "_blank"); $table->construct_cell("{$attachment['filename']} ({$attachment['filesize']})
{$lang->post} {$attachment['postsubject']}"); $table->construct_cell($profile_link, array("class" => "align_center")); $table->construct_cell("{$attachdate}, {$attachtime}", array("class" => "align_center")); $table->construct_cell($form->generate_radio_button("attachments[{$attachment['aid']}]", "ignore", $lang->ignore, array('class' => 'radio_ignore', 'checked' => true)), array("class" => "align_center")); $table->construct_cell($form->generate_radio_button("attachments[{$attachment['aid']}]", "delete", $lang->delete, array('class' => 'radio_delete', 'checked' => false)), array("class" => "align_center")); $table->construct_cell($form->generate_radio_button("attachments[{$attachment['aid']}]", "approve", $lang->approve, array('class' => 'radio_approve', 'checked' => false)), array("class" => "align_center")); $table->construct_row(); } $table->output($lang->attachments_awaiting_moderation); echo $all_options; echo $pagination; $buttons[] = $form->generate_submit_button($lang->perform_action); $form->output_submit_wrapper($buttons); $form->end(); $page->output_footer(); } else if($mybb->input['type'] == "attachments") { $page->output_header($lang->moderation_queue); $page->output_nav_tabs($sub_tabs, "attachments"); echo "

{$lang->error_no_attachments}

"; $page->output_footer(); } } // Still nothing? All queues are empty! :-D $page->output_header($lang->moderation_queue); echo "

{$lang->error_no_threads}

"; $page->output_footer(); ?>