Advertisement
KenzoMe92

new

Feb 7th, 2017
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.81 KB | None | 0 0
  1. if($mybb->input['action'] == "permissions")
  2. {
  3.     $plugins->run_hooks("admin_forum_management_permissions");
  4.  
  5.     if($mybb->request_method == "post")
  6.     {
  7.         $pid = $mybb->get_input('pid', MyBB::INPUT_INT);
  8.         $fid = $mybb->get_input('fid', MyBB::INPUT_INT);
  9.         $gid = $mybb->get_input('gid', MyBB::INPUT_INT);
  10.         $forum = get_forum($fid);
  11.  
  12.         if((!$fid || !$gid) && $pid)
  13.         {
  14.             $query = $db->simple_select("forumpermissions", "fid, gid", "pid='{$pid}'");
  15.             $result = $db->fetch_array($query);
  16.             $fid = $result['fid'];
  17.             $gid = $result['gid'];
  18.             $forum = get_forum($fid);
  19.         }
  20.  
  21.         $field_list = array();
  22.         $fields_array = $db->show_fields_from("forumpermissions");
  23.         if(is_array($mybb->input['permissions']))
  24.         {
  25.             // User has set permissions for this group...
  26.             foreach($fields_array as $field)
  27.             {
  28.                 if(strpos($field['Field'], 'can') !== false || strpos($field['Field'], 'mod') !== false)
  29.                 {
  30.                     if(array_key_exists($field['Field'], $mybb->input['permissions']))
  31.                     {
  32.                         $update_array[$db->escape_string($field['Field'])] = (int)$mybb->input['permissions'][$field['Field']];
  33.                     }
  34.                     else
  35.                     {
  36.                         $update_array[$db->escape_string($field['Field'])] = 0;
  37.                     }
  38.                 }
  39.             }
  40.         }
  41.         else
  42.         {
  43.             // Else, we assume that the group has no permissions...
  44.             foreach($fields_array as $field)
  45.             {
  46.                 if(strpos($field['Field'], 'can') !== false || strpos($field['Field'], 'mod') !== false)
  47.                 {
  48.                     $update_array[$db->escape_string($field['Field'])] = 0;
  49.                 }
  50.             }
  51.         }
  52.  
  53.         if($fid && !$pid)
  54.         {
  55.             $update_array['fid'] = $fid;
  56.             $update_array['gid'] = $mybb->get_input('gid', MyBB::INPUT_INT);
  57.             $db->insert_query("forumpermissions", $update_array);
  58.         }
  59.  
  60.         $plugins->run_hooks("admin_forum_management_permissions_commit");
  61.  
  62.         if(!($fid && !$pid))
  63.         {
  64.             $db->update_query("forumpermissions", $update_array, "pid='{$pid}'");
  65.         }
  66.  
  67.         $cache->update_forumpermissions();
  68.  
  69.         // Log admin action
  70.         log_admin_action($fid, $forum['name']);
  71.  
  72.         if($mybb->input['ajax'] == 1)
  73.         {
  74.             echo json_encode("<script type=\"text/javascript\">$('#row_{$gid}').html('".str_replace(array("'", "\t", "\n"), array("\\'", "", ""), retrieve_single_permissions_row($gid, $fid))."'); QuickPermEditor.init({$gid});</script>");
  75.             die;
  76.         }
  77.         else
  78.         {
  79.             flash_message($lang->success_forum_permissions_saved, 'success');
  80.             admin_redirect("index.php?module=forum-management&fid={$fid}#tab_permissions");
  81.         }
  82.     }
  83.  
  84.     if($mybb->input['ajax'] != 1)
  85.     {
  86.         $sub_tabs = array();
  87.  
  88.         if($mybb->input['fid'] && $mybb->input['gid'])
  89.         {
  90.             $sub_tabs['edit_permissions'] = array(
  91.                 'title' => $lang->forum_permissions,
  92.                 'link' => "index.php?module=forum-management&amp;action=permissions&amp;fid=".$mybb->input['fid']."&amp;gid=".$mybb->input['gid'],
  93.                 'description' => $lang->forum_permissions_desc
  94.             );
  95.  
  96.             $page->add_breadcrumb_item($lang->forum_permissions2, "index.php?module=forum-management&amp;fid=".$mybb->input['fid']."#tab_permissions");
  97.         }
  98.         else
  99.         {
  100.             $query = $db->simple_select("forumpermissions", "fid", "pid='".$mybb->get_input('pid', MyBB::INPUT_INT)."'");
  101.             $mybb->input['fid'] = $db->fetch_field($query, "fid");
  102.  
  103.             $sub_tabs['edit_permissions'] = array(
  104.                 'title' => $lang->forum_permissions,
  105.                 'link' => "index.php?module=forum-management&amp;action=permissions&amp;pid=".$mybb->get_input('pid', MyBB::INPUT_INT),
  106.                 'description' => $lang->forum_permissions_desc
  107.             );
  108.  
  109.             $page->add_breadcrumb_item($lang->forum_permissions2, "index.php?module=forum-management&amp;fid=".$mybb->input['fid']."#tab_permissions");
  110.         }
  111.  
  112.         $page->add_breadcrumb_item($lang->forum_permissions);
  113.         $page->output_header($lang->forum_permissions);
  114.         $page->output_nav_tabs($sub_tabs, 'edit_permissions');
  115.     }
  116.     else
  117.     {
  118.         echo "
  119.         <div class=\"modal\" style=\"width: auto\">
  120.         <script src=\"jscripts/tabs.js\" type=\"text/javascript\"></script>\n
  121.         <script type=\"text/javascript\">
  122. <!--
  123. $(document).ready(function() {
  124.     $(\"#modal_form\").on(\"click\", \"#savePermissions\", function(e) {
  125.         e.preventDefault();
  126.        
  127.         var datastring = $(\"#modal_form\").serialize();
  128.         $.ajax({
  129.             type: \"POST\",
  130.             url: $(\"#modal_form\").attr('action'),
  131.             data: datastring,
  132.             dataType: \"json\",
  133.             success: function(data) {
  134.                 $(data).filter(\"script\").each(function(e) {
  135.                     eval($(this).text());
  136.                 });
  137.                 $.modal.close();
  138.             },
  139.             error: function(){
  140.             }
  141.         });
  142.     });
  143. });
  144. // -->
  145.         </script>
  146.         <div style=\"overflow-y: auto; max-height: 400px\">";
  147.     }
  148.  
  149.     if($mybb->input['pid'] || ($mybb->input['gid'] && $mybb->input['fid']))
  150.     {
  151.         if($mybb->input['ajax'] != 1)
  152.         {
  153.             $form = new Form("index.php?module=forum-management&amp;action=permissions", "post");
  154.         }
  155.         else
  156.         {
  157.             $form = new Form("index.php?module=forum-management&amp;action=permissions&amp;ajax=1&amp;pid=".$mybb->get_input('pid', MyBB::INPUT_INT)."&amp;gid=".$mybb->get_input('gid', MyBB::INPUT_INT)."&amp;fid=".$mybb->get_input('gid', MyBB::INPUT_INT), "post", "modal_form");
  158.         }
  159.         echo $form->generate_hidden_field("usecustom", "1");
  160.  
  161.         if($errors)
  162.         {
  163.             $page->output_inline_error($errors);
  164.             $permission_data = $mybb->input;
  165.  
  166.             $query = $db->simple_select("usergroups", "*", "gid='{$permission_data['gid']}'");
  167.             $usergroup = $db->fetch_array($query);
  168.  
  169.             $query = $db->simple_select("forums", "*", "fid='{$permission_data['fid']}'");
  170.             $forum = $db->fetch_array($query);
  171.         }
  172.         else
  173.         {
  174.             $pid = $mybb->get_input('pid', MyBB::INPUT_INT);
  175.             $gid = $mybb->get_input('gid', MyBB::INPUT_INT);
  176.             $fid = $mybb->get_input('fid', MyBB::INPUT_INT);
  177.  
  178.             if($pid)
  179.             {
  180.                 $query = $db->simple_select("forumpermissions", "*", "pid='{$pid}'");
  181.             }
  182.             else
  183.             {
  184.                 $query = $db->simple_select("forumpermissions", "*", "fid='{$fid}' AND gid='{$gid}'", array('limit' => 1));
  185.             }
  186.  
  187.             $permission_data = $db->fetch_array($query);
  188.  
  189.             if(!$fid)
  190.             {
  191.                 $fid = $permission_data['fid'];
  192.             }
  193.  
  194.             if(!$gid)
  195.             {
  196.                 $gid = $permission_data['gid'];
  197.             }
  198.  
  199.             if(!$pid)
  200.             {
  201.                 $pid = $permission_data['pid'];
  202.             }
  203.  
  204.             $query = $db->simple_select("usergroups", "*", "gid='$gid'");
  205.             $usergroup = $db->fetch_array($query);
  206.  
  207.             $query = $db->simple_select("forums", "*", "fid='$fid'");
  208.             $forum = $db->fetch_array($query);
  209.  
  210.             $sperms = $permission_data;
  211.  
  212.             $sql = build_parent_list($fid);
  213.             $query = $db->simple_select("forumpermissions", "*", "$sql AND gid='$gid'");
  214.             $customperms = $db->fetch_array($query);
  215.  
  216.             if($permission_data['pid'])
  217.             {
  218.                 $permission_data['usecustom'] = 1;
  219.                 echo $form->generate_hidden_field("pid", $pid);
  220.             }
  221.             else
  222.             {
  223.                 echo $form->generate_hidden_field("fid", $fid);
  224.                 echo $form->generate_hidden_field("gid", $gid);
  225.                 if(!$customperms['pid'])
  226.                 {
  227.                     $permission_data = usergroup_permissions($gid);
  228.                 }
  229.                 else
  230.                 {
  231.                     $permission_data = forum_permissions($fid, 0, $gid);
  232.                 }
  233.             }
  234.         }
  235.  
  236.         $groups = array(
  237.             'canviewthreads' => 'viewing',
  238.             'canview' => 'viewing',
  239.             'canonlyviewownthreads' => 'viewing',
  240.             'candlattachments' => 'viewing',
  241.  
  242.             'canpostthreads' => 'posting_rating',
  243.             'canpostreplys' => 'posting_rating',
  244.             'canonlyreplyownthreads' => 'posting_rating',
  245.             'canpostattachments' => 'posting_rating',
  246.             'canratethreads' => 'posting_rating',
  247.  
  248.             'caneditposts' => 'editing',
  249.             'candeleteposts' => 'editing',
  250.             'candeletethreads' => 'editing',
  251.             'caneditattachments' => 'editing',
  252.             'canviewdeletionnotice' => 'editing',
  253.  
  254.             'modposts' => 'moderate',
  255.             'modthreads' => 'moderate',
  256.             'modattachments' => 'moderate',
  257.             'mod_edit_posts' => 'moderate',
  258.  
  259.             'canpostpolls' => 'polls',
  260.             'canvotepolls' => 'polls',
  261.             'cansearch' => 'misc',
  262.         );
  263.  
  264.         $groups = $plugins->run_hooks("admin_forum_management_permission_groups", $groups);
  265.  
  266.         $tabs = array();
  267.         foreach(array_unique(array_values($groups)) as $group)
  268.         {
  269.             $lang_group = "group_".$group;
  270.             $tabs[$group] = $lang->$lang_group;
  271.         }
  272.  
  273.         if($mybb->input['ajax'] == 1)
  274.         {
  275.             $page->output_tab_control($tabs, false, "tabs2");
  276.         }
  277.         else
  278.         {
  279.             $page->output_tab_control($tabs);
  280.         }
  281.  
  282.         $field_list = array();
  283.         $fields_array = $db->show_fields_from("forumpermissions");
  284.         foreach($fields_array as $field)
  285.         {
  286.             if(strpos($field['Field'], 'can') !== false || strpos($field['Field'], 'mod') !== false)
  287.             {
  288.                 if(array_key_exists($field['Field'], $groups))
  289.                 {
  290.                     $field_list[$groups[$field['Field']]][] = $field['Field'];
  291.                 }
  292.                 else
  293.                 {
  294.                     $field_list['misc'][] = $field['Field'];
  295.                 }
  296.             }
  297.         }
  298.  
  299.         foreach(array_unique(array_values($groups)) as $group)
  300.         {
  301.             $lang_group = "group_".$group;
  302.             echo "<div id=\"tab_".$group."\">\n";
  303.             $form_container = new FormContainer("\"".htmlspecialchars_uni($usergroup['title'])."\" {$lang->custom_permissions_for} \"".htmlspecialchars_uni($forum['name'])."\"");
  304.             $fields = array();
  305.             foreach($field_list[$group] as $field)
  306.             {
  307.                 $lang_field = $group."_field_".$field;
  308.                 $fields[] = $form->generate_check_box("permissions[{$field}]", 1, $lang->$lang_field, array('checked' => $permission_data[$field], 'id' => $field));
  309.             }
  310.             $form_container->output_row("", "", "<div class=\"forum_settings_bit\">".implode("</div><div class=\"forum_settings_bit\">", $fields)."</div>");
  311.             $form_container->end();
  312.             echo "</div>";
  313.         }
  314.  
  315.         if($mybb->input['ajax'] == 1)
  316.         {
  317.             $buttons[] = $form->generate_submit_button($lang->cancel, array('onclick' => '$.modal.close(); return false;'));
  318.             $buttons[] = $form->generate_submit_button($lang->save_permissions, array('id' => 'savePermissions'));
  319.             $form->output_submit_wrapper($buttons);
  320.             $form->end();
  321.             echo "</div>";
  322.             echo "</div>";
  323.         }
  324.         else
  325.         {
  326.             $buttons[] = $form->generate_submit_button($lang->save_permissions);
  327.             $form->output_submit_wrapper($buttons);
  328.  
  329.             $form->end();
  330.         }
  331.     }
  332.  
  333.     if($mybb->input['ajax'] != 1)
  334.     {
  335.         $page->output_footer();
  336.     }
  337. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement