Browse Source

Certains champs sont des tableaux sérializés en PHP (Formidable notamment qui

l'utilisent pour stocker la config de formulaire).
Dans ce cas il ne faut pas modifier directement la valeur serializé, sans
quoi ca casse tout et on perd le contenu du champ.
Il faut d'abord deserializer, puis serializé en json. On peut alors
faire toutes nos corrections automatiques sans risque.
Et à la fin on reserialize en PHP.
svn/root/tags/v1.5.3 v1.5.3
Maïeul 10 months ago
parent
commit
8930381535
  1. 11
      correction_liens_internes_pipelines.php
  2. 3
      paquet.xml

11
correction_liens_internes_pipelines.php

@ -91,6 +91,14 @@ function correction_liens_internes_correction($texte, $raccourci_spip = true){
return $texte;
}
// C'est un tableeau sérialisé en PHP ? on le séralize en json pour éviter les ennuis
$serialize_php = false;
if ($tmp = @unserialize($texte)) {
$texte = json_encode($tmp, JSON_UNESCAPED_SLASHES);
spip_log($texte, 's');
$serialize_php = true;
}
// traiter d'autre domaines ?
if ($domaines = correction_liens_internes_autres_domaines()) {
@ -127,6 +135,9 @@ function correction_liens_internes_correction($texte, $raccourci_spip = true){
. " : $mauvais_raccourci => $bon_raccourci", 'liens_internes.' . _LOG_AVERTISSEMENT);
}
}
if($serialize_php) {
$texte = serialize(json_decode($texte, true));
}
return $texte;
}

3
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="correction_liens_internes"
categorie="edition"
version="1.5.2"
version="1.5.3"
etat="stable"
compatibilite="[3.0.0;3.2.*]"
logo="correction_liens_internes.png"
@ -19,5 +19,6 @@
<pipeline nom="pre_edition" inclure="correction_liens_internes_pipelines.php" />
<necessite nom="PHP" compatibilite="[5.4.0;[" />
<utilise nom="multidomaines" compatibilite="[2.0.0;]" />
</paquet>
Loading…
Cancel
Save