예제 #1
0
 /**
  * Insert a new Forum into Database
  *
  * @param array $data Array with keys according to database layout, which holds the data of the forum
  * @param array $permissions Array with Permission entries (structure: array( 'canview' => array( 'usergroupid' => 1 ) )) (an example)
  * @param array $default_permissions Array which defines, if default permissions shall be used (structure: array( usergroupid => 0 / 1 )
  * 								  	 Can be left empty, then this function will take care of it
  * @return $data with more values, like fid and parentlist
  */
 function createForum($data, $permissions = array(), $default_permissions = array())
 {
     require_once MYBB_ADMIN_DIR . 'inc/functions.php';
     if (!isset($data['name'])) {
         $this->_errorAndDie('A new forum needs to have a name and a type');
     }
     $data['type'] = 'f';
     // Let's leave the parentlist creation to the script and let's not trust the dev :)
     if ($data['parentlist'] != '') {
         $data['parentlist'] = '';
     }
     // If there is no defined Parent ID, parent ID will be set to 0
     if (!isset($data['pid']) || $data['pid'] < 0) {
         $data['pid'] = 0;
     } else {
         $data['pid'] = intval($data['pid']);
     }
     if (!empty($permissions)) {
         if (!isset($permissions['canview']) || empty($permissions['canview']) || (!isset($permissions['canpostthreads']) || empty($permissions['canpostthreads'])) || (!isset($permissions['canpostreplys']) || empty($permissions['canpostreplys'])) || (!isset($permissions['canpostpolls']) || empty($permissions['canpostpolls'])) || (!isset($permissions['canpostattachments']) || empty($permissions['canpostattachments']))) {
             $this->_errorAndDie('The $permissions Parameter does not have the correct format. It requires following keys: <i>canview, canpostthreads, canpostreplys, canpostpolls and canpostattachments</i>');
         }
         /**
          * If no default permissions are given, we will initiate them, default: yes
          * Since there is the possibility of additional usergroups, we will get the usergroups from the permissions array!
          * The structure of the inherit array is: keys = groupid
          * If the value of an inherit array item is 1, this means that the default_permissions shall be used
          */
         if (empty($default_permissions)) {
             foreach ($permissions['canview'] as $gid) {
                 $default_permissions[$gid] = 1;
             }
         }
     }
     $data['fid'] = $this->db->insert_query("forums", $data);
     $data['parentlist'] = make_parent_list($data['fid']);
     $this->db->update_query("forums", array("parentlist" => $data['parentlist']), 'fid=\'' . $data['fid'] . '\'');
     $this->cache->update_forums();
     if (!empty($permissions)) {
         $inherit = $default_permissions;
         /**
          * $permissions['canview'][1] = 1 OR $permissions['canview'][1] = 0
          * --> $permissions[$name][$gid] = yes / no
          */
         $canview = $permissions['canview'];
         $canpostthreads = $permissions['canpostthreads'];
         $canpostpolls = $permissions['canpostpolls'];
         $canpostattachments = $permissions['canpostattachments'];
         $canpostreplies = $permissions['canpostreplys'];
         save_quick_perms($data['fid']);
     }
     return $data;
 }
