/** @return Boolean did it add? */ protected function addPermission(BaseUserPermission $permission = null) { // The permission could be from a extension that has now been removed if (!$permission) { return false; } if ($this->hasPermission($permission->getUserPermissionExtensionID(), $permission->getUserPermissionKey())) { return false; } $add = true; if ($permission->requiresUser() && !$this->has_user) { $add = false; } else { if ($permission->requiresVerifiedUser() && !$this->has_user_verified) { $add = false; } else { if ($permission->requiresEditorUser() && (!$this->has_user_editor || $this->removeEditorPermissions)) { $add = false; } } } if ($add) { $this->permissions[] = $permission; return true; } return false; }
public function removePermissionFromGroup(\BaseUserPermission $userPermissionModel, UserGroupModel $userGroupModel, UserAccountModel $currentUser = null) { global $DB; $stat = $DB->prepare("UPDATE permission_in_user_group SET removed_at=:removed_at, removed_by_user_account_id=:removed_by_user_account_id WHERE " . "extension_id=:extension_id AND permission_key = :permission_key AND user_group_id = :user_group_id AND removed_at IS NULL"); $stat->execute(array("extension_id" => $userPermissionModel->getUserPermissionExtensionID(), "permission_key" => $userPermissionModel->getUserPermissionKey(), "user_group_id" => $userGroupModel->getId(), "removed_at" => \TimeSource::getFormattedForDataBase(), "removed_by_user_account_id" => $currentUser ? $currentUser->getId() : null)); }