SHARE
TWEET

Untitled

a guest Jun 27th, 2016 75 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. // Disallow direct access to this file for security reasons
  3. if(!defined('IN_MYBB'))
  4. {
  5.     die('Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.');
  6. }
  7.  
  8. // Pre-load templates
  9. global $mybb, $templatelist;
  10.  
  11. if(THIS_SCRIPT == 'memberlist.php' && $mybb->input['action'] == 'staff')
  12. {
  13.     if(isset($templatelist))
  14.     {
  15.         $templatelist .= ',';
  16.     }
  17.  
  18.     $templatelist .= 'staff_page2,staff_page2_group_row,staff_page2_member_row,staff_page2_no_groups,staff_page2_no_members,staff_page2_user_avatar,postbit_pm,postbit_email';
  19. }
  20.  
  21. // Public hooks
  22. $plugins->add_hook('memberlist_start', 'staff_page2_memberlist');
  23. $plugins->add_hook('showteam_start', 'staff_page2_showteam');
  24.  
  25. // Admin CP hooks
  26. $plugins->add_hook('admin_config_menu', 'staff_page2_admin_config_menu');
  27. $plugins->add_hook('admin_config_action_handler', 'staff_page2_admin_config_action_handler');
  28. $plugins->add_hook('admin_config_permissions', 'staff_page2_admin_config_permissions');
  29. $plugins->add_hook('admin_load', 'staff_page2_admin');
  30. $plugins->add_hook('admin_formcontainer_end', 'staff_page2_admin_formcontainer_end');
  31. $plugins->add_hook('admin_user_groups_edit_commit', 'staff_page2_admin_user_groups_edit_commit');
  32.  
  33. function staff_page2_info()
  34. {
  35.     return array(
  36.         'name'          => 'Staff Page',
  37.         'description'   => 'A plugin adds a page, which displays a list of the staff members. The list content can be managed and description of users can be added.',
  38.         'website'       => 'http://github.com/mrnu/staff-page',
  39.         'author'        => 'mrnu',
  40.         'authorsite'    => 'http://github.com/mrnu',
  41.         'version'       => '1.0',
  42.         'compatibility' => '18*',
  43.         'codename'      => 'staff_page2'
  44.     );
  45. }
  46.  
  47. /**
  48.  * Code hooked to memberlist_start.
  49.  * Display generated staff page.
  50.  *
  51.  */
  52. function staff_page2_memberlist()
  53. {
  54.     global $mybb, $lang;
  55.  
  56.     // Check if the staff page were requested - memberlist.php?action=staff.
  57.     if($mybb->input['action'] == 'staff')
  58.     {
  59.         if(!$mybb->usergroup['canseestaffpage'])
  60.         {
  61.             error_no_permission();
  62.         }
  63.  
  64.         // Load language
  65.         $lang->load('staff_page2');
  66.  
  67.         add_breadcrumb($lang->staff, 'memberlist.php?action=staff');
  68.  
  69.         // Get the template and output the page
  70.         $staff_page2_template = display_staff_page2();
  71.         output_page($staff_page2_template);
  72.         exit();
  73.     }
  74. }
  75.  
  76. /**
  77. * Code hooked to showteam_satrt.
  78. * Redirect to the custom staff page.
  79. *
  80. */
  81. function staff_page2_showteam()
  82. {
  83.     global $mybb;
  84.  
  85.     if($mybb->settings['staff_page2_showteam_redirect'])
  86.     {
  87.         header('Location: memberlist.php?action=staff');
  88.         exit();
  89.     }
  90. }
  91.  
  92.  
  93. /**
  94.  * Function which generates the staff page.
  95.  *
  96.  * @return string Staff page template.
  97.  */
  98. function display_staff_page2()
  99. {
  100.     global $db, $lang, $theme, $templates, $plugins, $mybb, $cache;
  101.     global $header, $headerinclude, $footer;
  102.  
  103.     // Get staff members and sort them by groups
  104.     $members = get_staff_members($mybb->input['group_id'] ? $mybb->input['group_id'] : 0);
  105.     $members = sort_members_by_group_id($members);
  106.  
  107.     // Get groups
  108.     $groups = get_staff_groups();
  109.  
  110.     if(count($groups))
  111.     {
  112.         // Output all groups
  113.         $groups_rows = '';
  114.  
  115.         foreach($groups as $group)
  116.         {
  117.             // Reset alt_trow()
  118.             $reset = 1;
  119.  
  120.             if(count($members[$group['id']]))
  121.             {
  122.                 // Initialize parser to handle MyCode inside members' description
  123.                 require_once MYBB_ROOT.'inc/class_parser.php';
  124.                 $parser = new postParser;
  125.                 $parser_options = array(
  126.                     'allow_html' => 0,
  127.                     'allow_mycode' => 1,
  128.                     'allow_smilies' => 1,
  129.                     'allow_imgcode' => 1,
  130.                     'allow_videocode' => 0,
  131.                     'filter_badwords' => 0
  132.                 );
  133.  
  134.                 // Output members of group
  135.                 $members_rows = '';
  136.  
  137.                 foreach($members[$group['id']] as $member)
  138.                 {
  139.                     // Format MyBB user's details
  140.                     $member['formatted_name'] = format_name($member['username'], $member['usergroup'], $member['displaygroup']);
  141.                     $member['profilelink'] = build_profile_link($member['formatted_name'], $member['user_id']);
  142.                     $member['profileurl'] = get_profile_link($member['user_id']);
  143.  
  144.                     // Parse member's description
  145.                     $description = $parser->parse_message($member['description'], $parser_options);
  146.  
  147.                     // Show "Send email" link
  148.                     $emailcode = '';
  149.  
  150.                     if($member['hideemail'] != 1)
  151.                     {
  152.                         $post['uid'] = $member['user_id'];
  153.                         eval("\$emailcode = \"".$templates->get("postbit_email")."\";");
  154.                     }
  155.  
  156.                     // Show "Send PM" link
  157.                     $pmcode = '';
  158.  
  159.                     if($member['receivepms'] != 0 && $mybb->settings['enablepms'] != 0 && my_strpos(','.$member['ignorelist'].',', ','.$mybb->user['uid'].',') === false)
  160.                     {
  161.                         $post['uid'] = $member['user_id'];
  162.                         eval("\$pmcode = \"".$templates->get("postbit_pm")."\";");
  163.                     }
  164.  
  165.                     // Show avatar
  166.                     $useravatar = format_avatar(htmlspecialchars_uni($member['avatar']), $member['avatardimensions'], my_strtolower($mybb->settings['staff_page2_maxavatarsize']));
  167.                     eval("\$member['avatar'] = \"".$templates->get("staff_page2_user_avatar")."\";");
  168.  
  169.                     // Alternate rows.
  170.                     $bgcolor = alt_trow($reset);
  171.  
  172.                     // Don't reset alt_trow()
  173.                     $reset = 0;
  174.  
  175.                     // Output member row template
  176.                     eval('$members_rows .= "'.$templates->get('staff_page2_member_row').'";');
  177.  
  178.  
  179.                 }
  180.             }
  181.             // No members
  182.             else
  183.             {
  184.                 eval('$members_rows = "'.$templates->get('staff_page2_no_members').'";');
  185.             }
  186.  
  187.             eval('$groups_rows .= "'.$templates->get('staff_page2_group_row').'";');
  188.         }
  189.     }
  190.     // No groups
  191.     else
  192.     {
  193.         eval('$groups_rows .= "'.$templates->get('staff_page2_no_groups').'";');
  194.     }
  195.  
  196.  
  197.     eval('$template = "'.$templates->get('staff_page2').'";');
  198.     return $template;
  199. }
  200.  
  201.  
  202. /**
  203.  * Get members of staff.
  204.  * @param int $group_id Group ID.
  205.  *
  206.  * @return array Members list.
  207.  */
  208. function get_staff_members($group_id = 0)
  209. {
  210.     global $db;
  211.  
  212.     $members = array();
  213.  
  214.     if($group_id)
  215.     {
  216.         $where_clause = 'm.group_id = ' . intval($group_id);
  217.     }
  218.     else
  219.     {
  220.         $where_clause = '1';
  221.     }
  222.  
  223.     //$query = $db->simple_select('staff_page2_members', '*', $where_clause, array('order_by'   =>  'user_id', 'order_dir'  =>  'ASC'));
  224.  
  225.     $query = $db->query('
  226.         SELECT m.*, u.username, u.uid, u.usergroup, u.displaygroup, u.avatar, u.avatardimensions, u.hideemail, u.receivepms, u.ignorelist
  227.         FROM '.TABLE_PREFIX.'staff_page2_members m
  228.         LEFT JOIN '.TABLE_PREFIX.'users u ON(m.user_id = u.uid)
  229.         WHERE '.$where_clause.'
  230.         ORDER BY m.list_order ASC, u.username ASC
  231.     ');
  232.  
  233.     if($db->num_rows($query))
  234.     {
  235.         while($row = $db->fetch_array($query))
  236.         {
  237.             $members[] = $row;
  238.         }
  239.     }
  240.  
  241.     return $members;
  242. }
  243.  
  244. /**
  245.  * Update the staff groups cache.
  246.  *
  247.  */
  248. function recache_staff_groups()
  249. {
  250.     global $db, $cache;
  251.  
  252.     $query = $db->simple_select('staff_page2_groups', '*', '1', array('order_by' => 'list_order', 'order_dir' => 'asc'));
  253.  
  254.     $groups = array();
  255.  
  256.     if($db->num_rows($query))
  257.     {
  258.         while($row = $db->fetch_array($query))
  259.         {
  260.             $groups[] = $row;
  261.         }
  262.     }
  263.  
  264.     $cache->update('staff_page2_groups', $groups);
  265. }
  266.  
  267. /**
  268.  * Get the staff groups from cachestore.
  269.  *
  270.  * @return array List of staff groups.
  271.  */
  272. function get_staff_groups()
  273. {
  274.     global $cache;
  275.  
  276.     $groups = $cache->read('staff_page2_groups');
  277.  
  278.     if(!is_array($groups))
  279.     {
  280.         return array();
  281.     }
  282.  
  283.     return $groups;
  284. }
  285.  
  286. /**
  287.  * Sort members array by group ID.
  288.  * Adds group ID as a main key.
  289.  *
  290.  * @return array
  291.  */
  292. function sort_members_by_group_id($members_array)
  293. {
  294.     if(!count($members_array))
  295.     {
  296.         return array();
  297.     }
  298.  
  299.     $new_array = array();
  300.  
  301.     foreach($members_array as $row)
  302.     {
  303.         $new_array[$row['group_id']][] = $row;
  304.     }
  305.  
  306.     return $new_array;
  307. }
  308.  
  309. /**
  310.  * Code hooked to page_admin_config_menu.
  311.  * Adds link to the staff page configuration in the config menu.
  312.  *
  313.  */
  314. function staff_page2_admin_config_menu($sub_menu)
  315. {
  316.     global $lang;
  317.  
  318.     $lang->load('staff_page2');
  319.  
  320.     $sub_menu[] = array('id' => 'staff_page2', 'title' => $lang->staff_page2, 'link' => 'index.php?module=config-staff_page2');
  321.  
  322.     return $sub_menu;
  323. }
  324.  
  325. /**
  326.  * Code hooked to page_admin_config_action_handler.
  327.  * Adds action for the staff page configuration
  328.  *
  329.  */
  330. function staff_page2_admin_config_action_handler($actions)
  331. {
  332.     $actions['staff_page2'] = array('active' => 'staff_page2', 'file' => 'staff_page2');
  333.  
  334.     return $actions;
  335. }
  336.  
  337. /**
  338.  * Code hooked to page_admin_config_permissions.
  339.  * Add permission to see the staff page configuration.
  340.  *
  341.  */
  342. function staff_page2_admin_config_permissions($admin_permissions)
  343. {
  344.     global $lang;
  345.  
  346.     $lang->load('staff_page2');
  347.  
  348.     $admin_permissions['staff_page2'] = $lang->staff_page2_admin_permission;
  349.  
  350.     return $admin_permissions;
  351. }
  352.  
  353.  
  354.  
  355.  
  356. /**
  357. * Code hooked to page_admin_config_permissions.
  358. * Add group permissions which allows groups to see the staff page.
  359. *
  360. */
  361. function staff_page2_admin_formcontainer_end()
  362. {
  363.     global $run_module, $form_container, $lang, $form, $mybb;
  364.  
  365.     if($run_module == "user" && !empty($form_container->_title) && !empty($lang->users_permissions) && $form_container->_title == $lang->users_permissions) {
  366.  
  367.         $options = array();
  368.         $options[] = $form->generate_check_box('canseestaffpage', 1, $lang->can_see_staff_page2, array('checked' => $mybb->input['canseestaffpage']));
  369.  
  370.         $form_container->output_row($lang->staff_page2, '', '<div class="group_settings_bit">'.implode('</div><div class="group_settings_bit">', $options).'</div>');
  371.     }
  372. }
  373.  
  374. /**
  375. * Code hooked to admin_user_groups_edit_commit
  376. * Update group permissions which allows groups to see the staff page.
  377. *
  378. */
  379. function staff_page2_admin_user_groups_edit_commit($admin_permissions)
  380. {
  381.     global $updated_group, $mybb;
  382.  
  383.     $updated_group['canseestaffpage'] = $mybb->input['canseestaffpage'];
  384. }
  385.  
  386. /**
  387. * Code hooked to admin_load.
  388. * The code of our configuration panel.
  389. *
  390. */
  391. function staff_page2_admin()
  392. {
  393.     global $db, $lang, $mybb, $page, $run_module, $action_file;
  394.  
  395.     if($run_module == 'config' && $action_file == 'staff_page2')
  396.     {
  397.         $lang->load('staff_page2');
  398.  
  399.         $page->add_breadcrumb_item($lang->staff_page2, 'index.php?module=config-staff_page2');
  400.  
  401.         $sub_tabs['manage_staff_page2'] = array(
  402.             'title'       => $lang->staff_page2,
  403.             'link'        => 'index.php?module=config-staff_page2',
  404.             'description' => $lang->staff_page2_description
  405.         );
  406.  
  407.         $sub_tabs['add_member'] = array(
  408.             'title' => $lang->add_member,
  409.             'link'  => 'index.php?module=config-staff_page2&amp;action=add_member',
  410.             'description' => $lang->add_member_description
  411.         );
  412.  
  413.         $sub_tabs['add_group'] = array(
  414.             'title' => $lang->add_group,
  415.             'link'  => 'index.php?module=config-staff_page2&amp;action=add_group',
  416.             'description'   =>  $lang->add_group_description
  417.         );
  418.  
  419.         // View groups and members
  420.         if(!$mybb->input['action'])
  421.         {
  422.             $page->output_header($lang->staff_page2);
  423.             $page->output_nav_tabs($sub_tabs, 'manage_staff_page2');
  424.  
  425.             $table = new Table;
  426.             $table->construct_header($lang->name);
  427.             $table->construct_header($lang->order);
  428.             $table->construct_header($lang->action, array('class' => "align_center", 'colspan' => 2));
  429.  
  430.             $members = get_staff_members();
  431.             $members = sort_members_by_group_id($members);
  432.             $groups = get_staff_groups();
  433.  
  434.             if(count($groups))
  435.             {
  436.                 foreach($groups as $group)
  437.                 {
  438.                     $table->construct_cell('<div class="largetext"><strong>'.$group['name'].'</strong></div><div class="smalltext">'.$group['description'].'</div>');
  439.                     $table->construct_cell($group['list_order']);
  440.                     $table->construct_cell("<a href=\"index.php?module=config-staff_page2&amp;action=edit_group&amp;uid={$group['id']}\">{$lang->edit}</a>");
  441.                     $table->construct_cell("<a href=\"index.php?module=config-staff_page2&amp;action=delete_group&amp;uid={$group['id']}\">{$lang->delete}</a>");
  442.                     $table->construct_row();
  443.  
  444.                     if(count($members[$group['id']]))
  445.                     {
  446.                         foreach($members[$group['id']] as $member)
  447.                         {
  448.                             $member['formatted_name'] = format_name($member['username'], $member['usergroup'], $member['displaygroup']);
  449.  
  450.                             $table->construct_cell('<div style="padding-left: 40px;" class="largetext">'.$member['formatted_name'].'</div><div class="smalltext" style="padding-left: 50px;">'.$member['description'].'</div>');
  451.                             $table->construct_cell($member['list_order']);
  452.                             $table->construct_cell("<a href=\"index.php?module=config-staff_page2&amp;action=edit_member&amp;uid={$member['id']}\">{$lang->edit}</a>");
  453.                             $table->construct_cell("<a href=\"index.php?module=config-staff_page2&amp;action=delete_member&amp;uid={$member['id']}\">{$lang->delete}</a>");
  454.                             $table->construct_row();
  455.                         }
  456.                     }
  457.                 }
  458.             }
  459.             else
  460.             {
  461.                 $table->construct_cell($lang->no_groups, array('colspan' => 4));
  462.                 $table->construct_row();
  463.             }
  464.  
  465.             $table->output($lang->staff_page2);
  466.  
  467.             $page->output_footer();
  468.             exit();
  469.         }
  470.  
  471.         // Add group
  472.         if($mybb->input['action'] == 'add_group')
  473.         {
  474.             $page->output_header($lang->staff_page2.' - '.$lang->add_group);
  475.             $page->output_nav_tabs($sub_tabs, 'add_group');
  476.  
  477.             if($mybb->request_method == 'post')
  478.             {
  479.                 if(!trim($mybb->input['name']))
  480.                 {
  481.                     $errors[] = $lang->empty_name;
  482.                 }
  483.  
  484.                 if(!$errors)
  485.                 {
  486.                     $insert_array = array(
  487.                         'name'       => $db->escape_string($mybb->input['name']),
  488.                         'description' => $db->escape_string($mybb->input['description']),
  489.                         'list_order'    =>  intval($mybb->input['list_order'])
  490.                     );
  491.  
  492.                     $db->insert_query('staff_page2_groups', $insert_array);
  493.  
  494.                     recache_staff_groups();
  495.  
  496.                     admin_redirect('index.php?module=config-staff_page2');
  497.                 }
  498.             }
  499.  
  500.             if($errors)
  501.             {
  502.                 $page->output_inline_error($errors);
  503.             }
  504.  
  505.             $form = new Form('index.php?module=config-staff_page2&amp;action=add_group', 'post', 'add');
  506.             $form_container = new FormContainer($lang->add_group);
  507.             $form_container->output_row($lang->name, '', $form->generate_text_box('name', $mybb->input['name']));
  508.             $form_container->output_row($lang->order, '', $form->generate_text_box('list_order', $mybb->input['list_order']));
  509.             $form_container->output_row($lang->description, '', $form->generate_text_area('description', $mybb->input['description']));
  510.             $form_container->end();
  511.  
  512.             $buttons[] = $form->generate_submit_button($lang->save);
  513.  
  514.             $form->output_submit_wrapper($buttons);
  515.  
  516.             $form->end();
  517.  
  518.             $page->output_footer();
  519.             exit();
  520.         }
  521.  
  522.         // Add member
  523.         if($mybb->input['action'] == 'add_member')
  524.         {
  525.             $page->output_header($lang->staff_page2.' - '.$lang->add_member);
  526.             $page->output_nav_tabs($sub_tabs, 'add_member');
  527.             $page->add_breadcrumb_item($lang->add_member);
  528.  
  529.             $groups = get_staff_groups();
  530.  
  531.             if(!count($groups))
  532.             {
  533.                 flash_message($lang->add_group_first, 'error');
  534.                 admin_redirect('index.php?module=config-staff_page2');
  535.             }
  536.  
  537.             if($mybb->request_method == 'post')
  538.             {
  539.                 // Check if chosen group exists
  540.                 $i = 0;
  541.  
  542.                 foreach($groups as $group)
  543.                 {
  544.                     if($group['id'] == $mybb->input['group_id'])
  545.                     {
  546.                         $i++;
  547.                         break;
  548.                     }
  549.                 }
  550.  
  551.                 if(!$i)
  552.                 {
  553.                     $errors[] = $lang->wrong_group;
  554.                 }
  555.  
  556.                 // Check if chosen user exists
  557.                 if($mybb->input['name'])
  558.                 {
  559.                     $query = $db->simple_select('users', 'uid', 'username = \''.$db->escape_string($mybb->input['name']).'\'');
  560.                     $user = $db->fetch_array($query);
  561.                 }
  562.                 else
  563.                 {
  564.                     $user = array('uid' => 0);
  565.                 }
  566.  
  567.                 if(!$user['uid'])
  568.                 {
  569.                     $errors[] = $lang->user_not_exist;
  570.                 }
  571.  
  572.                 // Insert member
  573.                 if(!$errors)
  574.                 {
  575.                     $insert_array = array(
  576.                         'user_id'   =>  $user['uid'],
  577.                         'group_id'  =>  intval($mybb->input['group_id']),
  578.                         'list_order'    =>  intval($mybb->input['list_order'])
  579.                     );
  580.  
  581.                     $db->insert_query('staff_page2_members', $insert_array);
  582.  
  583.                     admin_redirect('index.php?module=config-staff_page2');
  584.                 }
  585.             }
  586.  
  587.             if($errors)
  588.             {
  589.                 $page->output_inline_error($errors);
  590.             }
  591.  
  592.             // Prepare groups array to be a select list
  593.             $groups_select = array();
  594.  
  595.             foreach($groups as $group)
  596.             {
  597.                 $groups_select[$group['id']] = $group['name'];
  598.             }
  599.  
  600.             // Generate a form
  601.             $form = new Form('index.php?module=config-staff_page2&amp;action=add_member', 'post', 'add');
  602.             $form_container = new FormContainer($lang->add_member);
  603.             $form_container->output_row($lang->name, '', $form->generate_text_box('name', $mybb->input['name']));
  604.             $form_container->output_row($lang->order, '', $form->generate_text_box('list_order', $mybb->input['list_order']));
  605.             $form_container->output_row($lang->group, '', $form->generate_select_box('group_id', $groups_select, $mybb->input['group_id'], array('id' => 'group_id')));
  606.             $form_container->end();
  607.  
  608.             $buttons[] = $form->generate_submit_button($lang->save);
  609.  
  610.             $form->output_submit_wrapper($buttons);
  611.  
  612.             $form->end();
  613.  
  614.             $page->output_footer();
  615.             exit();
  616.         }
  617.  
  618.         // Delete group
  619.         if($mybb->input['action'] == 'delete_group')
  620.         {
  621.             $query = $db->simple_select('staff_page2_groups', '*', 'id=' . intval($mybb->input['uid']));
  622.             $group = $db->fetch_array($query);
  623.  
  624.             if(!$group['id'])
  625.             {
  626.                 flash_message($lang->group_not_exist, 'error');
  627.                 admin_redirect('index.php?module=config-staff_page2');
  628.             }
  629.  
  630.             if($mybb->input['no'])
  631.             {
  632.                 admin_redirect('index.php?module=config-staff_page2');
  633.             }
  634.  
  635.             if($mybb->request_method == 'post')
  636.             {
  637.                 $db->delete_query('staff_page2_groups', 'id = '.$group['id']);
  638.                 $db->delete_query('staff_page2_members', 'group_id = '.$group['id']);
  639.  
  640.                 recache_staff_groups();
  641.  
  642.                 log_admin_action($group['id']);
  643.  
  644.                 flash_message($lang->group_deleted, 'success');
  645.                 admin_redirect('index.php?module=config-staff_page2');
  646.             }
  647.             else
  648.             {
  649.                 $page->output_confirm_action("index.php?module=config-staff_page2&amp;action=delete_group&amp;uid={$group['id']}", $lang->sprintf($lang->do_you_want_to_delete_group, $group['name']));
  650.             }
  651.         }
  652.  
  653.         // Delete member
  654.         if($mybb->input['action'] == 'delete_member')
  655.         {
  656.             $query = $db->simple_select('staff_page2_members', '*', 'id=' . intval($mybb->input['uid']));
  657.             $member = $db->fetch_array($query);
  658.             $user = get_user($member['user_id']);
  659.  
  660.             if(!$member['id'])
  661.             {
  662.                 flash_message($lang->user_not_exist, 'error');
  663.                 admin_redirect('index.php?module=config-staff_page2');
  664.             }
  665.  
  666.             if($mybb->input['no'])
  667.             {
  668.                 admin_redirect('index.php?module=config-staff_page2');
  669.             }
  670.  
  671.             if($mybb->request_method == 'post')
  672.             {
  673.                 $db->delete_query('staff_page2_members', 'id = '.$member['id']);
  674.  
  675.                 recache_staff_groups();
  676.  
  677.                 log_admin_action($member['id']);
  678.  
  679.                 flash_message($lang->member_deleted, 'success');
  680.                 admin_redirect('index.php?module=config-staff_page2');
  681.             }
  682.             else
  683.             {
  684.                 $page->output_confirm_action("index.php?module=config-staff_page2&amp;action=delete_member&amp;uid={$member['id']}", $lang->sprintf($lang->do_you_want_to_delete_member, $user['username']));
  685.             }
  686.         }
  687.  
  688.         // Edit member
  689.         if($mybb->input['action'] == 'edit_member')
  690.         {
  691.             $query = $db->simple_select('staff_page2_members', '*', 'id=' . intval($mybb->input['uid']));
  692.             $member = $db->fetch_array($query);
  693.             $user = get_user($member['user_id']);
  694.  
  695.             if(!$member['id'])
  696.             {
  697.                 flash_message($lang->user_not_exist, 'error');
  698.                 admin_redirect('index.php?module=config-staff_page2');
  699.             }
  700.  
  701.             $groups = get_staff_groups();
  702.  
  703.             if($mybb->request_method == 'post')
  704.             {
  705.                 // Check if chosen group exists
  706.                 $i = 0;
  707.  
  708.                 foreach($groups as $group)
  709.                 {
  710.                     if($group['id'] == $mybb->input['group_id'])
  711.                     {
  712.                         $i++;
  713.                         break;
  714.                     }
  715.                 }
  716.  
  717.                 if(!$i)
  718.                 {
  719.                     $errors[] = $lang->wrong_group;
  720.                 }
  721.  
  722.  
  723.                 if(!$errors)
  724.                 {
  725.                     $update_array = array(
  726.                         'description'   =>  $db->escape_string($mybb->input['description']),
  727.                         'group_id'  =>  intval($mybb->input['group_id']),
  728.                         'list_order'    =>  intval($mybb->input['list_order'])
  729.                     );
  730.  
  731.                     $db->update_query('staff_page2_members', $update_array, 'id=' . $member['id']);
  732.  
  733.                     recache_staff_groups();
  734.  
  735.                     log_admin_action($member['id']);
  736.  
  737.                     flash_message($lang->member_saved, 'success');
  738.                     admin_redirect('index.php?module=config-staff_page2');
  739.                 }
  740.             }
  741.  
  742.             $page->add_breadcrumb_item($lang->edit_member);
  743.             $page->output_header($lang->staff_page2.' - '.$lang->edit_member);
  744.  
  745.  
  746.             if($errors)
  747.             {
  748.                 $page->output_inline_error($errors);
  749.             }
  750.             else
  751.             {
  752.                 $mybb->input = $member;
  753.             }
  754.  
  755.             // Prepare groups array to be a select list
  756.             $groups_select = array();
  757.  
  758.             foreach($groups as $group)
  759.             {
  760.                 $groups_select[$group['id']] = $group['name'];
  761.             }
  762.  
  763.             // Generate a form
  764.             $form = new Form('index.php?module=config-staff_page2&amp;action=edit_member&amp;uid=' . $member['id'], 'post', 'edit');
  765.             echo $form->generate_hidden_field('uid', $member['id']);
  766.  
  767.             $form_container = new FormContainer($lang->edit_member);
  768.             $form_container->output_row($lang->name, '', $user['username']);
  769.             $form_container->output_row($lang->order, '', $form->generate_text_box('list_order', $mybb->input['list_order']));
  770.             $form_container->output_row($lang->description, '', $form->generate_text_area('description', $mybb->input['description']));
  771.             $form_container->output_row($lang->group, '', $form->generate_select_box('group_id', $groups_select, $mybb->input['group_id'], array('id' => 'group_id')));
  772.             $form_container->end();
  773.  
  774.             $buttons[] = $form->generate_submit_button($lang->save);
  775.             $buttons[] = $form->generate_reset_button($lang->reset);
  776.  
  777.             $form->output_submit_wrapper($buttons);
  778.  
  779.             $form->end();
  780.  
  781.             $page->output_footer();
  782.             exit();
  783.         }
  784.  
  785.         // Edit group
  786.         if($mybb->input['action'] == 'edit_group')
  787.         {
  788.             $query = $db->simple_select('staff_page2_groups', '*', 'id=' . intval($mybb->input['uid']));
  789.             $group = $db->fetch_array($query);
  790.  
  791.             if(!$group['id'])
  792.             {
  793.                 flash_message($lang->group_not_exist, 'error');
  794.                 admin_redirect('index.php?module=config-staff_page2');
  795.             }
  796.  
  797.             if($mybb->request_method == 'post')
  798.             {
  799.                 if(!$mybb->input['name'])
  800.                 {
  801.                     $error[] = $lang->empty_name;
  802.                 }
  803.  
  804.                 if(!$errors)
  805.                 {
  806.                     $update_array = array(
  807.                         'description'   =>  $db->escape_string($mybb->input['description']),
  808.                         'list_order'    =>  intval($mybb->input['list_order']),
  809.                         'name'  =>  $db->escape_string($mybb->input['name'])
  810.                     );
  811.  
  812.                     $db->update_query('staff_page2_groups', $update_array, 'id=' . $group['id']);
  813.  
  814.                     recache_staff_groups();
  815.  
  816.                     log_admin_action($group['id']);
  817.  
  818.                     flash_message($lang->group_saved, 'success');
  819.                     admin_redirect('index.php?module=config-staff_page2');
  820.                 }
  821.             }
  822.  
  823.             $page->add_breadcrumb_item($lang->edit_group);
  824.             $page->output_header($lang->staff_page2.' - '.$lang->edit_group);
  825.  
  826.  
  827.             if($errors)
  828.             {
  829.                 $page->output_inline_error($errors);
  830.             }
  831.             else
  832.             {
  833.                 $mybb->input = $group;
  834.             }
  835.  
  836.             // Generate a form
  837.             $form = new Form('index.php?module=config-staff_page2&amp;action=edit_group&amp;uid=' . $group['id'], 'post', 'edit');
  838.             echo $form->generate_hidden_field('uid', $group['id']);
  839.  
  840.             $form_container = new FormContainer($lang->edit_group);
  841.             $form_container->output_row($lang->name, '', $form->generate_text_box('name', $mybb->input['name']));
  842.             $form_container->output_row($lang->description, '', $form->generate_text_area('description', $mybb->input['description']));
  843.             $form_container->output_row($lang->order, '', $form->generate_text_box('list_order', $mybb->input['list_order']));
  844.             $form_container->end();
  845.  
  846.             $buttons[] = $form->generate_submit_button($lang->save);
  847.             $buttons[] = $form->generate_reset_button($lang->reset);
  848.  
  849.             $form->output_submit_wrapper($buttons);
  850.  
  851.             $form->end();
  852.  
  853.             $page->output_footer();
  854.             exit();
  855.         }
  856.     }
  857. }
  858.  
  859. /**
  860.  * Checks if plugin is installed.
  861.  *
  862.  */
  863. function staff_page2_is_installed()
  864. {
  865.     global $db;
  866.  
  867.     if($db->table_exists('staff_page2_groups'))
  868.     {
  869.         return true;
  870.     }
  871.  
  872.     return false;
  873. }
  874.  
  875. /**
  876.  * That's what happens when the plugin is uninstalled.
  877.  *
  878.  */
  879. function staff_page2_uninstall()
  880. {
  881.     global $db, $cache;
  882.  
  883.     // Remove settings
  884.     $db->delete_query('settings', "name IN ('staff_page2_maxavatarsize', 'staff_page2_showteam_redirect')");
  885.     $db->delete_query('settinggroups', "name = 'staff_page2'");
  886.     rebuild_settings();
  887.  
  888.     // Delete admin permissions
  889.     change_admin_permission('config', 'staff_page2', 0);
  890.  
  891.     // Remove group permissions
  892.     if($db->field_exists('canseestaffpage', 'usergroups'))
  893.     {
  894.         $db->drop_column('usergroups', 'canseestaffpage');
  895.     }
  896.  
  897.     // Update the cache
  898.     $cache->update_usergroups();
  899.  
  900.     // Delete DB schema
  901.     if($db->table_exists('staff_page2_members'))
  902.     {
  903.         $db->drop_table('staff_page2_members');
  904.     }
  905.  
  906.     if($db->table_exists('staff_page2_groups'))
  907.     {
  908.         $db->drop_table('staff_page2_groups');
  909.     }
  910. }
  911.  
  912. /**
  913.  * Installation of the plugin.
  914.  *
  915.  */
  916. function staff_page2_install()
  917. {
  918.     global $db, $lang, $cache;
  919.  
  920.     // Load language file for settings
  921.     $lang->load('staff_page2');
  922.  
  923.     // Add settings
  924.     $setting_group = array(
  925.         'name' => 'staff_page2',
  926.         'title' => $db->escape_string($lang->staff_page2_settings),
  927.         'description' => '',
  928.         'disporder' => 99,
  929.         'isdefault' => 0
  930.     );
  931.  
  932.     $gid = $db->insert_query("settinggroups", $setting_group);
  933.  
  934.     $setting_array = array(
  935.  
  936.         'staff_page2_maxavatarsize' => array(
  937.             'title' => $db->escape_string($lang->avatar_size),
  938.             'description' => $db->escape_string($lang->avatar_size_description),
  939.             'optionscode' => 'text',
  940.             'value' => '100x100',
  941.             'disporder' => 1
  942.         ),
  943.  
  944.         'staff_page2_showteam_redirect' => array(
  945.             'title' => $db->escape_string($lang->enable_showteam_redirection),
  946.             'description' => $db->escape_string($lang->enable_showteam_redirection_description),
  947.             'optionscode' => 'yesno',
  948.             'value' => 1,
  949.             'disporder' => 2
  950.         )
  951.  
  952.     );
  953.  
  954.     foreach($setting_array as $name => $setting)
  955.     {
  956.         $setting['name'] = $name;
  957.         $setting['gid'] = $gid;
  958.  
  959.         $db->insert_query('settings', $setting);
  960.     }
  961.  
  962.     // Rebuild settings
  963.     rebuild_settings();
  964.  
  965.     // Add group permissions
  966.     if(!$db->field_exists('canseestaffpage', 'usergroups'))
  967.     {
  968.         $db->add_column('usergroups', 'canseestaffpage', 'tinyint(1) NOT NULL default \'1\'');
  969.     }
  970.  
  971.     // Update the cache
  972.     $cache->update_usergroups();
  973.  
  974.     // Create DB schema
  975.     $db->query("CREATE TABLE IF NOT EXISTS " . TABLE_PREFIX . "staff_page2_members (
  976.                     `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  977.                     `user_id` int(11) DEFAULT NULL,
  978.                     `group_id` int(11) DEFAULT NULL,
  979.                     `list_order` tinyint(127) NOT NULL DEFAULT '0',
  980.                     `description` text,
  981.                     PRIMARY KEY (`id`)
  982.         ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;");
  983.  
  984.     $db->query("CREATE TABLE IF NOT EXISTS " . TABLE_PREFIX . "staff_page2_groups (
  985.                     `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  986.                     `name` varchar(256) DEFAULT NULL,
  987.                     `list_order` tinyint(127) NOT NULL DEFAULT '0',
  988.                     `description` varchar(256) DEFAULT NULL,
  989.                     PRIMARY KEY (`id`)
  990.         ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;");
  991. }
  992.  
  993. /**
  994.  * Deactivation of plugin.
  995.  *
  996.  */
  997. function staff_page2_deactivate()
  998. {
  999.     global $db;
  1000.  
  1001.     // Delete cache
  1002.     $db->delete_query('datacache', 'title = \'staff_page2_groups\'');
  1003.  
  1004.     // Delete templates
  1005.     $templates = array(
  1006.         'staff_page2',
  1007.         'staff_page2_group_row',
  1008.         'staff_page2_member_row',
  1009.         'staff_page2_no_groups',
  1010.         'staff_page2_no_members',
  1011.         'staff_page2_user_avatar'
  1012.     );
  1013.  
  1014.     $db->delete_query('templates', 'title IN(\'' . implode('\',\'', $templates) . '\')');
  1015.  
  1016. }
  1017.  
  1018. /**
  1019.  * Activation of plugin.
  1020.  *
  1021.  */
  1022. function staff_page2_activate()
  1023. {
  1024.     global $db;
  1025.  
  1026.     // Update schema from 0.3.x to 1.0
  1027.     if($db->field_exists('order', 'staff_page2_groups'))
  1028.     {
  1029.         $db->drop_column('staff_page2_groups', '`order`');
  1030.     }
  1031.  
  1032.     if(!$db->field_exists('list_order', 'staff_page2_groups'))
  1033.     {
  1034.         $db->add_column('staff_page2_groups', 'list_order', 'tinyint(127) NOT NULL default \'0\'');
  1035.     }
  1036.  
  1037.     if(!$db->field_exists('list_order', 'staff_page2_members'))
  1038.     {
  1039.         $db->add_column('staff_page2_members', 'list_order', 'tinyint(127) NOT NULL default \'0\'');
  1040.     }
  1041.  
  1042.     // Recache groups
  1043.     recache_staff_groups();
  1044.  
  1045.     // Install templates
  1046.     $templates_array = array();
  1047.  
  1048.  
  1049.     // staff_page2
  1050.     $template = '<html>
  1051. <head>
  1052. <title>{$mybb->settings[\'bbname\']} - {$lang->staff}</title>
  1053. {$headerinclude}
  1054. </head>
  1055. <body>
  1056. {$header}
  1057.  
  1058.     {$groups_rows}
  1059.  
  1060. {$footer}
  1061. </body>
  1062. </html>';
  1063.  
  1064.     $templates_array[] = array(
  1065.         'title'    => 'staff_page2',
  1066.         'template' => $db->escape_string($template),
  1067.         'sid'      => '-1',
  1068.         'version'  => '',
  1069.         'dateline' => TIME_NOW
  1070.     );
  1071.  
  1072.  
  1073.     // staff_page2_group_row
  1074.     $template = '<table border="0" cellspacing="{$theme[\'borderwidth\']}" cellpadding="{$theme[\'tablespace\']}" class="tborder">
  1075.     <tr>
  1076.         <td class="thead" colspan="2">
  1077.         <strong>{$group[\'name\']}</strong>
  1078.         <br />
  1079.         <div class="smalltext">
  1080.                 {$group[\'description\']}
  1081.         </div>
  1082.         </td>
  1083.     </tr>
  1084.     {$members_rows}
  1085. </table>
  1086. <br />';
  1087.     $templates_array[] = array(
  1088.         'title'    => 'staff_page2_group_row',
  1089.         'template' => $db->escape_string($template),
  1090.         'sid'      => '-1',
  1091.         'version'  => '',
  1092.         'dateline' => TIME_NOW
  1093.     );
  1094.  
  1095.  
  1096.     // staff_page2_member_row
  1097.     $template ='<tr>
  1098. <td class="{$bgcolor}" align="center" width="1%">
  1099.     <a href="{$member[\'profileurl\']}">
  1100.         {$member[\'avatar\']}
  1101.     </a>
  1102. </td>
  1103. <td class="{$bgcolor}">
  1104.     <div class="largetext">{$member[\'profilelink\']}</div>
  1105.     <div class="smalltext">{$description}</div>
  1106.     <div class="postbit_buttons">{$emailcode}{$pmcode}</div>
  1107. </td>
  1108. </tr>';
  1109.  
  1110.     $templates_array[] = array(
  1111.         'title'    => 'staff_page2_member_row',
  1112.         'template' => $db->escape_string($template),
  1113.         'sid'      => '-1',
  1114.         'version'  => '',
  1115.         'dateline' => TIME_NOW
  1116.     );
  1117.  
  1118.  
  1119.     // staff_page2_no_groups
  1120.     $template = '<div class="red_alert">
  1121.     {$lang->no_groups}
  1122. </div>';
  1123.  
  1124.     $templates_array[] = array(
  1125.         'title'    => 'staff_page2_no_groups',
  1126.         'template' => $db->escape_string($template),
  1127.         'sid'      => '-1',
  1128.         'version'  => '',
  1129.         'dateline' => TIME_NOW
  1130.     );
  1131.  
  1132.  
  1133.     // staff_page2_no_members
  1134.     $template = '<tr>
  1135.     <td class="trow1">
  1136.         {$lang->no_members}
  1137.     </td>
  1138. </tr>';
  1139.  
  1140.     $templates_array[] = array(
  1141.         'title'    => 'staff_page2_no_members',
  1142.         'template' => $db->escape_string($template),
  1143.         'sid'      => '-1',
  1144.         'version'  => '',
  1145.         'dateline' => TIME_NOW
  1146.     );
  1147.  
  1148.  
  1149.     // staff_page2_user_avatar
  1150.     $template = '<img src="{$useravatar[\'image\']}" alt="" {$useravatar[\'width_height\']} />';
  1151.  
  1152.     $templates_array[] = array(
  1153.         'title'    => 'staff_page2_user_avatar',
  1154.         'template' => $db->escape_string($template),
  1155.         'sid'      => '-1',
  1156.         'version'  => '',
  1157.         'dateline' => TIME_NOW
  1158.     );
  1159.  
  1160.  
  1161.     foreach ($templates_array as $row)
  1162.     {
  1163.         $db->insert_query('templates', $row);
  1164.     }
  1165. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top