- 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)
On laisse l'autorisation(publierdans,rubrique) historique pour eviter tout risque de regression quand un id_rubrique est fourni, mais on devrait basculer tous les objets sur autoriser(instituer,type)
Declaration des puces utilisees :
statut_images => array( 'pucepardefaut','statut1'=>'pucestatut1','statut2'=>'pucestatut2',...)
Declaration des titres associes :
statut_titres => array( 'titrepardefaut','statut1'=>'titretatut1','statut2'=>'titrestatut2',...)
Declaration des statuts instituables (puce de changement rapide) :
statut_textes_instituer => array('statut1'=>'texte instituer statut1',...)
En l'absence de declaration des images et/ou des titres de puce de statut, on utilise les puce bien connues pour les status connus prepa/prop/publie/refuse/poubelle
La declaration des status instituables permet par ailleurs de beneficier automatiquement des puces de changement rapide, proposees parmi les choix listes.
Le filtre puce_statut permet d'afficher une puce :
[(#STATUT|puce_statut{article})]
affiche une puce statique simple
[(#STATUT|puce_statut{article,#ID_ARTICLE,#ID_RUBRIQUE})]
affiche une puce avec changement rapide, lorsque l'objet a été déclaré, une puce statique simple sinon
Les fonctions puce_statut_{$type}_dist ne sont plus necessaires sauf exception, le traitement par defaut etant generique. Lorsque la fonction existe, elle est neanmoins appelee en priorite et se substitue au traitement generique.
Lorsqu'aucune puce n'est connue pour un objet donné, on affiche l'icone de son type, en 16px.
Le filtre |puce_changement_statut est obsolete et devrait disparaitre
Le filtre |puce_statut est implémenté par la fonction filtre_puce_statut_dist
La fonction puce_statut() homonyme du filtre est encore utilisée dans les menus instituer (boite info). Il reste a unifier celui là et le rendre generique sur la base de la déclaration pour faire disparaitre cette fonction.
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;,
}}}
Dépot obtenu par:
{{{
for i in $(grep -l 'spip_query..SELECT.*FROM.*WHERE[^A-Z]*;$' [a-i]*/*php)
do
# Pour la clause DISTINCT, laisser intact pour le moment.
sed 's/spip_query..SELECT *\([^D]*[^ ]\) *FROM *\(.*[^ ]\) *WHERE *\([^A-Z]*;\)$/sql_select("\1", "\2", "\3/;s/ "" *\.//;s/ch(sql_select\(.*\));/sel\1;/' $i > x
echo $i
mv x $i
done
#}}}
et deux suppressions manuelles de lourdeurs syntaxiques résultantes.
Pas d'intervention sur le fichier inc/meta: au test, include manquant. À controler.
En conséquence, l'annonce de [9852] est modifiée: '''spip_fetch_array''' est remplacée par '''sql_fetch'''. Rien de modifié en revanche en ce qui concerne le fait que spip_fetch_array avec un deuxième argument égal à SPIP_NUM n'a pas d'équivalent et doit être réécrit si on éviter le recours à vieilles_def.php.
Dépot obtenu par le script suivant:
{{{
grep -v '// http://doc.spip.org/@spip_abstract_' base/abstract_sql.php > b
mv b base/abstract_sql.php
for i in $(grep -l "spip_abstract_" */*p|grep -v vieilles_def)
do
sed "s/spip_abstract_/sql_/g" $i > x; mv x $i
done
}}}
et intervention manuelle sur vieilles_def.php.
Ce dépot résulte donc du retrait des deux définitions de '''spip_fetch_array''' présentes dans source:spip/ecrire/base/db_mysql.php et source:spip/ecrire/base/db_pg.php (qui peuvent donc être chargés simultanément à présent si nécessaire) et de l'application du script suivant dans le répertoire '''ecrire''':
{{{
for i in $(grep -l spip_fetch_array */*p|grep -v vieilles_def)
do
sed s/spip_fetch_array/spip_abstract_fetch/g $i > x
mv x $i
done
}}}
{{{
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
}}}
A noter qu'au passage disparait la dernière URL codée en dur dans le code JavaScript. Il faudra veiller à ne pas en réintroduire, afin que d'éventuels changements de generer_url_ecrire soient bien intégralement répercutés.
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.