예제 #2
0
             }
         }
         foreach (array('canview', 'canpostthreads', 'canpostreplys', 'canpostpolls') as $name) {
             if ($permission[$name]) {
                 $permissions[$name][$gid] = 1;
             } else {
                 $permissions[$name][$gid] = 0;
             }
         }
     }
     $canview = $permissions['canview'];
     $canpostthreads = $permissions['canpostthreads'];
     $canpostpolls = $permissions['canpostpolls'];
     $canpostattachments = $permissions['canpostattachments'];
     $canpostreplies = $permissions['canpostreplys'];
     save_quick_perms($fid);
     $plugins->run_hooks("admin_forum_management_start_permissions_commit");
     $cache->update_forums();
     // Log admin action
     log_admin_action('quickpermissions', $fid, $forum['name']);
     flash_message($lang->success_forum_permissions_updated, 'success');
     admin_redirect("index.php?module=forum-management&fid={$fid}#tab_permissions");
 } elseif ($mybb->input['add'] == "moderators") {
     $forum = get_forum($fid);
     if (!$forum) {
         flash_message($lang->error_invalid_forum, 'error');
         admin_redirect("index.php?module=forum-management&fid={$fid}#tab_moderators");
     }
     if (!empty($mybb->input['usergroup'])) {
         $isgroup = 1;
         $gid = $mybb->get_input('usergroup', MyBB::INPUT_INT);
예제 #3
0
 /**
  * Generic creation of a forum.
  * In MyBB a category is a special forum. Categories and forums only differ in the type: c for category and f for forum
  */
 private function createCategoryOrForum($data, $permissions = array(), $default_permissions = array())
 {
     require_once MYBB_ADMIN_DIR . 'inc/functions.php';
     if (!trim($data['name'])) {
         $errors[] = $lang->error_missing_title;
     }
     $pid = (int) $data['pid'];
     $type = $data['type'] == 'c' ? 'c' : 'f';
     if (!$errors) {
         if ($pid < 0) {
             $pid = 0;
         }
         $defaults = array('description' => '', 'linkto' => '', 'disporder' => '', 'active' => 1, 'open' => 1, 'allowhtml' => 0, 'allowmycode' => 1, 'allowsmilies' => 1, 'allowimgcode' => 1, 'allowvideocode' => 1, 'allowpicons' => 1, 'allowtratings' => 1, 'usepostcounts' => 1, 'usethreadcounts' => 1, 'requireprefix' => 0, 'password' => '', 'showinjump' => 1, 'style' => 0, 'overridestyle' => 0, 'rulestype' => 0, 'rulestitle' => '', 'rules' => '', 'defaultdatecut' => 0, 'defaultsortby' => '', 'defaultsortorder' => '');
         $data = array_merge($defaults, $data);
         $insert_array = array("name" => $this->dbEscape($data['name']), "description" => $this->dbEscape($data['description']), "linkto" => $this->dbEscape($data['linkto']), "type" => $this->dbEscape($type), "pid" => $pid, "parentlist" => '', "disporder" => (int) $data['disporder'], "active" => (int) $data['active'], "open" => (int) $data['open'], "allowhtml" => (int) $data['allowhtml'], "allowmycode" => (int) $data['allowmycode'], "allowsmilies" => (int) $data['allowsmilies'], "allowimgcode" => (int) $data['allowimgcode'], "allowvideocode" => (int) $data['allowvideocode'], "allowpicons" => (int) $data['allowpicons'], "allowtratings" => (int) $data['allowtratings'], "usepostcounts" => (int) $data['usepostcounts'], "usethreadcounts" => (int) $data['usethreadcounts'], "requireprefix" => (int) $data['requireprefix'], "password" => $this->dbEscape($data['password']), "showinjump" => (int) $data['showinjump'], "style" => (int) $data['style'], "overridestyle" => (int) $data['overridestyle'], "rulestype" => (int) $data['rulestype'], "rulestitle" => $this->dbEscape($data['rulestitle']), "rules" => $this->dbEscape($data['rules']), "defaultdatecut" => (int) $data['defaultdatecut'], "defaultsortby" => $this->dbEscape($data['defaultsortby']), "defaultsortorder" => $this->dbEscape($data['defaultsortorder']));
         $fid = $this->db->insert_query("forums", $insert_array);
         $parentlist = make_parent_list($fid);
         $this->db->update_query("forums", array("parentlist" => $parentlist), "fid='{$fid}'");
         $insert_array['fid'] = $fid;
         $insert_array['parentlist'] = $parentlist;
         $inherit = $data['default_permissions'];
         foreach ($data as $id => $permission) {
             if (strpos($id, 'fields_') === false) {
                 continue;
             }
             list(, $gid) = explode('fields_', $id);
             foreach (array('canview', 'canpostthreads', 'canpostreplys', 'canpostpolls') as $name) {
                 if (in_array($name, $permission) || $permission[$name]) {
                     $permissions[$name][$gid] = 1;
                 } else {
                     $permissions[$name][$gid] = 0;
                 }
             }
         }
         $canview = $permissions['canview'];
         $canpostthreads = $permissions['canpostthreads'];
         $canpostpolls = $permissions['canpostpolls'];
         $canpostattachments = $permissions['canpostattachments'];
         $canpostreplies = $permissions['canpostreplys'];
         save_quick_perms($fid);
         $this->plugins->run_hooks("admin_forum_management_add_commit");
         $this->cache->update_forums();
         // Log admin action
         log_admin_action($fid, $insert_array['name']);
         return $insert_array;
     }
 }