예제 #1
0
 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);
 }
예제 #2
0
 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();
 }