Changeset 39754 in spip-zone


Ignore:
Timestamp:
Aug 9, 2010, 10:27:56 AM (9 years ago)
Author:
marcimat@…
Message:
  • Ne pas planter sur l'appel à #CONFIG vide qui doit retourner la table meta sérialisée.
  • Ne pas planter sur #CONFIG{documentation/titre} qui ne doit désérialiser que si nécessaire la meta 'documentation', mais ne doit pas s'amuser à tout désérialiser ses enfants ensuite.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-bonux-2/configurer/pipelines.php

    r38865 r39754  
    227227        $table = 'meta';
    228228        $cfg = explode('/',$cfg);
    229         // si le premier argument est vide, c'est une syntaxe /table/
     229        // si le premier argument est vide, c'est une syntaxe /table/ ou un appel vide ''
    230230        if (!reset($cfg)) {
    231231                array_shift($cfg);
    232                 $table = array_shift($cfg);
     232                if (count($cfg)) $table = array_shift($cfg);
    233233                if (!isset($GLOBALS[$table]))
    234234                        lire_metas($table);
     
    238238
    239239        $r = $GLOBALS[$table];
    240         // si on a demande #CONFIG{/meta,'',0} il faut serializer
    241         if (!count($cfg) AND !$unserialize)
    242                 $r = serialize($r);
     240
     241        // si on a demande #CONFIG{/meta,'',0}
     242        if (!count($cfg))
     243                return $unserialize ? $r : serialize($r);
     244       
     245        $deserialize = false; // on ne deserialise qu'une seule fois...
    243246        while($casier = array_shift($cfg)) {
    244247                $r = isset($r[$casier])?$r[$casier]:null;
    245248                // deserializer tant que c'est necessaire
    246                 if ($r  AND is_string($r) AND (count($cfg) OR $unserialize))
     249                if (!$deserialize AND $r  AND is_string($r) AND (count($cfg) OR $unserialize)) {
     250                        $deserialize = true;
    247251                        $r = unserialize($r);
     252                }
    248253        }
    249254
Note: See TracChangeset for help on using the changeset viewer.