public function getUserModules($username = EGS_USERNAME, $cc = null) { // Get the roles for the user $hasrole = DataObjectFactory::Factory('HasRole'); $roles = $hasrole->getRoleID($username); $hp = new HasPermissionCollection(); if (!$cc instanceof ConstraintChain) { $cc = new ConstraintChain(); } // Only interested in top level permissions $cc->add(new Constraint('type', 'in', "('g', 'm')")); if (!empty($roles)) { $cc->add(new Constraint('roleid', 'in', '(' . implode(',', $roles) . ')')); } $sh = new SearchHandler($hp, FALSE); $sh->addConstraintChain($cc); return $hp->load($sh, null, RETURN_ROWS); }
private function deleteHasPermissions($permission_id, &$errors = array()) { $db = DB::Instance(); $db->StartTrans(); $hp = new HasPermissionCollection(DataObjectFactory::Factory('HasPermission'), 'haspermission'); $sh = new SearchHandler($hp, false); $sh->addConstraint(new Constraint('permissionsid', '=', $permission_id)); $hp->delete($sh); $permission = DataObjectFactory::Factory('Permission'); $permission->load($permission_id); if ($permission && $permission->sub_permissions->count() > 0) { foreach ($permission->sub_permissions as $sub_permission) { $this->deleteHasPermissions($sub_permission->id, $errors); } } return $db->CompleteTrans(); }