print_cp_no_permission(); } $vbulletin->input->clean_array_gpc('r', array('forumid' => TYPE_INT, 'moderatorid' => TYPE_UINT, 'userid' => TYPE_UINT, 'modusername' => TYPE_STR, 'redir' => TYPE_NOHTML)); // ############################# LOG ACTION ############################### log_admin_action($vbulletin->GPC['moderatorid'] != 0 ? " moderator id = " . $vbulletin->GPC['moderatorid'] : ($vbulletin->GPC['forumid'] != 0 ? "forum id = " . $vbulletin->GPC['forumid'] : ($vbulletin->GPC['userid'] != 0 ? "user id = " . $vbulletin->GPC['userid'] : (!empty($vbulletin->GPC['modusername']) ? "mod username = "******"<strong>error</strong>\n"; print_r(vB_Bitfield_Builder::fetch_errors()); } if ($_REQUEST['do'] == 'editglobal') { $moderator = $db->query_first("\n\t\t\tSELECT user.username, user.userid,\n\t\t\tmoderator.forumid, moderator.permissions, moderator.permissions2, moderator.moderatorid\n\t\t\tFROM " . TABLE_PREFIX . "user AS user\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "moderator AS moderator ON (moderator.userid = user.userid AND moderator.forumid = -1)\n\t\t\tWHERE user.userid = " . $vbulletin->GPC['userid']); print_form_header('moderator', 'update'); construct_hidden_code('forumid', '-1'); construct_hidden_code('modusername', $moderator['username'], false);
print_table_header(construct_phrase($vbphrase['edit_permissions_for_x_in_y'], $usergroup_info['title'], $project['title_clean']), sizeof($issuetype_options) + 1); // fetch the custom perms, row per type this time $customperms = array(); $customperms_data = $db->query_read("\n\t\t\tSELECT *\n\t\t\tFROM " . TABLE_PREFIX . "pt_projectpermission\n\t\t\tWHERE usergroupid = {$usergroup_info['usergroupid']}\n\t\t\t\tAND projectid = {$project['projectid']}\n\t\t"); while ($customperm = $db->fetch_array($customperms_data)) { $perms = $customperm; unset($perms['usergroupid'], $perms['projectid'], $perms['issuetypeid']); $customperms["{$customperm['issuetypeid']}"] = $perms; } } else { // editing global permissions print_table_header(construct_phrase($vbphrase['edit_permissions_for_x'], $usergroup_info['title']), sizeof($issuetype_options) + 1); $customperms = array(); } require_once DIR . '/includes/class_bitfield_builder.php'; vB_Bitfield_Builder::build(false); $builder =& vB_Bitfield_Builder::init(); $perms = array(); $has_custom = array(); if (!$project) { // these are the global-only (settable in one place) permissions for the project tools print_description_row($vbphrase['global_project_tools_permissions'], false, 4, 'thead'); foreach ($builder->data['ugp']['ptpermissions'] as $bitname => $permvalue) { $bit = $permvalue['value']; print_yes_no_row($vbphrase["{$permvalue['phrase']}"], "ugpermissions[{$bit}]", intval($usergroup_info['ptpermissions']) & intval($bit) ? 1 : 0); } print_description_row('<span class="smallfont"><a href="#" onclick="js_open_help(\'projectpermission\', \'edit\', \'about_reports\'); return false;">' . $vbphrase['what_are_reports'] . '</a></span>', false, 2, '', 'right'); print_table_break(); print_table_header(construct_phrase($vbphrase['project_tools_permissions_for_x'], $usergroup_info['title']), sizeof($issuetype_options) + 1); } else { // project specific -- let's check the general permissions for this group
/** * Returns a multi-dimensional array of all defined bitfields, including <nocache> and disabled products * * $vbulletin->bf_ugp_forumpermissions['canview'] would be returned as $array['ugp']['forumpermissions']['canview'] * * @return array */ function return_data() { if (vB_Bitfield_Builder::build(true, true) === false) { return false; } $obj =& vB_Bitfield_Builder::init(); return $obj->data; }
/** * Builds the cache of project bitfields (for perms) into $vbulletin->pt_bitfields. * Accessed as [groupid][bitname] => value * * @return array Bitfield cache */ function build_project_bitfields() { global $vbulletin; require_once DIR . '/includes/class_bitfield_builder.php'; vB_Bitfield_Builder::build(false); $builder =& vB_Bitfield_Builder::init(); $bits = array(); if ($builder->data['pt_permissions']) { foreach ($builder->data['pt_permissions'] as $groupid => $permission_group) { foreach ($permission_group as $bitname => $permvalue) { $bits["{$groupid}"]["{$bitname}"] = intval(is_array($permvalue) ? $permvalue['value'] : $permvalue); } } } build_datastore('pt_bitfields', serialize($bits), 1); $vbulletin->pt_bitfields = $bits; return $bits; }