static function checkForSectionalAdmins($id) { global $db; $section = $db->selectObject('section', 'id=' . $id); $branch = navigationmodule::levelTemplate($id, 0); array_unshift($branch, $section); $allusers = array(); $allgroups = array(); while ($section->parent > 0) { $ploc = expCore::makeLocation('navigationmodule', null, $section); $allusers = array_merge($allusers, $db->selectColumn('userpermission', 'uid', "permission='manage' AND module='navigationmodule' AND internal=" . $section->parent)); $allgroups = array_merge($allgroups, $db->selectColumn('grouppermission', 'gid', "permission='manage' AND module='navigationmodule' AND internal=" . $section->parent)); $section = $db->selectObject('section', 'id=' . $section->parent); } foreach ($branch as $section) { $sloc = expCore::makeLocation('navigationmodule', null, $section->id); // remove any manage permissions for this page and it's children // $db->delete('userpermission', "module='navigationmodule' AND internal=".$section->id); // $db->delete('grouppermission', "module='navigationmodule' AND internal=".$section->id); foreach ($allusers as $uid) { $u = user::getUserById($uid); expPermissions::grant($u, 'manage', $sloc); } foreach ($allgroups as $gid) { $g = group::getGroupById($gid); expPermissions::grantGroup($g, 'manage', $sloc); } } }
//$groups = explode(';',$_POST['permdata']); $locarray = array(); // if ($loc->mod == 'navigationmodule' && (isset($_POST['permdata'][1]['manage']) && $_POST['permdata'][1]['manage'] || isset($_POST['permdata'][1]['administrate']) && $_POST['permdata'][1]['administrate'])) { // $sections = navigationmodule::levelTemplate($loc->int); // $locarray[] = $loc; // foreach ($sections as $section) { // $locarray[] = expCore::makeLocation('navigationmodule', null, $section->id); // } // } else { $locarray[] = $loc; // } $groups = group::getAllGroups(); foreach ($locarray as $location) { foreach ($groups as $g) { expPermissions::revokeAllGroup($g, $location); } } foreach ($_POST['permdata'] as $k => $group_str) { $perms = array_keys($group_str); $g = group::getGroupById($k); foreach ($locarray as $location) { for ($i = 0; $i < count($perms); $i++) { expPermissions::grantGroup($g, $perms[$i], $location); } } } expPermissions::triggerRefresh(); expHistory::back(); } else { echo SITE_403_HTML; }