Ignore:
Timestamp:
Aug 27, 2018, 9:10:48 PM (2 years ago)
Author:
real3t@…
Message:

[SoyezCréateurs?] Activation rapide du mode Cognac fonctionnelle !

File:
1 edited

Legend:

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

    r111447 r111452  
    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 = 'ecrase') {
     21function sc_ieconfig_importer_fichier($chemin, $option = 'ecrase') {
    2222        include_spip('inc/yaml');
    23                 $config = yaml_decode_file($chemin);
     23        $config = yaml_decode_file(find_in_path($chemin.'.yaml'));
     24       
     25        // On passe via le pipeline ieconfig
     26        $message_erreur = pipeline('ieconfig', array(
     27                'args' => array(
     28                        'action' => 'import',
     29                        'config' => $config,
     30                ),
     31                'data' => '',
     32        ));
    2433
    25                 // On passe via le pipeline ieconfig
    26                 $message_erreur = pipeline('ieconfig', array(
    27                         'args' => array(
    28                                 'action' => 'import',
    29                                 'config' => $config,
    30                         ),
    31                         'data' => '',
    32                 ));
    33 
    34                 // Gestion des plugins utilisant le pipeline ieconfig_metas
    35                 foreach (pipeline('ieconfig_metas', array()) as $prefixe => $data) {
    36                         if (in_array($prefixe, $import_metas) && isset($config[$prefixe])) {
    37                                 $config_importee .= $prefixe . ' ';
    38                                 if (isset($data['metas_brutes'])) {
    39                                         foreach (explode(',', $data['metas_brutes']) as $meta) {
    40                                                 // On teste le cas ou un prefixe est indique (dernier caractere est *)
    41                                                 if (substr($meta, -1) == '*') {
    42                                                         $p = substr($meta, 0, -1);
    43                                                         foreach ($config[$prefixe] as $m => $v) {
    44                                                                 if (substr($m, 0, strlen($p)) == $p) {
    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                                                                         }
    53                                                                 }
    54                                                         }
    55                                                 } elseif (isset($config[$prefixe][$meta])) {
     34        // Gestion des plugins utilisant le pipeline ieconfig_metas
     35        foreach (pipeline('ieconfig_metas', array()) as $prefixe => $data) {
     36                if (isset($data['metas_brutes'])) {
     37                        foreach (explode(',', $data['metas_brutes']) as $meta) {
     38                                // On teste le cas ou un prefixe est indique (dernier caractere est *)
     39                                if (substr($meta, -1) == '*') {
     40                                        $p = substr($meta, 0, -1);
     41                                        foreach ($config[$prefixe] as $m => $v) {
     42                                                if (substr($m, 0, strlen($p)) == $p) {
    5643                                                        if (($option === 'ecrase') OR ($option === 'fusion')) {
    57                                                                 ecrire_config($meta . '/', $config[$prefixe][$meta]);
     44                                                                ecrire_config($m);
    5845                                                        }
    5946                                                        if ($option === 'fusion_inv') {
    60                                                                 if (is_null(lire_config($meta . '/'))) {
    61                                                                         ecrire_config($meta . '/', $config[$prefixe][$meta]);
     47                                                                if (is_null(lire_config($m . '/'))) {
     48                                                                        ecrire_config($m . '/', $v);
    6249                                                                }
    6350                                                        }
    6451                                                }
    6552                                        }
    66                                 }
    67                                 if (isset($data['metas_serialize'])) {
    68                                         foreach (explode(',', $data['metas_serialize']) as $meta) {
    69                                                 // On teste le cas ou un prefixe est indique (dernier caractere est *)
    70                                                 if (substr($meta, -1) == '*') {
    71                                                         $p = substr($meta, 0, -1);
    72                                                         foreach ($config[$prefixe] as $m => $v) {
    73                                                                 if (substr($m, 0, strlen($p)) == $p) {
    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);
    87                                                                         ecrire_config($m . '/', serialize($import));
    88                                                                 }
    89                                                         }
    90                                                 } elseif (isset($config[$prefixe][$meta])) {
    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);
    104                                                         ecrire_config($meta . '/', serialize($import));
     53                                } elseif (isset($config[$prefixe][$meta])) {
     54                                        if (($option === 'ecrase') OR ($option === 'fusion')) {
     55                                                ecrire_config($meta . '/', $config[$prefixe][$meta]);
     56                                        }
     57                                        if ($option === 'fusion_inv') {
     58                                                if (is_null(lire_config($meta . '/'))) {
     59                                                        ecrire_config($meta . '/', $config[$prefixe][$meta]);
    10560                                                }
    10661                                        }
     
    10863                        }
    10964                }
     65                if (isset($data['metas_serialize'])) {
     66                        foreach (explode(',', $data['metas_serialize']) as $meta) {
     67                                // On teste le cas ou un prefixe est indique (dernier caractere est *)
     68                                if (substr($meta, -1) == '*') {
     69                                        $p = substr($meta, 0, -1);
     70                                        foreach ($config[$prefixe] as $m => $v) {
     71                                                if (substr($m, 0, strlen($p)) == $p) {
     72                                                        $import = array();
     73                                                        if ($option === 'ecrase') {
     74                                                                $import = $v;
     75                                                        }
     76                                                        if ($option === 'fusion') {
     77                                                                $import = array_merge(lire_config($m . '/'), $v);
     78                                                        }
     79                                                        if ($option === 'fusion_inv') {
     80                                                                $import_plus = array_diff_key($v, lire_config($meta . '/'));
     81                                                                $import_base = array_diff_key(lire_config($meta . '/'), $import_plus);
     82                                                                $import = (array_merge($import_plus, $import_base));
     83                                                        }
     84                                                        ksort($import);
     85                                                        ecrire_config($m . '/', serialize($import));
     86                                                }
     87                                        }
     88                                } elseif (isset($config[$prefixe][$meta])) {
     89                                        $import = array();
     90                                        if ($option === 'ecrase') {
     91                                                $import = $config[$prefixe][$meta];
     92                                        }
     93                                        if ($option === 'fusion') {
     94                                                $import = array_merge(lire_config($meta . '/'), $config[$prefixe][$meta]);
     95                                        }
     96                                        if ($option === 'fusion_inv') {
     97                                                $import_plus = array_diff_key($config[$prefixe][$meta], lire_config($meta . '/'));
     98                                                $import_base = array_diff_key(lire_config($meta . '/'), $import_plus);
     99                                                $import = (array_merge($import_plus, $import_base));
     100                                        }
     101                                        ksort($import);
     102                                        ecrire_config($meta . '/', serialize($import));
     103                                }
     104                        }
     105                }
     106        }
    110107
    111                 if ($message_erreur != '') {
    112                         return array('message_erreur' => $message_erreur);
    113                 } else {
    114                         return array('message_ok' => _T('ieconfig:message_ok_import'));
    115                 }
     108        if ($message_erreur != '') {
     109                return array('message_erreur' => $message_erreur);
     110        } else {
     111                return array('message_ok' => _T('ieconfig:message_ok_import'));
     112        }
    116113}
    117114
Note: See TracChangeset for help on using the changeset viewer.