Uploaded image for project: 'eZ Publish / Platform'
  1. eZ Publish / Platform
  2. EZP-17276

eZINI clears Array BlockValues even when AddArrayDefinition is true

    XMLWordPrintable

Details

    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 ) )
      

      Attachments

        Activity

          People

            unknown unknown
            andre1 andre1
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: