$smarty->assign('referer', ''); } $_REQUEST['objectId'] = urldecode($_REQUEST['objectId']); $_REQUEST['objectType'] = urldecode($_REQUEST['objectType']); $_REQUEST['permType'] = !empty($_REQUEST['permType']) ? urldecode($_REQUEST['permType']) : 'global'; $smarty->assign('objectName', $_REQUEST['objectName']); $smarty->assign('objectId', $_REQUEST['objectId']); $smarty->assign('objectType', $_REQUEST['objectType']); $smarty->assign_by_ref('permType', $_REQUEST['permType']); if ($_REQUEST['objectType'] == 'wiki') { $_REQUEST['objectType'] = 'wiki page'; } $objectFactory = Perms_Reflection_Factory::getDefaultFactory(); $currentObject = $objectFactory->get($_REQUEST['objectType'], $_REQUEST['objectId']); $permissionApplier = new Perms_Applier(); $permissionApplier->addObject($currentObject); if ($restrictions = perms_get_restrictions()) { $permissionApplier->restrictPermissions($restrictions); } if ($_REQUEST['objectType'] == 'wiki page') { global $structlib; include_once 'lib/structures/structlib.php'; $pageInfoTree = $structlib->s_get_structure_pages($structlib->get_struct_ref_id($_REQUEST['objectId'])); if (count($pageInfoTree) > 1) { $smarty->assign('inStructure', 'y'); } // If assign to structure is requested, add subelements to the applier if (!empty($_REQUEST['assignstructure']) && $_REQUEST['assignstructure'] == 'on' && !empty($pageInfoTree)) { foreach ($pageInfoTree as $subPage) { $sub = $objectFactory->get($_REQUEST['objectType'], $subPage['pageName']); $permissionApplier->addObject($sub);
function testRevertIfWithinBounds() { $current = new Perms_Reflection_PermissionSet(); $current->add('Anonymous', 'view'); $parent = new Perms_Reflection_PermissionSet(); $parent->add('Anonymous', 'view'); $parent->add('Registered', 'edit'); $parent->add('Admins', 'admin'); $newSet = new Perms_Reflection_PermissionSet(); $newSet->add('Anonymous', 'view'); $newSet->add('Registered', 'edit'); $newSet->add('Admins', 'admin'); $target = $this->getMock('Perms_Reflection_Container'); $target->expects($this->once())->method('getDirectPermissions')->will($this->returnValue($current)); $target->expects($this->once())->method('getParentPermissions')->will($this->returnValue($parent)); $target->expects($this->once())->method('remove')->with($this->equalTo('Anonymous'), $this->equalTo('view')); $applier = new Perms_Applier(); $applier->addObject($target); $applier->restrictPermissions(array('view', 'edit', 'admin')); $applier->apply($newSet); }