- 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;,
}}}
- pas de bouton de choix dans le selecteur de rubriques quand il y en a peu, ça déclenche trop tôt la sauvegarde (Mathieu);
- signaler qu'une sauvegarde partielle est destinée à la fusion (Mathieu)
- (concerne toutes les sauvegardes): depuis que le nom du fichier n'est plus imposé par le serveur (seulement proposé dans un Input), il faut refaire le test d'existence préalable du fichier lors de la création finale. Si c'est le cas, l'ancien est renommé afin de ne pas le détruire tout en garantissant que le nom demandé est bien celui utilisé.
- 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.
Cette simplification a été rendue possible en inversant le chantier prévu lors de la [7310]: les scripts en réponse Ajax utilisent echo, via ajax_retour. Un fichier index.php comportant l'unique echo de tout le code PHP de l'espace privé reste l'objectif final, mais il est préférable d'unifier d'abord ainsi, et de basculer lorsque chaque script de exec/ ne comportera plus qu'un seul echo.
- la fonction inc_chercher_logo introduite en [6883] était souvent déjà chargée avant que l'on calcule la surcharge, ce qui rendait celle-ci inopérante;
- le formulaire de gestion des logos (ci-devant afficher_boite_logo) devient une fonction surchargeable inc_iconifier_dist;
- dans le cas de la suppression, ce formulaire est appelé en mode Ajax.
- au passage, correction du bug qui empechait l'affichage du logo des rubriques dans l'affichage de la page d'accueil et autres;
Et un peu de #587 dans le script articles.
Autrement dit la seule chose qui distingue actuellement un script Ajax d'un autre, c'est que sa fonction exec_F retourne le flux à envoyer au client tandis que les autres font directement des echo. En calant tout le monde sur le premier comportement, tout script pourra alors s'exécuter en asynchrone, il suffira de mettre var_ajax=1 dans les parametre pour avoir les deux compléments indiqués ci-dessus (mais ils devraient sans doute s'intégrer aussi aux scripts à terme).
C'est la question de l'interface de programmation d'Ajax qui est posée.
En attendant de la stabiliser, le fichier index.php prend à sa charge l'aiguillage et le traitement opérés auparavant par ajax_page qui a été retiré du dépot, son contenu étant réparti en autant de fichiers inc/ajax_F.php qu'il contenait de fonctions F.
Le mode d'appel est provisoirement encore "ecrire/?exec=ajax_page&fonction=F" en attendant mieux.