Please make sure IN_MYBB is defined."); } $page->add_breadcrumb_item($lang->report_reasons, "index.php?module=config-report_reasons"); $content_types = array('post', 'profile', 'reputation'); $content_types = $plugins->run_hooks("report_content_types", $content_types); $plugins->run_hooks("admin_config_report_reasons_begin"); if($mybb->input['action'] == "add") { cast_content_inputs(); $plugins->run_hooks("admin_config_report_reasons_add"); if($mybb->request_method == "post") { if(!trim($mybb->input['title'])) { $errors[] = $lang->error_missing_title; } if($mybb->input['extra'] != 0 && $mybb->input['extra'] != 1) { $errors[] = $lang->error_missing_extra; } if(!$errors) { if($mybb->input['appliesto'] != 'all') { $appliesto = array(); asort($content_types); foreach($content_types as $content) { if($mybb->input["appliesto_{$content}"] == 1) { $appliesto[] = $content; } } $appliesto = implode(",", $appliesto); } else { $appliesto = 'all'; } $new_reason = array( "title" => $db->escape_string($mybb->input['title']), "appliesto" => $db->escape_string($appliesto), "extra" => $mybb->input['extra'] ); $rid = $db->insert_query("reportreasons", $new_reason); $plugins->run_hooks("admin_config_report_reasons_add_commit"); $cache->update_reportreasons(); // Log admin action log_admin_action($rid, $mybb->input['title']); flash_message($lang->success_reason_created, 'success'); admin_redirect("index.php?module=config-report_reasons"); } } $page->add_breadcrumb_item($lang->add_new_reason); $page->output_header($lang->report_reasons." - ".$lang->add_new_reason); $sub_tabs['report_reasons'] = array( 'title' => $lang->report_reasons, 'link' => "index.php?module=config-report_reasons" ); $sub_tabs['add_new_reason'] = array( 'title' => $lang->add_new_reason, 'link' => "index.php?module=config-report_reasons&action=add", 'description' => $lang->add_new_reason_desc ); $page->output_nav_tabs($sub_tabs, 'add_new_reason'); $form = new Form("index.php?module=config-report_reasons&action=add", "post", "add"); if($errors) { $page->output_inline_error($errors); } else { $mybb->input['extra'] = 0; } $form_container = new FormContainer($lang->add_new_reason); $form_container->output_row($lang->reason_title." *", $lang->reason_title_desc, $form->generate_text_box('title', $mybb->get_input('title'), array('id' => 'title')), 'title'); $form_container->output_row($lang->applies_to." *", '', generate_content_select()); $form_container->output_row($lang->requires_extra." *", $lang->requires_extra_desc, $form->generate_yes_no_radio('extra', $mybb->input['extra'])); $form_container->end(); $buttons[] = $form->generate_submit_button($lang->save_reason); $form->output_submit_wrapper($buttons); $form->end(); $page->output_footer(); } if($mybb->input['action'] == "edit") { $query = $db->simple_select("reportreasons", "*", "rid='".$mybb->get_input('rid', MyBB::INPUT_INT)."'"); $reason = $db->fetch_array($query); if(!$reason) { flash_message($lang->error_invalid_reason, 'error'); admin_redirect("index.php?module=config-report_reasons"); } elseif($reason['rid'] == 1) { flash_message($lang->error_cannot_modify_reason, 'error'); admin_redirect("index.php?module=config-report_reasons"); } cast_content_inputs(); $plugins->run_hooks("admin_config_report_reasons_edit"); if($mybb->request_method == "post") { if(!trim($mybb->input['title'])) { $errors[] = $lang->error_missing_title; } if($mybb->input['extra'] != 0 && $mybb->input['extra'] != 1) { $errors[] = $lang->error_missing_extra; } if(!$errors) { if($mybb->input['appliesto'] != 'all') { $appliesto = array(); asort($content_types); foreach($content_types as $content) { if($mybb->input["appliesto_{$content}"] == 1) { $appliesto[] = $content; } } $appliesto = implode(",", $appliesto); } else { $appliesto = 'all'; } $updated_reason = array( "title" => $db->escape_string($mybb->input['title']), "appliesto" => $db->escape_string($appliesto), "extra" => $mybb->input['extra'] ); $plugins->run_hooks("admin_config_report_reasons_edit_commit"); $db->update_query("reportreasons", $updated_reason, "rid='{$reason['rid']}'"); $cache->update_reportreasons(); // Log admin action log_admin_action($reason['rid'], $mybb->input['title']); flash_message($lang->success_reason_updated, 'success'); admin_redirect("index.php?module=config-report_reasons"); } } $page->add_breadcrumb_item($lang->edit_reason); $page->output_header($lang->report_reasons." - ".$lang->edit_reason); $sub_tabs['edit_reason'] = array( 'title' => $lang->edit_reason, 'link' => "index.php?module=config-report_reasons&action=edit&rid={$reason['rid']}", 'description' => $lang->edit_reason_desc ); $page->output_nav_tabs($sub_tabs, 'edit_reason'); $form = new Form("index.php?module=config-report_reasons&action=edit&rid={$reason['rid']}", "post", "add"); if($errors) { $page->output_inline_error($errors); } else { $mybb->input = $reason; $appliesto = explode(",", $reason['appliesto']); foreach($appliesto as $content) { $mybb->input["appliesto_{$content}"] = 1; } } $form_container = new FormContainer($lang->edit_reason); $form_container->output_row($lang->reason_title." *", $lang->reason_title_desc, $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title'); $form_container->output_row($lang->applies_to." *", '', generate_content_select()); $form_container->output_row($lang->requires_extra." *", $lang->requires_extra_desc, $form->generate_yes_no_radio('extra', $mybb->input['extra'])); $form_container->end(); $buttons[] = $form->generate_submit_button($lang->save_reason); $form->output_submit_wrapper($buttons); $form->end(); $page->output_footer(); } if($mybb->input['action'] == "delete") { if($mybb->get_input('no')) { admin_redirect("index.php?module=config-report_reasons"); } $query = $db->simple_select("reportreasons", "*", "rid='".$mybb->get_input('rid', MyBB::INPUT_INT)."'"); $reason = $db->fetch_array($query); if(!$reason) { flash_message($lang->error_invalid_reason, 'error'); admin_redirect("index.php?module=config-report_reasons"); } elseif($reason['rid'] == 1) { flash_message($lang->error_cannot_delete_reason, 'error'); admin_redirect("index.php?module=config-report_reasons"); } $plugins->run_hooks("admin_config_report_reasons_delete"); if($mybb->request_method == "post") { // Change the reason of associated reports to Other and carry over the title $updated_report = array( 'reasonid' => 1, 'reason' => $db->escape_string($reason['title']) ); $db->update_query("reportedcontent", $updated_report, "reasonid='{$reason['rid']}'"); $db->delete_query("reportreasons", "rid='{$reason['rid']}'"); $plugins->run_hooks("admin_config_report_reasons_delete_commit"); $cache->update_reportreasons(); // Log admin action log_admin_action($reason['rid'], $reason['title']); flash_message($lang->success_reason_deleted, 'success'); admin_redirect("index.php?module=config-report_reasons"); } else { $page->output_confirm_action("index.php?module=config-report_reasons&action=delete&rid={$reason['rid']}", $lang->confirm_reason_deletion); } } if(!$mybb->input['action']) { $plugins->run_hooks("admin_config_report_reasons_start"); if($mybb->request_method == "post") { if(!empty($mybb->input['disporder'])) { foreach($mybb->input['disporder'] as $rid => $order) { $db->update_query("reportreasons", array('disporder' => (int)$order), "rid='".(int)$rid."'"); } $plugins->run_hooks("admin_config_report_reasons_start_commit"); $cache->update_reportreasons(); flash_message($lang->success_reasons_disporder_updated, 'success'); admin_redirect("index.php?module=config-report_reasons"); } } $page->output_header($lang->report_reasons); $sub_tabs['report_reasons'] = array( 'title' => $lang->report_reasons, 'link' => "index.php?module=config-report_reasons", 'description' => $lang->report_reasons_desc ); $sub_tabs['add_new_reason'] = array( 'title' => $lang->add_new_reason, 'link' => "index.php?module=config-report_reasons&action=add", ); $page->output_nav_tabs($sub_tabs, 'report_reasons'); $form = new Form("index.php?module=config-report_reasons", "post", "reasons"); $form_container = new FormContainer($lang->report_reasons); $form_container->output_row_header($lang->reason_title); $form_container->output_row_header($lang->applies_to, array("width" => "35%")); $form_container->output_row_header($lang->extra_comment, array("width" => "10%", "class" => "align_center")); $form_container->output_row_header($lang->order, array("width" => "5%", "class" => "align_center")); $form_container->output_row_header($lang->controls, array("class" => "align_center", "width" => 150)); $query = $db->simple_select("reportreasons", "*", "", array('order_by' => 'disporder')); while($reasons = $db->fetch_array($query)) { $reasons['title'] = $lang->parse($reasons['title']); $reasons['appliesto'] = explode(",", $reasons['appliesto']); $appliesto = array(); foreach($reasons['appliesto'] as $content) { $key = "report_content_".$content; $appliesto[] = $lang->$key; } $reasons['appliesto'] = implode(", ", $appliesto); if($reasons['extra'] == 1) { $icon = "style}/images/icons/bullet_on.png\" alt=\"({$lang->yes})\" title=\"{$lang->yes}\" style=\"vertical-align: middle;\" /> "; } else { $icon = "style}/images/icons/bullet_off.png\" alt=\"({$lang->no})\" title=\"{$lang->no}\" style=\"vertical-align: middle;\" /> "; } $form_container->output_cell(htmlspecialchars_uni($reasons['title'])); $form_container->output_cell(htmlspecialchars_uni($reasons['appliesto'])); $form_container->output_cell("
{$icon}
", array("class" => "align_center")); $form_container->output_cell("", array("class" => "align_center")); $popup = new PopupMenu("reasons_{$reasons['rid']}", $lang->options); $popup->add_item($lang->edit_reason, "index.php?module=config-report_reasons&action=edit&rid={$reasons['rid']}"); $popup->add_item($lang->delete_reason, "index.php?module=config-report_reasons&action=delete&rid={$reasons['rid']}&my_post_key={$mybb->post_code}", "return AdminCP.deleteConfirmation(this, '{$lang->confirm_reason_deletion}')"); $form_container->output_cell($popup->fetch(), array("class" => "align_center")); $form_container->construct_row(); } if($form_container->num_rows() == 0) { $form_container->output_cell($lang->no_report_reasons, array('colspan' => 5)); $form_container->construct_row(); } $form_container->end(); $buttons = array(); $buttons[] = $form->generate_submit_button($lang->update_reasons_order); $form->output_submit_wrapper($buttons); $form->end(); $page->output_footer(); } function generate_content_select() { global $mybb, $lang; $checked = array('all' => '', 'custom' => '', 'none' => ''); if($mybb->get_input('appliesto') == 'all') { $checked['all'] = 'checked="checked"'; } elseif($mybb->get_input('appliesto') == '') { $checked['none'] = 'checked="checked"'; } else { $checked['custom'] = 'checked="checked"'; } print_selection_javascript(); return "
{$lang->content_colon} ".implode("
", generate_content_choices())."
"; } function generate_content_choices() { global $mybb, $lang, $form, $content_types; asort($content_types); $content_choices = array(); foreach($content_types as $content) { $key = "report_content_{$content}"; $content_choices[] = $form->generate_check_box("appliesto_{$content}", 1, $lang->$key, array('id' => "appliesto_{$content}", 'checked' => $mybb->get_input("appliesto_{$content}"))); } return $content_choices; } function cast_content_inputs() { global $mybb, $content_types; asort($content_types); foreach($content_types as $content) { $key = "appliesto_{$content}"; $mybb->input[$key] = $mybb->get_input($key, MyBB::INPUT_INT); } $mybb->input['extra'] = $mybb->get_input('extra', MyBB::INPUT_INT); }