Advertisement
Guest User

Board messages

a guest
Mar 10th, 2012
515
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.73 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Board Messages Plugin for MyBB
  4.  * Copyright © 2010 MyBB Mods
  5.  *
  6.  * By: Alan Crisp
  7.  * Website: http://mods.mybb.com/
  8.  * Version: 2.0.1
  9.  */
  10.  
  11. // Disallow direct access to this file for security reasons
  12. if(!defined("IN_MYBB"))
  13. {
  14.     die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
  15. }
  16.  
  17. $plugins->add_hook('admin_load', 'board_messages_admin');
  18. $plugins->add_hook('admin_config_menu', 'board_messages_admin_config_menu');
  19. $plugins->add_hook('admin_config_action_handler', 'board_messages_admin_config_action_handler');
  20. $plugins->add_hook('admin_config_permissions', 'board_messages_admin_config_permissions');
  21. $plugins->add_hook('global_start', 'board_messages');
  22.  
  23. function board_messages_info()
  24. {
  25.     global $lang;
  26.     $lang->load('board_messages');
  27.  
  28.     return array(
  29.         'name'=> $lang->board_messages,
  30.         'description'   => $lang->board_messages_desc,
  31.         'website'       => 'http://mods.mybb.com/',
  32.         'author'        => 'Alan Crisp',
  33.         'authorsite'    => 'http://musicalmidget.com/',
  34.         'version'       => '2.0.1',
  35.         'guid'          => '2759907b61afa0e03b67e658b6b569e3',
  36.         'compatibility' => '14*, 16*'
  37.     );
  38. }
  39.  
  40. function board_messages_install()
  41. {
  42.     global $db;
  43.  
  44.     $db->write_query("
  45.         CREATE TABLE ".TABLE_PREFIX."board_messages (
  46.             `mid` int(10) unsigned NOT NULL auto_increment,
  47.             `message` text NOT NULL,
  48.             `class` varchar(255) NOT NULL,
  49.             `global` tinyint(1) NOT NULL default '1',
  50.             `enabled` tinyint(1) NOT NULL default '0',
  51.             PRIMARY KEY (mid)
  52.         ) Type=MyISAM;
  53.     ");
  54. }
  55.  
  56. function board_messages_is_installed()
  57. {
  58.     global $db;
  59.  
  60.     if($db->table_exists('board_messages'))
  61.     {
  62.         return true;
  63.     }
  64.  
  65.     return false;
  66. }
  67.  
  68. function board_messages_uninstall()
  69. {
  70.     global $db;
  71.     $db->drop_table('board_messages');
  72. }
  73.  
  74. function board_messages_activate()
  75. {
  76.     global $db;
  77.  
  78.     $stylesheet = '.board_message {
  79.     background: #EFEFEF;
  80.     color: #333333;
  81.     border-top: 2px solid #D4D4D4;
  82.     border-bottom: 2px solid #D4D4D4;
  83.     padding: 5px;
  84.     margin-top: 10px;
  85. }';
  86.  
  87.     $new_stylesheet = array(
  88.         'name'         => 'board_messages.css',
  89.         'tid'          => 1,
  90.         'attachedto'   => '',
  91.         'stylesheet'   => $stylesheet,
  92.         'lastmodified' => TIME_NOW
  93.     );
  94.  
  95.     $sid = $db->insert_query('themestylesheets', $new_stylesheet);
  96.     $db->update_query('themestylesheets', array('cachefile' => "css.php?stylesheet={$sid}"), "sid='{$sid}'", 1);
  97.  
  98.     $query = $db->simple_select('themes', 'tid');
  99.     while($theme = $db->fetch_array($query))
  100.     {
  101.         require_once MYBB_ADMIN_DIR.'inc/functions_themes.php';
  102.         update_theme_stylesheet_list($theme['tid']);
  103.     }
  104.  
  105.     require MYBB_ROOT.'inc/adminfunctions_templates.php';
  106.     find_replace_templatesets('header', '#<navigation>#', "<navigation>\n\t\t\t{\$board_messages}");
  107.    
  108.     change_admin_permission('config', 'board_messages', 0);
  109. }
  110.  
  111. function board_messages_deactivate()
  112. {
  113.     global $db;
  114.  
  115.     $db->delete_query('themestylesheets', "name='board_messages.css'");
  116.  
  117.     $query = $db->simple_select('themes', 'tid');
  118.     while($theme = $db->fetch_array($query))
  119.     {
  120.         require_once MYBB_ADMIN_DIR.'inc/functions_themes.php';
  121.         update_theme_stylesheet_list($theme['tid']);
  122.     }
  123.  
  124.     require MYBB_ROOT.'inc/adminfunctions_templates.php';
  125.     find_replace_templatesets('header', '#\n\t\t\t{\$board_messages}#', '', 0);
  126.  
  127.     change_admin_permission('config', 'board_messages', -1);
  128. }
  129.  
  130. function board_messages_admin_config_menu(&$sub_menu)
  131. {
  132.     global $lang;
  133.     $lang->load('board_messages');
  134.  
  135.     $sub_menu[] = array('id' => 'board_messages', 'title' => $lang->board_messages, 'link' => 'index.php?module=config/board_messages');
  136. }
  137.  
  138. function board_messages_admin_config_action_handler(&$actions)
  139. {
  140.     $actions['board_messages'] = array('active' => 'board_messages', 'file' => 'board_messages');
  141. }
  142.  
  143. function board_messages_admin_config_permissions(&$admin_permissions)
  144. {
  145.     global $lang;
  146.     $admin_permissions['board_messages'] = $lang->can_manage_board_messages;
  147. }
  148.  
  149. function board_messages_admin()
  150. {
  151.     global $db, $lang, $mybb, $page, $run_module, $action_file;
  152.  
  153.     if($run_module == 'config' && $action_file == 'board_messages')
  154.     {
  155.         $page->add_breadcrumb_item($lang->board_messages, 'index.php?module=config/board_messages');
  156.  
  157.         if($mybb->input['action'] == 'add')
  158.         {
  159.             if($mybb->request_method == 'post')
  160.             {
  161.                 if(!trim($mybb->input['message']))
  162.                 {
  163.                     $errors[] = $lang->error_no_message;
  164.                 }
  165.  
  166.                 if(!$errors)
  167.                 {
  168.                     $new_message = array(
  169.                         'message' => $db->escape_string($mybb->input['message']),
  170.                         'class'   => $db->escape_string($mybb->input['class']),
  171.                         'global'  => intval($mybb->input['global']),
  172.                         'enabled' => intval($mybb->input['enabled'])
  173.                     );
  174.  
  175.                     $mid = $db->insert_query('board_messages', $new_message);
  176.  
  177.                     log_admin_action($mid);
  178.  
  179.                     flash_message($lang->success_message_saved, 'success');
  180.                     admin_redirect('index.php?module=config/board_messages');
  181.                 }
  182.             }
  183.  
  184.             $page->add_breadcrumb_item($lang->add_message);
  185.             $page->output_header($lang->board_messages.' - '.$lang->add_message);
  186.  
  187.             $sub_tabs['manage_messages'] = array(
  188.                 'title' => $lang->board_messages,
  189.                 'link'  => 'index.php?module=config/board_messages',
  190.             );
  191.  
  192.             $sub_tabs['add_message'] = array(
  193.                 'title'       => $lang->add_message,
  194.                 'link'        => 'index.php?module=config/board_messages&amp;action=add',
  195.                 'description' => $lang->add_message_desc
  196.             );
  197.  
  198.             $page->output_nav_tabs($sub_tabs, 'add_message');
  199.  
  200.             if($errors)
  201.             {
  202.                 $page->output_inline_error($errors);
  203.             }
  204.  
  205.             $form = new Form('index.php?module=config/board_messages&amp;action=add', 'post', 'add');
  206.             $form_container = new FormContainer($lang->add_message);
  207.             $form_container->output_row($lang->message.' <em>*</em>', $lang->message_desc, $form->generate_text_area('message', $mybb->input['message']));
  208.             $form_container->output_row($lang->class, $lang->class_desc, $form->generate_text_box('class', $mybb->input['class']));
  209.             $form_container->output_row($lang->display_global.' <em>*</em>', $lang->display_global_desc, $form->generate_yes_no_radio('global', $mybb->input['global'], true));
  210.             $form_container->output_row($lang->enabled.' <em>*</em>', $lang->enabled_desc, $form->generate_yes_no_radio('enabled', $mybb->input['enabled'], true));
  211.             $form_container->end();
  212.  
  213.             $buttons[] = $form->generate_submit_button($lang->save_message);
  214.  
  215.             $form->output_submit_wrapper($buttons);
  216.  
  217.             $form->end();
  218.  
  219.             $page->output_footer();
  220.         }
  221.  
  222.         if($mybb->input['action'] == 'edit')
  223.         {
  224.             $query = $db->simple_select('board_messages', '*', "mid='".intval($mybb->input['mid'])."'");
  225.             $message = $db->fetch_array($query);
  226.  
  227.             if(!$message['mid'])
  228.             {
  229.                 flash_message($lang->error_invalid_message, 'error');
  230.                 admin_redirect('index.php?module=config/board_messages');
  231.             }
  232.  
  233.             if($mybb->request_method == 'post')
  234.             {
  235.                 if(!trim($mybb->input['message']))
  236.                 {
  237.                     $errors[] = $lang->error_no_message;
  238.                 }
  239.  
  240.                 if(!$errors)
  241.                 {
  242.                     $message = array(
  243.                         'message' => $db->escape_string($mybb->input['message']),
  244.                         'class'   => $db->escape_string($mybb->input['class']),
  245.                         'global'  => intval($mybb->input['global']),
  246.                         'enabled' => intval($mybb->input['enabled'])
  247.                     );
  248.  
  249.                     $db->update_query('board_messages', $message, "mid='".intval($mybb->input['mid'])."'");
  250.  
  251.                     log_admin_action(intval($mybb->input['mid']));
  252.  
  253.                     flash_message($lang->success_message_saved, 'success');
  254.                     admin_redirect('index.php?module=config/board_messages');
  255.                 }
  256.             }
  257.  
  258.             $page->add_breadcrumb_item($lang->edit_message);
  259.             $page->output_header($lang->board_messages.' - '.$lang->edit_message);
  260.  
  261.             $sub_tabs['edit_message'] = array(
  262.                 'title'       => $lang->edit_message,
  263.                 'link'        => 'index.php?module=config/board_messages',
  264.                 'description' => $lang->edit_message_desc
  265.             );
  266.  
  267.             $page->output_nav_tabs($sub_tabs, 'edit_message');
  268.  
  269.             if($errors)
  270.             {
  271.                 $page->output_inline_error($errors);
  272.             }
  273.             else
  274.             {
  275.                 $mybb->input = $message;
  276.             }
  277.  
  278.             $form = new Form('index.php?module=config/board_messages&amp;action=edit', 'post', 'edit');
  279.             echo $form->generate_hidden_field('mid', $message['mid']);
  280.  
  281.             $form_container = new FormContainer($lang->edit_message);
  282.             $form_container->output_row($lang->message.' <em>*</em>', $lang->message_desc, $form->generate_text_area('message', $mybb->input['message']));
  283.             $form_container->output_row($lang->class, $lang->class_desc, $form->generate_text_box('class', $mybb->input['class']));
  284.             $form_container->output_row($lang->display_global.' <em>*</em>', $lang->display_global_desc, $form->generate_yes_no_radio('global', $mybb->input['global'], true));
  285.             $form_container->output_row($lang->enabled.' <em>*</em>', $lang->enabled_desc, $form->generate_yes_no_radio('enabled', $mybb->input['enabled'], true));
  286.             $form_container->end();
  287.  
  288.             $buttons[] = $form->generate_submit_button($lang->save_message);
  289.             $buttons[] = $form->generate_reset_button($lang->reset);
  290.  
  291.             $form->output_submit_wrapper($buttons);
  292.  
  293.             $form->end();
  294.  
  295.             $page->output_footer();
  296.         }
  297.  
  298.         if($mybb->input['action'] == 'delete')
  299.         {
  300.             $query = $db->simple_select('board_messages', '*', "mid='".intval($mybb->input['mid'])."'");
  301.             $message = $db->fetch_array($query);
  302.  
  303.             if(!$message['mid'])
  304.             {
  305.                 flash_message($lang->error_invalid_message, 'error');
  306.                 admin_redirect('index.php?module=config/board_messages');
  307.             }
  308.  
  309.             if($mybb->input['no'])
  310.             {
  311.                 admin_redirect('index.php?module=config/board_messages');
  312.             }
  313.  
  314.             if($mybb->request_method == 'post')
  315.             {
  316.                 $db->delete_query('board_messages', "mid='{$message['mid']}'");
  317.  
  318.                 log_admin_action($message['mid']);
  319.  
  320.                 flash_message($lang->success_message_deleted, 'success');
  321.                 admin_redirect('index.php?module=config/board_messages');
  322.             }
  323.             else
  324.             {
  325.                 $page->output_confirm_action("index.php?module=config/board_messages&amp;action=delete&amp;mid={$message['mid']}", $lang->confirm_message_deletion);
  326.             }
  327.         }
  328.  
  329.         if(!$mybb->input['action'])
  330.         {
  331.             $page->output_header($lang->board_messages);
  332.  
  333.             $sub_tabs['manage_messages'] = array(
  334.                 'title'       => $lang->board_messages,
  335.                 'link'        => 'index.php?module=config/board_messages',
  336.                 'description' => $lang->manage_messages_desc
  337.             );
  338.  
  339.             $sub_tabs['add_message'] = array(
  340.                 'title' => $lang->add_message,
  341.                 'link'  => 'index.php?module=config/board_messages&amp;action=add'
  342.             );
  343.  
  344.             $page->output_nav_tabs($sub_tabs, 'manage_messages');
  345.  
  346.             $table = new Table;
  347.             $table->construct_header($lang->message, array('colspan' => 2));
  348.             $table->construct_header($lang->location, array('class' => "align_center"));
  349.             $table->construct_header($lang->controls, array('class' => "align_center", 'colspan' => 2));
  350.  
  351.             $query = $db->simple_select('board_messages', '*');
  352.             while($message = $db->fetch_array($query))
  353.             {
  354.                 if($message['enabled'] == 1)
  355.                 {
  356.                     $icon = "<img src=\"styles/{$page->style}/images/icons/bullet_on.gif\" alt=\"(Enabled)\" title=\"Enabled\"  style=\"vertical-align: middle;\" />";
  357.                 }
  358.                 else
  359.                 {
  360.                     $icon = "<img src=\"styles/{$page->style}/images/icons/bullet_off.gif\" alt=\"(Disabled)\" title=\"Disabled\"  style=\"vertical-align: middle;\" />";
  361.                 }
  362.  
  363.                 if($message['global'] != 1)
  364.                 {
  365.                     $location = $lang->index_only;
  366.                 }
  367.                 else
  368.                 {
  369.                     $location = $lang->global;
  370.                 }
  371.  
  372.                 $table->construct_cell($icon, array('width' => 1));
  373.                 $table->construct_cell($message['message'], array('width' => '65%'));
  374.                 $table->construct_cell($location, array('class' => "align_center"));
  375.                 $table->construct_cell("<a href=\"index.php?module=config/board_messages&amp;action=edit&amp;mid={$message['mid']}\">{$lang->edit}</a>", array("class" => "align_center"));
  376.                 $table->construct_cell("<a href=\"index.php?module=config/board_messages&amp;action=delete&amp;mid={$message['mid']}&amp;my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_message_deletion}')\">{$lang->delete}</a>", array("class" => "align_center"));
  377.                 $table->construct_row();
  378.             }
  379.  
  380.             if($table->num_rows() == 0)
  381.             {
  382.                 $table->construct_cell($lang->no_board_messages, array('colspan' => 5));
  383.                 $table->construct_row();
  384.             }
  385.  
  386.             $table->output($lang->board_messages);
  387.  
  388.             $page->output_footer();
  389.         }
  390.  
  391.         exit;
  392.     }
  393. }
  394.  
  395. function board_messages()
  396. {
  397.     global $db, $templates, $board_messages, $current_page;
  398.  
  399.     $board_messages = '';
  400.     $query = $db->simple_select('board_messages', '*', "enabled='1'");
  401.     while($message = $db->fetch_array($query))
  402.     {
  403.         if($message['global'] != 0 || $current_page == 'index.php')
  404.         {
  405.             if(!$message['class'])
  406.             {
  407.                 $message['class'] = 'board_message';
  408.             }
  409.  
  410.             $board_messages .= '<div class="'.$message['class'].'">'.$message['message'].'</div>';
  411.         }
  412.     }
  413. }
  414. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement