/** * Get all models that should exist by default for a user. * * @param int $user_id * @return \GO\Base\Db\ActiveRecord */ public static function getAllUserDefaultModels($user_id = 0) { $oldIgnoreAcl = \GO::setIgnoreAclPermissions(true); if (!isset(self::$_allUserDefaultModels)) { self::$_allUserDefaultModels = array(); $modules = \GO::modules()->getAllModules(); while ($module = array_shift($modules)) { $permissionLevel = $user_id ? Acl::getUserPermissionLevel($module->acl_id, $user_id) : 1; if ($permissionLevel) { if ($module->moduleManager) { $classes = $module->moduleManager->findClasses('model'); foreach ($classes as $class) { if ($class->isSubclassOf('GO\\Base\\Model\\AbstractUserDefaultModel')) { self::$_allUserDefaultModels[] = \GO::getModel($class->getName()); } } } } } } \GO::setIgnoreAclPermissions($oldIgnoreAcl); return self::$_allUserDefaultModels; }
/** * Return the permission level that a user has for this ACL. * * @param int $userId If omitted then it will check the currently logged in user and return manage permission if \GO::$ignoreAclPermissions is set. * @param bool $checkGroupPermissionOnly * @return int Permission level. See constants in Acl for values. */ public function getUserLevel($userId) { return Acl::getUserPermissionLevel($this->id, $userId); }