Details
-
Bug
-
Resolution: Obsolete
-
Medium
-
4.2.0, 4.3.0, 4.4.0beta3
-
None
Description
This is causing wrong result in INI listings where arrays are cleared somewhere in the config order, because placement code does not clear array since it is needs to give list of all places a setting has been set regardless of it being cleared later.
Example of presentation before the patch (AvailableSiteAccessList):
default [0] default [1] ezflow_site override [2] eng override [3] fre override [4] nor override [5] ezflow_site_admin override [6] iphone
After patch:
default [0] admin default [1] base override [2] override [3] ezflow_site override [4] eng override [5] fre override [6] nor override [7] ezflow_site_admin override [8] iphone
Patch:
diff --git a/lib/ezutils/classes/ezini.php b/lib/ezutils/classes/ezini.php index 078e39a..d058747 100644 --- a/lib/ezutils/classes/ezini.php +++ b/lib/ezutils/classes/ezini.php @@ -709,8 +705,6 @@ class eZINI } else { - $this->BlockValues[$currentBlock][$varName] = array(); - // In direct access mode we create empty elements at the beginning of an array // in case it is redefined in this ini file. So when we will save it, definition // will be created as well. @@ -718,6 +712,10 @@ class eZINI { $this->BlockValues[$currentBlock][$varName][] = ""; } + else + { + $this->BlockValues[$currentBlock][$varName] = array(); + } } } else if ( preg_match("#^([\w_*@-]+)(\\[([^\\]]*)\\])?=(.*)$#", $line, $valueArray ) )