function testRightHasLessGroups() { $a = new Perms_Reflection_PermissionSet(); $a->add('Anonymous', 'view'); $a->add('Registered', 'view'); $b = new Perms_Reflection_PermissionSet(); $b->add('Anonymous', 'view'); $comparator = new Perms_Reflection_PermissionComparator($a, $b); $this->assertFalse($comparator->equal()); }
private function applyOnObject($object, $set) { $current = $object->getDirectPermissions(); $parent = $object->getParentPermissions(); if ($parent) { $comparator = new Perms_Reflection_PermissionComparator($set, $parent); if ($comparator->equal() && $this->isPossible($current, $set)) { $null = new Perms_Reflection_PermissionSet(); $this->realApply($object, $current, $null); return; } } $this->realApply($object, $current, $set); }
/** * @return mixed */ function get_displayed_permissions() { global $objectFactory, $smarty; $currentObject = $objectFactory->get($_REQUEST['objectType'], $_REQUEST['objectId']); $displayedPermissions = $currentObject->getDirectPermissions(); $globPerms = $objectFactory->get('global', null)->getDirectPermissions(); // global perms $comparator = new Perms_Reflection_PermissionComparator($displayedPermissions, new Perms_Reflection_PermissionSet()); $smarty->assign('permissions_displayed', 'direct'); if ($comparator->equal()) { $parent = $currentObject->getParentPermissions(); // inherited perms (could be category ones) $comparator = new Perms_Reflection_PermissionComparator($globPerms, $parent); if ($comparator->equal()) { // parent == globals $smarty->assign('permissions_displayed', 'parent'); } else { // parent not globals, so must be category $smarty->assign('permissions_displayed', 'category'); } $displayedPermissions = $parent; } else { // direct object perms $comparator = new Perms_Reflection_PermissionComparator($globPerms, $displayedPermissions); $permissions_added = array(); $permissions_removed = array(); foreach ($comparator->getAdditions() as $p) { if (!isset($permissions_added[$p[0]])) { $permissions_added[$p[0]] = array(); } $permissions_added[$p[0]][] = str_replace('tiki_p_', '', $p[1]); } foreach ($comparator->getRemovals() as $p) { if (!isset($permissions_removed[$p[0]])) { $permissions_removed[$p[0]] = array(); } $permissions_removed[$p[0]][] = str_replace('tiki_p_', '', $p[1]); } $added = ''; $removed = ''; foreach ($permissions_added as $gp => $pm) { $added .= '<br />'; $added .= '<strong>' . $gp . ':</strong> ' . implode(', ', $pm); } foreach ($permissions_removed as $gp => $pm) { $removed .= '<br />'; $removed .= '<strong>' . $gp . ':</strong> ' . implode(', ', $pm); } $smarty->assign('permissions_added', $added); $smarty->assign('permissions_removed', $removed); TikiLib::lib('header')->add_jq_onready(' var permsAdded = ' . json_encode($permissions_added) . '; var permsRemoved = ' . json_encode($permissions_removed) . '; for (var group in permsAdded) { if (permsAdded.hasOwnProperty(group)) { for (var i = 0; i < permsAdded[group].length; i++) { $("input[name=\'perm[" + group + "][]\'][value=\'tiki_p_" + permsAdded[group][i] + "\']").parent().addClass("added"); } } } for (var group in permsRemoved) { if (permsRemoved.hasOwnProperty(group)) { for (var i = 0; i < permsRemoved[group].length; i++) { $("input[name=\'perm[" + group + "][]\'][value=\'tiki_p_" + permsRemoved[group][i] + "\']").parent().addClass("removed"); } } } '); } return $displayedPermissions; }
function get_displayed_permissions() { global $objectFactory, $smarty; $currentObject = $objectFactory->get($_REQUEST['objectType'], $_REQUEST['objectId']); $displayedPermissions = $currentObject->getDirectPermissions(); $globPerms = $objectFactory->get('global', null)->getDirectPermissions(); // global perms $comparator = new Perms_Reflection_PermissionComparator($displayedPermissions, new Perms_Reflection_PermissionSet); $smarty->assign('permissions_displayed', 'direct'); if ( $comparator->equal() ) { $parent = $currentObject->getParentPermissions(); // inherited perms (could be category ones) $comparator = new Perms_Reflection_PermissionComparator($globPerms, $parent); if ( $comparator->equal() ) { // parent == globals $smarty->assign('permissions_displayed', 'parent'); } else { // parent not globals, so must be category $smarty->assign('permissions_displayed', 'category'); } $displayedPermissions = $parent; } else { // direct object perms $comparator = new Perms_Reflection_PermissionComparator($globPerms, $displayedPermissions); $permissions_added = array(); $permissions_removed = array(); foreach ($comparator->getAdditions() as $p) { if (!isset($permissions_added[$p[0]])) { $permissions_added[$p[0]] = array(); } $permissions_added[$p[0]][] = str_replace('tiki_p_', '', $p[1]); } foreach ($comparator->getRemovals() as $p) { if (!isset($permissions_removed[$p[0]])) { $permissions_removed[$p[0]] = array(); } $permissions_removed[$p[0]][] = str_replace('tiki_p_', '', $p[1]); } $added = ''; $removed = ''; foreach ($permissions_added as $gp => $pm) { $added .= '<br />'; $added .= '<strong>' . $gp . ':</strong> ' . implode(', ', $pm); } foreach ($permissions_removed as $gp => $pm) { $removed .= '<br />'; $removed .= '<strong>' . $gp . ':</strong> ' . implode(', ', $pm); } $smarty->assign('permissions_added', $added); $smarty->assign('permissions_removed', $removed); } return $displayedPermissions; }