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.
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.
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
}
- virer les ifdefined_ECRIRE inutiles a cause include_ecrire et inopepants en PHP5
- les remplacer par ifnotdefined inc_version return pour renforcer la securite (suggestion de Moritz Naumann)
- mettre des include_ecrire pour tout ce qui n'est pas find_in_path
- signaler dans spip_log les fichiers non accessibles, par le biais de include_ecrire