Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if($mybb->input['action'] == "permissions")
- {
- $plugins->run_hooks("admin_forum_management_permissions");
- if($mybb->request_method == "post")
- {
- $pid = $mybb->get_input('pid', MyBB::INPUT_INT);
- $fid = $mybb->get_input('fid', MyBB::INPUT_INT);
- $gid = $mybb->get_input('gid', MyBB::INPUT_INT);
- $forum = get_forum($fid);
- if((!$fid || !$gid) && $pid)
- {
- $query = $db->simple_select("forumpermissions", "fid, gid", "pid='{$pid}'");
- $result = $db->fetch_array($query);
- $fid = $result['fid'];
- $gid = $result['gid'];
- $forum = get_forum($fid);
- }
- $field_list = array();
- $fields_array = $db->show_fields_from("forumpermissions");
- if(is_array($mybb->input['permissions']))
- {
- // User has set permissions for this group...
- foreach($fields_array as $field)
- {
- if(strpos($field['Field'], 'can') !== false || strpos($field['Field'], 'mod') !== false)
- {
- if(array_key_exists($field['Field'], $mybb->input['permissions']))
- {
- $update_array[$db->escape_string($field['Field'])] = (int)$mybb->input['permissions'][$field['Field']];
- }
- else
- {
- $update_array[$db->escape_string($field['Field'])] = 0;
- }
- }
- }
- }
- else
- {
- // Else, we assume that the group has no permissions...
- foreach($fields_array as $field)
- {
- if(strpos($field['Field'], 'can') !== false || strpos($field['Field'], 'mod') !== false)
- {
- $update_array[$db->escape_string($field['Field'])] = 0;
- }
- }
- }
- if($fid && !$pid)
- {
- $update_array['fid'] = $fid;
- $update_array['gid'] = $mybb->get_input('gid', MyBB::INPUT_INT);
- $db->insert_query("forumpermissions", $update_array);
- }
- $plugins->run_hooks("admin_forum_management_permissions_commit");
- if(!($fid && !$pid))
- {
- $db->update_query("forumpermissions", $update_array, "pid='{$pid}'");
- }
- $cache->update_forumpermissions();
- // Log admin action
- log_admin_action($fid, $forum['name']);
- if($mybb->input['ajax'] == 1)
- {
- 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>");
- die;
- }
- else
- {
- flash_message($lang->success_forum_permissions_saved, 'success');
- admin_redirect("index.php?module=forum-management&fid={$fid}#tab_permissions");
- }
- }
- if($mybb->input['ajax'] != 1)
- {
- $sub_tabs = array();
- if($mybb->input['fid'] && $mybb->input['gid'])
- {
- $sub_tabs['edit_permissions'] = array(
- 'title' => $lang->forum_permissions,
- 'link' => "index.php?module=forum-management&action=permissions&fid=".$mybb->input['fid']."&gid=".$mybb->input['gid'],
- 'description' => $lang->forum_permissions_desc
- );
- $page->add_breadcrumb_item($lang->forum_permissions2, "index.php?module=forum-management&fid=".$mybb->input['fid']."#tab_permissions");
- }
- else
- {
- $query = $db->simple_select("forumpermissions", "fid", "pid='".$mybb->get_input('pid', MyBB::INPUT_INT)."'");
- $mybb->input['fid'] = $db->fetch_field($query, "fid");
- $sub_tabs['edit_permissions'] = array(
- 'title' => $lang->forum_permissions,
- 'link' => "index.php?module=forum-management&action=permissions&pid=".$mybb->get_input('pid', MyBB::INPUT_INT),
- 'description' => $lang->forum_permissions_desc
- );
- $page->add_breadcrumb_item($lang->forum_permissions2, "index.php?module=forum-management&fid=".$mybb->input['fid']."#tab_permissions");
- }
- $page->add_breadcrumb_item($lang->forum_permissions);
- $page->output_header($lang->forum_permissions);
- $page->output_nav_tabs($sub_tabs, 'edit_permissions');
- }
- else
- {
- echo "
- <div class=\"modal\" style=\"width: auto\">
- <script src=\"jscripts/tabs.js\" type=\"text/javascript\"></script>\n
- <script type=\"text/javascript\">
- <!--
- $(document).ready(function() {
- $(\"#modal_form\").on(\"click\", \"#savePermissions\", function(e) {
- e.preventDefault();
- var datastring = $(\"#modal_form\").serialize();
- $.ajax({
- type: \"POST\",
- url: $(\"#modal_form\").attr('action'),
- data: datastring,
- dataType: \"json\",
- success: function(data) {
- $(data).filter(\"script\").each(function(e) {
- eval($(this).text());
- });
- $.modal.close();
- },
- error: function(){
- }
- });
- });
- });
- // -->
- </script>
- <div style=\"overflow-y: auto; max-height: 400px\">";
- }
- if($mybb->input['pid'] || ($mybb->input['gid'] && $mybb->input['fid']))
- {
- if($mybb->input['ajax'] != 1)
- {
- $form = new Form("index.php?module=forum-management&action=permissions", "post");
- }
- else
- {
- $form = new Form("index.php?module=forum-management&action=permissions&ajax=1&pid=".$mybb->get_input('pid', MyBB::INPUT_INT)."&gid=".$mybb->get_input('gid', MyBB::INPUT_INT)."&fid=".$mybb->get_input('gid', MyBB::INPUT_INT), "post", "modal_form");
- }
- echo $form->generate_hidden_field("usecustom", "1");
- if($errors)
- {
- $page->output_inline_error($errors);
- $permission_data = $mybb->input;
- $query = $db->simple_select("usergroups", "*", "gid='{$permission_data['gid']}'");
- $usergroup = $db->fetch_array($query);
- $query = $db->simple_select("forums", "*", "fid='{$permission_data['fid']}'");
- $forum = $db->fetch_array($query);
- }
- else
- {
- $pid = $mybb->get_input('pid', MyBB::INPUT_INT);
- $gid = $mybb->get_input('gid', MyBB::INPUT_INT);
- $fid = $mybb->get_input('fid', MyBB::INPUT_INT);
- if($pid)
- {
- $query = $db->simple_select("forumpermissions", "*", "pid='{$pid}'");
- }
- else
- {
- $query = $db->simple_select("forumpermissions", "*", "fid='{$fid}' AND gid='{$gid}'", array('limit' => 1));
- }
- $permission_data = $db->fetch_array($query);
- if(!$fid)
- {
- $fid = $permission_data['fid'];
- }
- if(!$gid)
- {
- $gid = $permission_data['gid'];
- }
- if(!$pid)
- {
- $pid = $permission_data['pid'];
- }
- $query = $db->simple_select("usergroups", "*", "gid='$gid'");
- $usergroup = $db->fetch_array($query);
- $query = $db->simple_select("forums", "*", "fid='$fid'");
- $forum = $db->fetch_array($query);
- $sperms = $permission_data;
- $sql = build_parent_list($fid);
- $query = $db->simple_select("forumpermissions", "*", "$sql AND gid='$gid'");
- $customperms = $db->fetch_array($query);
- if($permission_data['pid'])
- {
- $permission_data['usecustom'] = 1;
- echo $form->generate_hidden_field("pid", $pid);
- }
- else
- {
- echo $form->generate_hidden_field("fid", $fid);
- echo $form->generate_hidden_field("gid", $gid);
- if(!$customperms['pid'])
- {
- $permission_data = usergroup_permissions($gid);
- }
- else
- {
- $permission_data = forum_permissions($fid, 0, $gid);
- }
- }
- }
- $groups = array(
- 'canviewthreads' => 'viewing',
- 'canview' => 'viewing',
- 'canonlyviewownthreads' => 'viewing',
- 'candlattachments' => 'viewing',
- 'canpostthreads' => 'posting_rating',
- 'canpostreplys' => 'posting_rating',
- 'canonlyreplyownthreads' => 'posting_rating',
- 'canpostattachments' => 'posting_rating',
- 'canratethreads' => 'posting_rating',
- 'caneditposts' => 'editing',
- 'candeleteposts' => 'editing',
- 'candeletethreads' => 'editing',
- 'caneditattachments' => 'editing',
- 'canviewdeletionnotice' => 'editing',
- 'modposts' => 'moderate',
- 'modthreads' => 'moderate',
- 'modattachments' => 'moderate',
- 'mod_edit_posts' => 'moderate',
- 'canpostpolls' => 'polls',
- 'canvotepolls' => 'polls',
- 'cansearch' => 'misc',
- );
- $groups = $plugins->run_hooks("admin_forum_management_permission_groups", $groups);
- $tabs = array();
- foreach(array_unique(array_values($groups)) as $group)
- {
- $lang_group = "group_".$group;
- $tabs[$group] = $lang->$lang_group;
- }
- if($mybb->input['ajax'] == 1)
- {
- $page->output_tab_control($tabs, false, "tabs2");
- }
- else
- {
- $page->output_tab_control($tabs);
- }
- $field_list = array();
- $fields_array = $db->show_fields_from("forumpermissions");
- foreach($fields_array as $field)
- {
- if(strpos($field['Field'], 'can') !== false || strpos($field['Field'], 'mod') !== false)
- {
- if(array_key_exists($field['Field'], $groups))
- {
- $field_list[$groups[$field['Field']]][] = $field['Field'];
- }
- else
- {
- $field_list['misc'][] = $field['Field'];
- }
- }
- }
- foreach(array_unique(array_values($groups)) as $group)
- {
- $lang_group = "group_".$group;
- echo "<div id=\"tab_".$group."\">\n";
- $form_container = new FormContainer("\"".htmlspecialchars_uni($usergroup['title'])."\" {$lang->custom_permissions_for} \"".htmlspecialchars_uni($forum['name'])."\"");
- $fields = array();
- foreach($field_list[$group] as $field)
- {
- $lang_field = $group."_field_".$field;
- $fields[] = $form->generate_check_box("permissions[{$field}]", 1, $lang->$lang_field, array('checked' => $permission_data[$field], 'id' => $field));
- }
- $form_container->output_row("", "", "<div class=\"forum_settings_bit\">".implode("</div><div class=\"forum_settings_bit\">", $fields)."</div>");
- $form_container->end();
- echo "</div>";
- }
- if($mybb->input['ajax'] == 1)
- {
- $buttons[] = $form->generate_submit_button($lang->cancel, array('onclick' => '$.modal.close(); return false;'));
- $buttons[] = $form->generate_submit_button($lang->save_permissions, array('id' => 'savePermissions'));
- $form->output_submit_wrapper($buttons);
- $form->end();
- echo "</div>";
- echo "</div>";
- }
- else
- {
- $buttons[] = $form->generate_submit_button($lang->save_permissions);
- $form->output_submit_wrapper($buttons);
- $form->end();
- }
- }
- if($mybb->input['ajax'] != 1)
- {
- $page->output_footer();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement