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

Reply via email to