Changeset 111255 in spip-zone for _plugins_/ieconfig


Ignore:
Timestamp:
Aug 3, 2018, 7:32:27 AM (15 months ago)
Author:
riedel.nobuyuki@…
Message:

Introduction de nouvelles options d'importation pour les plugins gérer avec ieconfig_meta :

  • écrasement qui est l'option existante avant
  • fusion : qui permet de conserver les éléments non présent dans le fichier yaml
  • fusion inverse : qui importera que les éléments non présent dans la configuration
Location:
_plugins_/ieconfig/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/ieconfig/trunk/formulaires/ieconfig_import.php

    r99020 r111255  
    8181                                                $icone = find_in_path($data['icone']);
    8282                                        }
    83                                         if ($icone) {
    84                                                 $icone = '<img src="' . $icone . '" alt="" style="margin-left:-50px; margin-right:34px;" />';
    85                                         }
    8683                                } else {
    87                                         $icone = '';
    88                                 }
    89                                 $ieconfig_metas[$prefixe] = $icone . (isset($data['titre']) ? $data['titre'] : $prefixe);
    90                         }
    91                 }
    92                 if (count($ieconfig_metas) > 0) {
    93                         $saisies[] = array(
     84                                        $icone = 'config-export-16.png';
     85                                }
     86                                $ieconfig_metas[$prefixe] = $prefixe;
     87                                $saisies[] = array(
    9488                                'saisie' => 'fieldset',
    9589                                'options' => array(
    9690                                        'nom' => 'metas_fieldset',
    97                                         'label' => _T('ieconfig:label_importer_metas'),
    98                                         'icone' => 'config-export-16.png',
    99                                 ),
    100                                 'saisies' => array(
     91                                        'label' => $prefixe,
     92                                        'icone' => $icone,
     93                                        ),
     94                                'saisies' => array (
    10195                                        array(
    102                                                 'saisie' => 'checkbox',
     96                                                'saisie' => 'radio',
    10397                                                'options' => array(
    104                                                         'nom' => 'import_metas',
    105                                                         'label' => _T('ieconfig:label_importer'),
    106                                                         'tout_selectionner' => 'oui',
    107                                                         'datas' => $ieconfig_metas,
    108                                                 ),
    109                                         ),
    110                                 ),
    111                         );
    112                 }
    113 
     98                                                        'nom' => $prefixe,
     99                                                        'label' => '<:ieconfig:ieconfig_import:>',
     100                                                        'datas' => array(
     101                                                                'rien' => '<:ieconfig:ieconfig_import_rien:>',
     102                                                                'fusion' => '<:ieconfig:ieconfig_import_fusionner:>',
     103                                                                'ecrase' => '<:ieconfig:ieconfig_import_ecraser:>',
     104                                                                'fusion_inv' => '<:ieconfig:ieconfig_import_fusionner_inv:>',                                           
     105                                                                ),
     106                                                        'defaut' => 'fusion',
     107                                                        )
     108                                                )
     109                                        )
     110                                );
     111                        }
     112                }
     113               
    114114                // On passe via le pipeline ieconfig
    115115                $saisies = pipeline('ieconfig', array(
     
    121121                ));
    122122        }
    123 
    124123        return $saisies;
    125124}
     
    188187
    189188                // Gestion des plugins utilisant le pipeline ieconfig_metas
    190                 $import_metas = _request('import_metas');
    191                 if (!is_array($import_metas)) {
    192                         $import_metas = array();
    193                 }
    194 
    195                 foreach (pipeline('ieconfig_metas', array()) as $prefixe => $data) {
    196                         if (in_array($prefixe, $import_metas) && isset($config[$prefixe])) {
     189                foreach (pipeline('ieconfig_metas', array()) as $prefixe => $data) {                   
     190                        $option = _request($prefixe);
     191                        //Si on veut une importation avec écrasement
     192                        if ($option === 'ecrase') {
     193                               
    197194                                if (isset($data['metas_brutes'])) {
    198195                                        foreach (explode(',', $data['metas_brutes']) as $meta) {
     
    221218                                                        }
    222219                                                } elseif (isset($config[$prefixe][$meta])) {
     220                                                        $sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     221                                                        $config[$prefixe][$meta] = array_merge($sc,$config[$prefixe][$meta]);
     222                                                        ecrire_config($meta . '/', serialize($config[$prefixe][$meta]));
     223                                                }
     224                                        }
     225                                }
     226                        }
     227                        //Si on veut une importation avec fusion
     228                        if ($option === 'fusion') {
     229                               
     230                                if (isset($data['metas_brutes'])) {
     231                                        foreach (explode(',', $data['metas_brutes']) as $meta) {
     232                                                // On teste le cas ou un prefixe est indique (dernier caractere est *)
     233                                                if (substr($meta, -1) == '*') {
     234                                                        $p = substr($meta, 0, -1);
     235                                                        foreach ($config[$prefixe] as $m => $v) {
     236                                                                if (substr($m, 0, strlen($p)) == $p) {
     237                                                                        $sc = lire_config($sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     238                                                                        $config[$prefixe][$meta] = array_merge($sc,$config[$prefixe][$meta]);
     239                                                                        ecrire_config($sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     240                                                                }
     241                                                        }
     242                                                } elseif (isset($config[$prefixe][$meta])) {
     243                                                        $sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     244                                                        $config[$prefixe][$meta] = array_merge($sc,$config[$prefixe][$meta]);
     245                                                        ecrire_config($meta . '/', $config[$prefixe][$meta]);
     246                                                }
     247                                        }
     248                                }
     249                                if (isset($data['metas_serialize'])) {
     250                                        foreach (explode(',', $data['metas_serialize']) as $meta) {
     251                                                // On teste le cas ou un prefixe est indique (dernier caractere est *)
     252                                                if (substr($meta, -1) == '*') {
     253                                                        $p = substr($meta, 0, -1);
     254                                                        foreach ($config[$prefixe] as $m => $v) {
     255                                                                if (substr($m, 0, strlen($p)) == $p) {
     256                                                                        $sc = lire_config($sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     257                                                                        $config[$prefixe][$meta] = array_merge($sc,$config[$prefixe][$meta]);
     258                                                                        ecrire_config($m . '/', serialize($v));
     259                                                                }
     260                                                        }
     261                                                } elseif (isset($config[$prefixe][$meta])) {
     262                                                        $sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     263                                                        $config[$prefixe][$meta] = array_merge($sc,$config[$prefixe][$meta]);
     264                                                        ecrire_config($meta . '/', serialize($config[$prefixe][$meta]));
     265                                                }
     266                                        }
     267                                }
     268                        }
     269                        //Si on veut une importation avec fusion_inv
     270                        if ($option === 'fusion_inv') {
     271                                if (isset($data['metas_brutes'])) {
     272                                        foreach (explode(',', $data['metas_brutes']) as $meta) {
     273                                                // On teste le cas ou un prefixe est indique (dernier caractere est *)
     274                                                if (substr($meta, -1) == '*') {
     275                                                        $p = substr($meta, 0, -1);
     276                                                        foreach ($config[$prefixe] as $m => $v) {
     277                                                                if (substr($m, 0, strlen($p)) == $p) {
     278                                                                        $sc = lire_config($sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     279                                                                        $config[$prefixe][$meta] = array_merge($config[$prefixe][$meta],$sc);
     280                                                                        ecrire_config($m . '/', $v);
     281                                                                }
     282                                                        }
     283                                                } elseif (isset($config[$prefixe][$meta])) {
     284                                                        $sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     285                                                        $config[$prefixe][$meta] = array_merge($config[$prefixe][$meta],$sc);
     286                                                        ecrire_config($meta . '/', $config[$prefixe][$meta]);
     287                                                }
     288                                        }
     289                                }
     290                                if (isset($data['metas_serialize'])) {
     291                                        foreach (explode(',', $data['metas_serialize']) as $meta) {
     292                                                // On teste le cas ou un prefixe est indique (dernier caractere est *)
     293                                                if (substr($meta, -1) == '*') {
     294                                                        $p = substr($meta, 0, -1);
     295                                                        foreach ($config[$prefixe] as $m => $v) {
     296                                                                if (substr($m, 0, strlen($p)) == $p) {
     297                                                                        $sc = lire_config($sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     298                                                                        $config[$prefixe][$meta] = array_merge($config[$prefixe][$meta],$sc);
     299                                                                        ecrire_config($m . '/', serialize($v));
     300                                                                }
     301                                                        }
     302                                                } elseif (isset($config[$prefixe][$meta])) {
     303                                                        $sc = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
     304                                                        $config[$prefixe][$meta] = array_merge($config[$prefixe][$meta],$sc);
    223305                                                        ecrire_config($meta . '/', serialize($config[$prefixe][$meta]));
    224306                                                }
  • _plugins_/ieconfig/trunk/lang/ieconfig_fr.php

    r97352 r111255  
    1515        'item_sauvegarder' => 'Sauvegarder le fichier',
    1616        'item_telecharger' => 'Télécharger le fichier',
     17        'ieconfig_import' => 'Quel type d’importation voulez vous exécuter ?',
     18        'ieconfig_import_explication' => 'Quel option voulez vous utiliser pour importer : ',
     19        'ieconfig_import_ecraser' => 'Importer avec écrasement de la configuration existante',
     20        'ieconfig_import_fusionner' => 'Importer avec fusion des configurations (import > existant)',
     21        'ieconfig_import_fusionner_inv' => 'Importer en n’écrivant que si le paramètre est manquant (existant > import)',
     22        'ieconfig_import_rien' => 'Ne pas importer',
    1723
    1824        // L
     
    3440        'message_ok_export' => 'Le fichier <i>@filename@</i> a été sauvegardé dans le répertoire <i>tmp/ieconfig/</i>.',
    3541        'message_ok_import' => 'La configuration a été correctement importée.',
    36 
     42        //O
     43        'options_import'=>'Options d’importation de ieconfig',
    3744        // T
    3845        'texte_configuration_identique' => 'La configuration contenue dans ce fichier est identique à votre configuration actuelle.',
Note: See TracChangeset for help on using the changeset viewer.