- encoding (utf8)
- eof_ending (saut le ligne en fin de fichier)
- elseif (pas else if)
- function_call_space (espaces sur fonctions)
- function_declaration (pareil)
- function_typehint_space (pareil)
Je profite de cette écriture massive pour normaliser quelque chose de trompeur lorsqu'on compare deux versions, savoir l'usage de " ou ' dans le premier argument de define et defined. Comme les chaînes entre apostrophes sont plus rapidement analysées que celles entre guillemets, je choisis l'apostrophe.
Dépot obtenu avec le script Shell:
{{{
a=$(find . -name "*.php" |grep -v extensions/ | grep -v /config/ | grep -v index.php | grep -v public.php | grep -v prive.php )
echo -n "Fichiers: "
echo $a|wc -w
for i in $a
do
sed -f ~/Sites/spip/spip.sed $i > /tmp/f.php
if diff -q $i /tmp/f.php
then
:
else
diff $i /tmp/f.php
# echo $i; php /tmp/f.php
# mv /tmp/f.php $i
fi
done
}}}
et le script Sed:
{{{
s/Copyright (c) 2001-20../Copyright (c) 2001-2011/
s,\(if [(]!*\)*\(defined* *[(]\)"\([^"]*\)"\(.*\);[[:space:]]*[#/]*.*$,\1\2'\3'\4;,
}}}
- la plus simple: rajouter dans leurs fichiers le {{{include_spip('inc/minipres/')}}} qui sera bientot retiré de ecrire/index.php
- la plus pertinente: tester chacun de ces fichiers pour regarder s'ils ont besoin ou non de ces 130Ko. Pour ce faire on peut utiliser le shell-script suivant, où la variable {{{session}}} doit etre affectée à une session valide sur votre machine:
#!/bin/sh
session="require('../tmp/sessions/521_0a154a3fdb1dfa9443d8cec28e7c5743.php');"
for i in ??*.php
do
z=../_$i.php
sed "s,<\?php,<\?php require 'inc_version.php';spip_connect();include_spip('inc/sessions');$session," $i > $z
f=$(basename $i .php)
echo "<?php exec_${f}_dist(); ?>" >> $z
echo ">>>>>>>>>>>>>$i"
php -q $z |grep Fatal
rm $z
done
Il faut aussi executer ce script avec {{{session=''}}} pour bien faire. Les messages de fonctions indéfinies qui pourraient arriver pendant ces exécutions signalent qu'une au moins des 4 inclusions éliminées est indispensable au script considéré, il faut alors l'ajouter à l'endroit approprié.
Le présent dépot ajoute les inclusions repérées par ce shell-script. Elle sont donc superflues jusqu'au remplacement de inc/minipres par inc/lang dans index.php.
Interface: cette fonction reçoit comme premier argument un nom et demande la création d'un répertoire déduit de ce nom et de l'heure, et relance le script. Si le répertoire existe déjà (au 2e appel normalement) elle mémorise dans la table spip_meta le $REQUEST ayant provoqué l'appel, cette méta étant nommée également par le premier argument. Elle effectue ensuite un charger_fonction sur ce nom et le répertoire {{{base}}} (car ces actions concernent toujours la base de donnnées: upgrade, delete_all, convert_utf8, admin_repair). En cas d'interruption du script, tester la présence de telles variables au niveau de ecrire/index.php permet de s'apercevoir de l'interruption, et de reprendre le travail avec les valeurs transmises dans $_REQUEST lors du premier appel (n'est utilisé actuellement que pour import_all). Lorsque la fonction chargée a fini le travail, la meta et le repertoire sont supprimés.
La fonction inc_admin admet 3 arguments supplémentaires optionnels: le titre de la page, un texte preliminaire expliquant l'action entreprise après création du répertoire, et une URL de retour.
Au passage, ajout de la destruction du cache du menu des rubriques dans l'action de purge des caches, sinon on croit que l'action convert_utf8 n'a pas marché.
La rationnalisation des noms induit donc que la meta "debut_restauration" se nomme à présent "import_all", et "conversion_charset" se nomme "convert_utf8; cet arbitraire ne devrait avoir aucune conséquence.
Il reste un cas d'appel de debut_admin en dehors de ce schéma, lié au passage inachevé en plugin de la gestion du vieux htpassword.
{{{
for i in $(grep -l "<font color=.[^>]*>.*</font" [ei]*/*p)
do
sed "s,<font color=\(.\)\([^>]*\)>\(.*\)</font,<span style=\1color: \2>\3</span," $i > x
mv x $i
done
}}}
renomme_en_exec_et_en_php ()
{
mv index.php3 i3;
mv index.php i;
mv forum.php3 f;
mv statistiques.php3 s;
for i in *.php*;
do
if [ -f inc_${i%3} ]; then
$MVCOMMAND inc_${i%3} exec_${i%3};
else
if [ -f inc_$i ]; then
$MVCOMMAND inc_$i exec_${i%3};
fi;
fi;
done;
mv i3 index.php3;
mv i index.php;
mv f forum.php3;
mv s statistiques.php3;
$MVCOMMAND inc_auth.php3 exec_auth.php;
$MVCOMMAND inc_accueil.php exec_accueil.php;
for i in inc_spip_action*;
do
$MVCOMMAND $i exec_${i#inc_};
done;
for i in inc_*.php3;
do
$MVCOMMAND $i ${i%3};
done;
$MVCOMMAND exec_config-contenu.php exec_config_contenu.php;
$MVCOMMAND exec_config-multilang.php exec_config_multilang.php;
$MVCOMMAND exec_config-fonctions.php exec_config_fonctions.php;
$MVCOMMAND exec_config-lang.php exec_config_lang.php
}
(moins on aura de façons différentes de parler à la base, et mieux
on se portera quand il faudra migrer vers un autre SGDB)
NB: une fois testé qu'il n'y a pas d'oubli, on peut réactiver les fonctions au cas où elles serviraient dans des scripts externes ou contribs.