Changeset 111447 in spip-zone


Ignore:
Timestamp:
Aug 27, 2018, 4:49:16 PM (8 months ago)
Author:
real3t@…
Message:

Backport de la fonction d'importation depuis le fork d'IEconfig

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _squelettes_/soyezcreateurs_net/trunk/plugins/soyezcreateurs/soyezcreateurs_fonctions_ieconfig.php

    r111445 r111447  
    1919/*      - 'fusion_inv' : Fusionner la configuration actuelle avec le fichier d'importation, les paramètres renseignés dans le fichier d'importation sont ignorés s'il sont présent dans la configuration actuelle
    2020*/
    21 function sc_ieconfig_importer_fichier($chemin,$option) {
     21function sc_ieconfig_importer_fichier($chemin,$option = 'ecrase') {
    2222        include_spip('inc/yaml');
    2323                $config = yaml_decode_file($chemin);
     
    3434                // Gestion des plugins utilisant le pipeline ieconfig_metas
    3535                foreach (pipeline('ieconfig_metas', array()) as $prefixe => $data) {
    36 
    37                         //Si on veut une importation avec écrasement
    38                         if ($option === 'ecrase') {
    39                                
     36                        if (in_array($prefixe, $import_metas) && isset($config[$prefixe])) {
     37                                $config_importee .= $prefixe . ' ';
    4038                                if (isset($data['metas_brutes'])) {
    4139                                        foreach (explode(',', $data['metas_brutes']) as $meta) {
     
    4543                                                        foreach ($config[$prefixe] as $m => $v) {
    4644                                                                if (substr($m, 0, strlen($p)) == $p) {
    47                                                                         ecrire_config($m . '/', $v);
     45                                                                        if (($option === 'ecrase') OR ($option === 'fusion')) {
     46                                                                                ecrire_config($m);
     47                                                                        }
     48                                                                        if ($option === 'fusion_inv') {
     49                                                                                if (is_null(lire_config($m . '/'))) {
     50                                                                                        ecrire_config($m . '/', $v);
     51                                                                                }
     52                                                                        }
    4853                                                                }
    4954                                                        }
    5055                                                } elseif (isset($config[$prefixe][$meta])) {
    51                                                         ecrire_config($meta . '/', $config[$prefixe][$meta]);
     56                                                        if (($option === 'ecrase') OR ($option === 'fusion')) {
     57                                                                ecrire_config($meta . '/', $config[$prefixe][$meta]);
     58                                                        }
     59                                                        if ($option === 'fusion_inv') {
     60                                                                if (is_null(lire_config($meta . '/'))) {
     61                                                                        ecrire_config($meta . '/', $config[$prefixe][$meta]);
     62                                                                }
     63                                                        }
    5264                                                }
    5365                                        }
     
    6072                                                        foreach ($config[$prefixe] as $m => $v) {
    6173                                                                if (substr($m, 0, strlen($p)) == $p) {
    62                                                                         ecrire_config($m . '/', serialize($v));
    63                                                                 }
    64                                                         }
    65                                                 } elseif (isset($config[$prefixe][$meta])) {
    66                                                         ecrire_config($meta . '/', serialize($config[$prefixe][$meta]));
    67                                                 }
    68                                         }
    69                                 }
    70                         }
    71                         //Si on veut une importation avec fusion
    72                         if ($option === 'fusion') {
    73                                
    74                                 if (isset($data['metas_brutes'])) {
    75                                         foreach (explode(',', $data['metas_brutes']) as $meta) {
    76                                                 // On teste le cas ou un prefixe est indique (dernier caractere est *)
    77                                                 if (substr($meta, -1) == '*') {
    78                                                         $p = substr($meta, 0, -1);
    79                                                         foreach ($config[$prefixe] as $m => $v) {
    80                                                                 if (substr($m, 0, strlen($p)) == $p) {
    81                                                                         $save = lire_config($m . '/', $v);
    82                                                                         $import = ($v);
    83                                                                         $import = array_merge($save,$import);
    84                                                                         ecrire_config($m . '/', $v);
    85                                                                 }
    86                                                         }
    87                                                 } elseif (isset($config[$prefixe][$meta])) {
    88                                                         $save = lire_config($meta . '/', $config[$prefixe][$meta]);
    89                                                         $import = ($config[$prefixe][$meta]);                                                   
    90                                                         $import = array_merge($save,$import);
    91                                                         ecrire_config($meta . '/', $import);
    92                                                 }
    93                                         }
    94                                 }
    95                                 if (isset($data['metas_serialize'])) {
    96                                         foreach (explode(',', $data['metas_serialize']) as $meta) {
    97                                                 // On teste le cas ou un prefixe est indique (dernier caractere est *)
    98                                                 if (substr($meta, -1) == '*') {
    99                                                         $p = substr($meta, 0, -1);
    100                                                         foreach ($config[$prefixe] as $m => $v) {
    101                                                                 if (substr($m, 0, strlen($p)) == $p) {
    102                                                                         $save = lire_config($m . '/', serialize($v));
    103                                                                         $import = ($v);
    104                                                                         $import = array_merge($save,$import);
    105                                                                         ecrire_config($m . '/', serialize($import));                           
    106                                                                 }
    107                                                         }
    108                                                 } elseif (isset($config[$prefixe][$meta])) {
    109                                                         $save = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
    110                                                         $import = ($config[$prefixe][$meta]);
    111                                                         $import = array_merge($save,$import);
    112                                                         ecrire_config($meta . '/', serialize($import));
    113                                                 }
    114                                         }
    115                                 }
    116                         }
    117                         //Si on veut une importation avec fusion_inv
    118                         if ($option === 'fusion_inv') {
    119 
    120                                 if (isset($data['metas_brutes'])) {
    121                                         foreach (explode(',', $data['metas_brutes']) as $meta) {
    122                                                 // On teste le cas ou un prefixe est indique (dernier caractere est *)
    123                                                 if (substr($meta, -1) == '*') {
    124                                                         $p = substr($meta, 0, -1);
    125                                                         foreach ($config[$prefixe] as $m => $v) {
    126                                                                 if (substr($m, 0, strlen($p)) == $p) {
    127                                                                         $save = lire_config($m . '/', $v);
    128                                                                         $import = ($v);
    129                                                                         $import = array_merge($import,$save);
    130                                                                         ecrire_config($m . '/', $import);
    131                                                                 }
    132                                                         }
    133                                                 } elseif (isset($config[$prefixe][$meta])) {
    134                                                         $save = lire_config($meta . '/', $config[$prefixe][$meta]);
    135                                                         $import = ($config[$prefixe][$meta]);                                                   
    136                                                         $import = array_merge($import,$save);
    137                                                         ecrire_config($meta . '/', $import);
    138                                                 }
    139                                         }
    140                                 }
    141                                 if (isset($data['metas_serialize'])) {
    142                                         foreach (explode(',', $data['metas_serialize']) as $meta) {
    143                                                 // On teste le cas ou un prefixe est indique (dernier caractere est *)
    144                                                 if (substr($meta, -1) == '*') {
    145                                                         $p = substr($meta, 0, -1);
    146                                                         foreach ($config[$prefixe] as $m => $v) {
    147                                                                 if (substr($m, 0, strlen($p)) == $p) {
    148                                                                         $save = lire_config($m . '/', serialize($v));
    149                                                                         $import = ($v);
    150                                                                         $import = array_merge($import,$save);
     74                                                                        $import = array();
     75                                                                        if ($option === 'ecrase') {
     76                                                                                $import = $v;
     77                                                                        }
     78                                                                        if ($option === 'fusion') {
     79                                                                                $import = array_merge(lire_config($m . '/'), $v);
     80                                                                        }
     81                                                                        if ($option === 'fusion_inv') {
     82                                                                                $import_plus = array_diff_key($v, lire_config($meta . '/'));
     83                                                                                $import_base = array_diff_key(lire_config($meta . '/'), $import_plus);
     84                                                                                $import = (array_merge($import_plus, $import_base));
     85                                                                        }
     86                                                                        ksort($import);
    15187                                                                        ecrire_config($m . '/', serialize($import));
    15288                                                                }
    15389                                                        }
    15490                                                } elseif (isset($config[$prefixe][$meta])) {
    155                                                         $save = lire_config($meta . '/', serialize($config[$prefixe][$meta]));
    156                                                         $import = ($config[$prefixe][$meta]);
    157                                                         $import = array_merge($import,$save);
     91                                                        $import = array();
     92                                                        if ($option === 'ecrase') {
     93                                                                $import = $config[$prefixe][$meta];
     94                                                        }
     95                                                        if ($option === 'fusion') {
     96                                                                $import = array_merge(lire_config($meta . '/'), $config[$prefixe][$meta]);
     97                                                        }
     98                                                        if ($option === 'fusion_inv') {
     99                                                                $import_plus = array_diff_key($config[$prefixe][$meta], lire_config($meta . '/'));
     100                                                                $import_base = array_diff_key(lire_config($meta . '/'), $import_plus);
     101                                                                $import = (array_merge($import_plus, $import_base));
     102                                                        }
     103                                                        ksort($import);
    158104                                                        ecrire_config($meta . '/', serialize($import));
    159105                                                }
Note: See TracChangeset for help on using the changeset viewer.