Lilu has uploaded a new change for review. https://gerrit.wikimedia.org/r/235411
Change subject: 1072 [BS224] PermissionManager: LockMode & pm-settings.php Backup ...................................................................... 1072 [BS224] PermissionManager: LockMode & pm-settings.php Backup I added extra checks if a new configuration file has to be built. Lockmode now writes a new pm-settings.php, only if any of its needed settings are not set. Additionally, I also added a session flag to short-circuit the whole checking process if the process was running once in the current session AND if the state of Lockmode (active|inactive) didn't changed. Change-Id: I83ecc91d58e1f3efba2451f5945b2ec999f9af2c --- M PermissionManager/PermissionManager.class.php 1 file changed, 31 insertions(+), 7 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/BlueSpiceExtensions refs/changes/11/235411/1 diff --git a/PermissionManager/PermissionManager.class.php b/PermissionManager/PermissionManager.class.php index 45e60fc..6b02ca6 100644 --- a/PermissionManager/PermissionManager.class.php +++ b/PermissionManager/PermissionManager.class.php @@ -170,9 +170,20 @@ } public static function setupLockmodePermissions() { - global $wgAdditionalGroups, $wgGroupPermissions, $wgNamespacePermissionLockdown; - if (!BsConfig::get('MW::PermissionManager::Lockmode')) { - $bSave = false; + global $wgAdditionalGroups, $wgGroupPermissions, $wgNamespacePermissionLockdown, $wgUser; + + // return directly if the settings got already checked in this session and the state of Lockmode didn't change. + $oRequest = $wgUser->getRequest(); + $bLockmodeActive = BsConfig::get('MW::PermissionManager::Lockmode'); + $bLockmodeIsSetup = $oRequest->getSessionData('bsLockmodeIsSetup'); + if($oRequest->getSessionData('bsLockmodeIsSetup') === $bLockmodeActive) { + return true; + } + $oRequest->setSessionData('bsLockmodeIsSetup', $bLockmodeActive); + + $bSave = false; + + if (!$bLockmodeActive) { if (isset($wgGroupPermissions[self::$sPmLockModeGroup]) && !empty($wgGroupPermissions[self::$sPmLockModeGroup]) ) { unset($wgGroupPermissions[self::$sPmLockModeGroup]); $bSave = true; @@ -211,21 +222,34 @@ continue; } + if(!isset($wgGroupPermissions[self::$sPmLockModeGroup])) { + $wgGroupPermissions[self::$sPmLockModeGroup] = array(); + } + $aAvailablePermissions = User::getAllRights(); foreach ($aAvailablePermissions as $permissionName) { - $wgGroupPermissions[self::$sPmLockModeGroup][$permissionName] = true; + if(!isset($wgGroupPermissions[self::$sPmLockModeGroup][$permissionName])) { + $wgGroupPermissions[self::$sPmLockModeGroup][$permissionName] = true; + $bSave = true; + } if (isset($wgNamespacePermissionLockdown[$nsKey][$permissionName])) { - $wgNamespacePermissionLockdown[$nsKey][$permissionName] = array_unique( + if(!in_array(self::$sPmLockModeGroup, $wgNamespacePermissionLockdown[$nsKey][$permissionName])) { + $wgNamespacePermissionLockdown[$nsKey][$permissionName] = array_unique( array_merge($wgNamespacePermissionLockdown[$nsKey][$permissionName], array(self::$sPmLockModeGroup) ) - ); + ); + $bSave = true; + } } else { $wgNamespacePermissionLockdown[$nsKey][$permissionName] = array(self::$sPmLockModeGroup); + $bSave = true; } } } - self::writeGroupSettings($wgGroupPermissions, $wgNamespacePermissionLockdown); + if($bSave) { + self::writeGroupSettings($wgGroupPermissions, $wgNamespacePermissionLockdown); + } return true; } -- To view, visit https://gerrit.wikimedia.org/r/235411 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I83ecc91d58e1f3efba2451f5945b2ec999f9af2c Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/BlueSpiceExtensions Gerrit-Branch: master Gerrit-Owner: Lilu <o0lilu0o1...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits