Changeset 95435 in spip-zone


Ignore:
Timestamp:
Feb 24, 2016, 2:12:20 PM (3 years ago)
Author:
marcimat@…
Message:

Corrections sur le script de migration de champs extras 2 à 3 :

  • lire_config() semble désélialiser par défaut maintenant
  • notices PHP en moins
  • la définition PHP_Incomplete_Class_Name n'est pas de Champs Extras, mais de PHP (lire_config désérialisant avant d'avoir connaissance de l'ancienne classe Champs Extras)
Location:
_plugins_/champs_extras_interface/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/champs_extras_interface/trunk/iextras_administrations.php

    r90295 r95435  
    4848
    4949        // logiquement, c'est bon du premier coup...
    50         if (!$oextras = unserialize($old_extras)) {
    51                 // mais parfois, en cas d'import hasardeux...
    52                
    53                 // tentative avec uniquement des \n
    54                 $o = str_replace(array("\r\n","\r"), "\n", $old_extras);
    55                 if (!$oextras = unserialize($o)) {
    56                        
    57                         // tentative avec des \r\n
    58                         $o = str_replace("\n", "\r\n", $o);
     50        if (is_array($old_extras)) {
     51                $oextras = $old_extras;
     52        } else {
     53                // autrement c'est encore sérializé ?
     54                if (!$oextras = unserialize($old_extras)) {
     55                        // mais parfois, en cas d'import hasardeux...
     56                       
     57                        // tentative avec uniquement des \n
     58                        $o = str_replace(array("\r\n","\r"), "\n", $old_extras);
    5959                        if (!$oextras = unserialize($o)) {
    60                                 // c'est foutu !
    61                                 spip_log("Erreur de mise à jour : deserialisation ratée...", "iextras");
    62                                 echo _L("L'installation n'a pas réussi à restaurer les informations de la version 2.
    63                                                  Il vous faudra réassocier vous-même les champs extras.");
     60                               
     61                                // tentative avec des \r\n
     62                                $o = str_replace("\n", "\r\n", $o);
     63                                if (!$oextras = unserialize($o)) {
     64                                        // c'est foutu !
     65                                        spip_log("Erreur de mise à jour : deserialisation ratée...", "iextras");
     66                                        echo _L("L'installation n'a pas réussi à restaurer les informations de la version 2.
     67                                                         Il vous faudra réassocier vous-même les champs extras.");
     68                                }
    6469                        }
    6570                }
     
    9499                // regroupement par table sql.
    95100                $table = $te['_table_sql'] ? $te['_table_sql'] : table_objet_sql($te['table']);
    96                 if (!is_array($extras[$table]))
     101                if (!isset($extras[$table]) OR !is_array($extras[$table])) {
    97102                        $extras[$table] = array();
     103                }
    98104
    99105                $extras[$table][ $te['champ'] ] = $te;
     
    122128        foreach ($extras as $table => $champs) {
    123129                // on recupere les champs extras declares pour la nouvelle version
    124                 $ici = $GLOBALS['meta']['champs_extras_' . $table] ? unserialize($GLOBALS['meta']['champs_extras_' . $table]) : array();
     130                $ici = isset($GLOBALS['meta']['champs_extras_' . $table]) ? unserialize($GLOBALS['meta']['champs_extras_' . $table]) : array();
    125131                $desc = sql_showtable($table);
    126132
     
    185191                                'saisie_parametres/explication' => 'explication',
    186192                                'saisie_parametres/attention'   => 'attention',
     193                                '__PHP_Incomplete_Class_Name'   => '', // interne à unserialize PHP s'il ne trouve pas la classe
    187194                        ) as $old => $new) {
    188195                                // si $new est vide : on utilise pas.
  • _plugins_/champs_extras_interface/trunk/paquet.xml

    r91537 r95435  
    22        prefix="iextras"
    33        categorie="outil"
    4         version="3.3.4"
     4        version="3.3.5"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.