public function checkPermissionsHasAnyOf($requiredPermissions, User $user = null) { assert('is_int($requiredPermissions)'); assert('in_array($requiredPermissions, array(Permission::READ, Permission::WRITE, Permission::DELETE, Permission::CHANGE_PERMISSIONS, Permission::CHANGE_OWNER))'); if ($user == null) { $user = Yii::app()->user->userModel; } if (Permission::ALL == $this->resolveEffectivePermissionsForOwnerAndCreatedByUser($user)) { return; } elseif ($this->isDeleting) { //Avoid potential problems with accessing information already removed from munge. //Potentially there could be some gap with doing this, but it improves performance on complex //role/group setups. return; } else { if (SECURITY_OPTIMIZED) { $modelClassName = get_called_class(); $moduleClassName = $modelClassName::getModuleClassName(); if (static::hasReadPermissionsOptimization() && $moduleClassName != null && is_subclass_of($moduleClassName, 'SecurableModule') && AllPermissionsOptimizationUtil::checkPermissionsHasAnyOf($requiredPermissions, $this, $user)) { return; } } parent::checkPermissionsHasAnyOf($requiredPermissions, $user); } }