print_table_footer(); } print_form_header('usergroup', 'update'); print_column_style_code(array('width: 70%', 'width: 30%')); $channePermHandler = vB_ChannelPermission::instance(); $channelPerms = $channePermHandler->fetchPermSettings(); $channelPermFields = $channePermHandler->fetchPermFields(); //we don't need to bitmap fields- those we handle differently unset($channelPermFields['moderatorpermissions']); unset($channelPermFields['createpermissions']); unset($channelPermFields['forumpermissions']); unset($channelPermFields['forumpermissions2']); $channelPhrases = $channePermHandler->fetchPermPhrases(); $groupinfo = array(); //$usergroup contains disabled fields that are set in fetchUsergroupByID to -1 so we need the original values $disabled_perms = get_disabled_perms($vbulletin->GPC['usergroupid']); $usergroup_org = vB::getDbAssertor()->getRow('usergroup', array('usergroupid' => $vbulletin->GPC['usergroupid'])); if (!$usergroup_org) { $usergroup_org = array(); } if ($_REQUEST['do'] == 'add') { if (!empty($vbulletin->GPC['defaultgroupid'])) { $usergroup = vB_Api::instanceInternal('usergroup')->fetchUsergroupByID($vbulletin->GPC['defaultgroupid']); $ug_bitfield = array(); foreach ($vbulletin->bf_ugp as $permissiongroup => $fields) { $ug_bitfield["{$permissiongroup}"] = convert_bits_to_array($usergroup["{$permissiongroup}"], $fields); } } else { $ug_bitfield = array('genericoptions' => array('showgroup' => 1, 'showeditedby' => 1, 'isnotbannedgroup' => 1), 'forumpermissions' => array('canview' => 1, 'canviewothers' => 1, 'cangetattachment' => 1, 'cansearch' => 1, 'canthreadrate' => 1, 'canpostattachment' => 1, 'canpostpoll' => 1, 'canvote' => 1, 'canviewthreads' => 1), 'forumpermissions2' => array('cangetimgattachment' => 1), 'wolpermissions' => array('canwhosonline' => 1), 'createpermissions' => array(), 'moderatorpermissions' => array(), 'genericpermissions' => array('canviewmembers' => 1, 'canmodifyprofile' => 1, 'canseeprofilepic' => 1, 'canusesignature' => 1, 'cannegativerep' => 1, 'canuserep' => 1, 'cansearchft_nl' => 1)); // set default numeric permissions $usergroup = array('pmquota' => 0, 'pmsendmax' => 5, 'attachlimit' => 1000000, 'avatarmaxwidth' => 200, 'avatarmaxheight' => 200, 'avatarmaxsize' => 20000, 'profilepicmaxwidth' => 100, 'profilepicmaxheight' => 100, 'profilepicmaxsize' => 25000, 'sigmaxsizebbcode' => 7);
/** * Rebuilds the $vbulletin->usergroupcache */ function build_channel_permissions() { global $vbulletin, $npermscache; $grouppermissions = array(); $npermscache = array(); $vbulletin->usergroupcache = array(); // query usergroups $usergroups = vB::getDbAssertor()->assertQuery('usergroup', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT), 'title'); foreach ($usergroups as $usergroup) { foreach ($usergroup as $key => $val) { if (is_numeric($val)) { $usergroup["{$key}"] += 0; } } $vbulletin->usergroupcache["{$usergroup['usergroupid']}"] = $usergroup; $vbulletin->usergroupcache["{$usergroup['usergroupid']}"] = get_disabled_perms($usergroup['usergroupid']) + $vbulletin->usergroupcache["{$usergroup['usergroupid']}"]; // Legacy Hook 'admin_build_forum_perms_group' Removed // $grouppermissions["{$usergroup['usergroupid']}"] = $usergroup['forumpermissions']; } unset($usergroup); DEVDEBUG('updateChannelCache( ) - Queried Usergroups'); // query forum permissions $permQry = vB::getDbAssertor()->assertQuery('vBForum:permission', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT)); $permissions = array(); foreach ($permQry as $cperm) { $permissions["{$cperm['groupid']}"]["{$cperm['nodeid']}"] = $cperm; $npermscache["{$cperm['nodeid']}"]["{$cperm['groupid']}"] = $cperm; // Legacy Hook 'admin_build_channel_perms_forum' Removed // } $userContext = vB::getUserContext(); if ($userContext) { $userContext->rebuildGroupAccess(); } DEVDEBUG('updateChannelCache( ) - Queried Channel Pemissions'); // call the function that will work out the forum permissions cache_forum_permissions(); // finally replace the existing cache templates $vbulletin->usergroupcache = vB::getDatastore()->buildUserGroupCache($vbulletin->usergroupcache); }