Changeset 38865 in spip-zone


Ignore:
Timestamp:
Jun 18, 2010, 10:10:38 AM (11 years ago)
Author:
cedric@…
Message:

le terme utilise par cfg est 'casier' et pas conteneur, reprenons donc la meme terminologie :
il faut utiliser _meta_casier pour indiquer le nom du casier dans le formulaire (par defaut c'est toujours le xx de #FORMULAIRE_CONFIGURER_XX)

Par ailleurs, supportons les casiers profonds casier_principal/sous/casier au stockage. La lecture est simplifiee en reposant sur lire_config

Location:
_plugins_/spip-bonux-2
Files:
2 edited

Legend:

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

    r38822 r38865  
    118118 * des
    119119 * _meta_table : nom de la table meta ou stocker (par defaut 'meta')
    120  * _meta_conteneur : nom du conteneur dans lequel serializer (par defaut xx de formulaire_configurer_xx)
    121  * _meta_prefixe : prefixer les meta (alternative au conteneur) dans la table des meta (par defaur rien)
     120 * _meta_casier : nom du casier dans lequel serializer (par defaut xx de formulaire_configurer_xx)
     121 * _meta_prefixe : prefixer les meta (alternative au casier) dans la table des meta (par defaur rien)
    122122 *
    123123 * @param string $form
     
    126126function spip_bonux_definir_configurer_conteneur($form,$valeurs) {
    127127                // stocker en base
    128                 // par defaut, dans un conteneur serialize dans spip_meta (idem CFG)
    129                 $conteneur = substr($form,11);
     128                // par defaut, dans un casier serialize dans spip_meta (idem CFG)
     129                $casier = substr($form,11);
    130130                $table = 'meta';
    131131                $prefixe = '';
    132132
    133133                // si on indique juste une table, il faut vider les autres proprietes
    134                 // car par defaut on utilise ni conteneur ni prefixe dans ce cas
     134                // car par defaut on utilise ni casier ni prefixe dans ce cas
    135135                if (isset($valeurs['_meta_table'])) {
    136136                        $table = $valeurs['_meta_table'];
    137                         $conteneur = (isset($valeurs['_meta_conteneur'])?$valeurs['_meta_conteneur']:'');
     137                        $casier = (isset($valeurs['_meta_casier'])?$valeurs['_meta_casier']:'');
    138138                        $prefixe = (isset($valeurs['_meta_prefixe'])?$valeurs['_meta_prefixe']:'');
    139139                }
    140140                else {
    141                         if(isset($valeurs['_meta_conteneur']))
    142                                 $conteneur = $valeurs['_meta_conteneur'];
     141                        if(isset($valeurs['_meta_casier']))
     142                                $casier = $valeurs['_meta_casier'];
    143143                        if(isset($valeurs['_meta_prefixe']))
    144144                                $prefixe = $valeurs['_meta_prefixe'];
    145145                }
    146146
    147                 return array($table,$conteneur,$prefixe);
     147                return array($table,$casier,$prefixe);
    148148}
    149149
     
    155155 */
    156156function spip_bonux_configurer_stocker($form,$valeurs,$store) {
    157         list($table,$conteneur,$prefixe) = spip_bonux_definir_configurer_conteneur($form,$valeurs);
     157        list($table,$casier,$prefixe) = spip_bonux_definir_configurer_conteneur($form,$valeurs);
    158158        // stocker en base
    159         // par defaut, dans un conteneur serialize dans spip_meta (idem CFG)
    160 
    161         if ($conteneur)
    162                 $store = array($conteneur => serialize($store));
     159        // par defaut, dans un casier serialize dans spip_meta (idem CFG)
     160        if (!isset($GLOBALS[$table]))
     161                lire_metas($table);
     162
     163        // le casier peut etre de la forme casierprincipal/sous/casier
     164        // on ecrit donc au bon endroit sans perdre les autres sous casier freres
     165        if ($casier) {
     166                $c = explode('/',$casier);
     167                $casier_principal = array_shift($c);
     168                $st = isset($GLOBALS[$table][$casier_principal])?$GLOBALS[$table][$casier_principal]:array();
     169                $sc = &$st;
     170                while (count($c) AND $cc=reset($c)) {
     171                        // creer l'entree si elle n'existe pas
     172                        if (!isset($sc[$cc]))
     173                                $sc[$cc] = array();
     174                        $sc = &$sc[$cc];
     175                        array_shift($c);
     176                }
     177                $sc = $store;
     178                $store = array($casier_principal => serialize($st));
     179        }
    163180
    164181        $prefixe = ($prefixe?$prefixe.'_':'');
     
    169186
    170187function spip_bonux_configurer_lire_meta($form,&$valeurs) {
    171         list($table,$conteneur,$prefixe) = spip_bonux_definir_configurer_conteneur($form,$valeurs);
    172 
    173         if (!isset($GLOBALS[$table]))
    174                 lire_metas($table);
    175         $meta = &$GLOBALS[$table];
    176         if ($conteneur) {
    177                 $meta = unserialize($meta[($prefixe?$prefixe.'_':'').$conteneur]);
     188        list($table,$casier,$prefixe) = spip_bonux_definir_configurer_conteneur($form,$valeurs);
     189
     190        $prefixe = ($prefixe?$prefixe.'_':'');
     191        if ($casier) {
     192                $meta = spip_bonux_lire_config("/$table/$prefixe$casier");
    178193                $prefixe = '';
    179194        }
    180 
    181         $prefixe = ($prefixe?$prefixe.'_':'');
     195        else {
     196                $meta = spip_bonux_lire_config("/$table");
     197        }
     198
    182199        foreach($valeurs as $k=>$v){
    183200                if (substr($k,0,1)!=='_')
     
    205222        // lire le stockage sous la forme /table/valeur
    206223        // ou valeur qui est en fait implicitement /meta/valeur
    207         // ou conteneur/valeur qui est en fait implicitement /meta/conteneur/valeur
     224        // ou casier/valeur qui est en fait implicitement /meta/casier/valeur
    208225
    209226        // par defaut, sur la table des meta
     
    224241        if (!count($cfg) AND !$unserialize)
    225242                $r = serialize($r);
    226         while($conteneur = array_shift($cfg)) {
    227                 $r = isset($r[$conteneur])?$r[$conteneur]:null;
     243        while($casier = array_shift($cfg)) {
     244                $r = isset($r[$casier])?$r[$casier]:null;
    228245                // deserializer tant que c'est necessaire
    229246                if ($r  AND is_string($r) AND (count($cfg) OR $unserialize))
  • _plugins_/spip-bonux-2/plugin.xml

    r38772 r38865  
    44  <icon>img_pack/spip-bonux.png</icon>
    55  <licence>(c) 2008-2009 GPL</licence>
    6   <version>2.1.1</version>
     6  <version>2.1.2</version>
    77  <etat>stable</etat>
    88  <description>Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans ! Interface douce, boucles POUR et CONDITION, tableaux, compteur, etc.</description>
     
    3131  <icon>img_pack/spip-bonux.png</icon>
    3232  <licence>(c) 2008-2009 GPL</licence>
    33   <version>2.1.1</version>
     33  <version>2.1.2</version>
    3434  <etat>stable</etat>
    3535  <description>Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans ! Interface douce, boucles POUR et CONDITION, tableaux, compteur, etc.</description>
Note: See TracChangeset for help on using the changeset viewer.