Résumé
La méthode de migration d’une version de SPIP 1.8 ou antérieure vers SPIP 1.9 est bien décrite sur le tutoriel du site officiel : Migration vers SPIP 1.9.
Néanmoins cette opération peut s’avérer longue et fastidieuse surtout si le webmaster a en charge plusieurs sites comportant eux mêmes plusieurs jeux de squelettes.
L’objet de cet article est de proposer l’utilisation d’un script bash pour automatiser les remplacements à effectuer dans les squelettes.
Utilisation
Ce script est un script Shell nécessitant une version de Bash > 3.
Il s’éxécute en ligne commande sous Linux ou un émulateur Windows type Cygwin.
Les manipulations suivantes peuvent se faire en local (conseillé) ou sur votre serveur :
1. Avant toute chose, effectuez une copie du dossier contenant votre jeu de squelettes.
2. Enregistrer le script joint dans un répertoire, idéalement le répertoire contenant le répertoire de vos squelettes (racine du site en général).
3. Lancer le script migration4.sh depuis le répertoire en question :
pvincent@pvincent-laptop : $ ./migration4.sh
4. Indiquer le dossier contenant les squelettes :
Indiquer le dossier contenant les squelettes : sq-reseau-v2
Backup du répertoire...
Attention : la sauvegarde existe déjà.
Pour continuer, pressez une touche (la sauvegarde précédente sera écrasée)
5. Les remplacements s’effectuent
0 : remplacement de < *INCLURE *(\(.+\)[.]php3 *)> par [(#INCLUREfond=\1)]
1 : remplacement de < *INCLURE *(\(.+\)[.]php3 *) *\(.+\) *> par [(#INCLUREfond=\1\2)]
...
6. Gestion du cache
Voulez vous conserver le cache, si existant : O\N ?
O
Quelle valeur par défault voulez vous appliquer au cache en secondes (Cache nul : 0) ?
52*3600
7. Exécution de Tidy
Voulez vous éxécuter Tidy (http://www.w3.org/People/Raggett/tidy/)
pour avoir une indication des MAJ de conformité à effectuer
ou des boucles non fermées dans vos squelettes
O/N ?
Travail de Tidy sur sq-sssc/article-forum.html
Presser la touche Entrée pour commencer
line 26 column 49 - Error: unexpected </BOUCLE_mots_forum> in <li>
...
Principe
Les remplacements sont indiqués sous forme de couples d’expressions régulières recherche (rec[xxx]) / remplacement (rep[xxx]).
#Remplacement des INCLURE
rec[0]='< *INCLURE *(\(.\+\)[.]php3 *)>'
rep[0]='[(#INCLURE{fond=\1})]'
rec[1]='< *INCLURE *(\(.\+\)[.]php3 *) *\({.\+}\) *>'
rep[1]='[(#INCLURE{fond=\1}\2)]'
#Remplacements spécifiques au squelette - ici vierge - à modifier en cas de besoin
#Remplacement des écritures statiques
rec[4]='article.php3?id_article=#ID_ARTICLE'
rep[4]='#URL_ARTICLE'
rec[5]='rubrique.php3?id_rubrique=#ID_RUBRIQUE'
rep[5]='#URL_RUBRIQUE'
rec[6]='breve.php3?id_breve=#ID_BREVE'
rep[6]='#URL_BREVE'
rec[7]='auteur.php3?id_auteur=#ID_AUTEUR'
rep[7]='#URL_AUTEUR'
rec[8]='mot.php3?id_mot=#ID_MOT'
rep[8]='#URL_MOT'
# Cas d’adressages génériques : remplacement des .php3 par spip.php ?page=
rec[9]='\([0-9a-zA-Z_-]\+\).php3?'
rep[9]='spip.php?page=\1\&'
rec[10]='\([0-9a-zA-Z_-]\+\).php3'
rep[10]='spip.php?page=\1'
# Traitement du cas de la recherche
rec[11]='\(<input.\+recherche\)'
rep[11]='<input name="page" value="recherche" type="hidden" \/>\1'
# Quelques mises en confirmité XHTML - W3C
rec[12]='< *\([hb]r\) *>'
rep[12]='<\1 \/>'
rec[13]='\(<link.*\?[^-?\/]\)>'
rep[13]='\1 \/>'
rec[14]='\(<input.*\?[^-?\/]\)>'
rep[14]='\1 \/>'
rec[15]='\(<img.*\?[^-?\/]\)>'
rep[15]='\1 \/>'
rec[16]='\(<meta.*\?[^-?\/]\)>'
rep[16]='\1 \/>'
Evolutions
1. Ce script a permis de traiter un certain nombre de modifications simples en lien avec nos besoins. Cependant il n’est garanti exempt d’erreurs lors de son exécution dans un contexte particulier, ni exhaustif.
C’est une base de travail mais il sera certainement nécessaire de l’améliorer en lien avec les particularités de chaque site.
2. Certains remplacements génériques n’ont pas été traités pour le moment :
– Remplacement #DOSSIER_SQUELETTE -> #CHEMIN
– Ajout des balises d’entête : #HTTP_HEADER
3. Ce script sera bientôt proposé en version PHP.
4. Un second script est à l’étude pour la migration du
site lui-même afin d’automatiser les étapes décrites sur le site officiel et que chacun effectue aujourd’hui à la main. Cette partie n’a d’intérêt que sur un grand nombre de sites.
Téléchargement
Le script est téléchargeable ci-dessous :