et contient des appels à des modèles de documents de type image (tel que `<imgXX>` ou `<docXX>`,
que ces images sont «dans le portfolio» (c’est à dire en mode 'document'), alors l’image
du document n’était pas retrouvée, et le modèle affichait la vignette de l’extension du document
à la place.
Pour corriger, il faut transmettre le connecteur utilisé ($connect) jusqu’à la fonction image_du_document() (du plugin médias)
afin qu’elle traite ce cas particulier.
(problème signalé par Manu_)
- On permet de prévisualiser un article en cours de rédaction par un relecteur
- On ne permet de prévisualiser que la page pour laquelle on a demandé la prévisualisation depuis l’interface privée
- On ne stocke plus en session le token de prévisu d’un relecteur, on teste le var_previewtoken systématiquement
- En mode prévisu, les boucles prenent l’identifiant de l’auteur ayant créé le token (s’il est valide) pour les tests des objets à afficher liés à l’auteur de l’objet (particulièrement donc, pour les articles en cours de rédaction)
- 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)
- ajouter une class spip_logo_(left|right|center|top|bottom) correspondant au parametre d'alignement demande dans la balise #LOGO{}
- quand align est left ou right, ne pas utiliser l'attribut align deprecie mais un style float inline a la place
- enrichir le retour de quete_logo pour un usage plus simple
+ PHPDoc
Application aux articles, pour lesquels on limite en previsualisation l'affichage des articles en cours de rédaction à ceux de l'auteur connecté.
Dans la fonction quete_condition_statut on utilise le nom de table qui prefixe le champ statut pour savoir de quel objet on traite.
Ce n'est pas parfait, il faudrait le passer en argument supplémentaire, mais cela suffit en général, et on ne veut pas changer la signature de la fonction dans cette version stable. A noter que si on n'a pas cette information, on ignore le statut considéré pour ne pas risquer de dévoiler de l'information - idem si pas d'auteur connecté.
Permet de passer de 914 à 140 appels dans un hit de l'accueil de l'espace privé, et de 2.6% à 0.7% du temps consommé dans le hit (pour 65 fichiers différents recherchés)
Complété par 2 commits sur extensions revisions et textwheel
+ corrige un bug sur la memorisation des echecs de charger_fonction dont on ressortait trop vite : il ne faut pas rechercher les fichiers sur le disque, mais quand meme verifier la présence des fonctions en mémoire, qui ont pu arriver par une inclusion externe.
cela devient un simple find_in_path dans le chemin prive/vignettes/
ce qui permet de couvrir d'un seul coup tous les cas de figure.
Suppression des constantes idoines et de leurs références, et code mort dans les filtres images ou la fonction cherche_image_nommee ne servait plus.
Cela ouvre la porte au deplacement du dossier prive/vignettes/ dans l'extension medias
En cas de personalisation dans un squelette, il faut deplace squelettes/vignettes/ vers squelettes/prive/vignettes/
- ajout d'un champ virtuel dans la table articles
- virtuel<>'' = redirection
- evite la perte du chapo lors d'une redirection temporaire ...
- suppression des fonctions inutiles chapo_redirigetil et nettoyer_chapo
- suppression de la balise calculée #CHAPO puisque le chapo redevient un champ normal
- la fonction chapo_redirige est renommee virtuel_redirige et renvoit une chaine vide si pas de redirection
- upgrade de la base
- modification de la version_code pour mettre a jour les squelettes compilés
En complement : la condition where est generee au calcul par la fonction quete_condition_where_statut (homogene a quete_condition_postdates) en lieu et place de calculer_where_statut
Refonte du code de generation des composants de la requete. En particulier la clause static qui existait sur chaque composante separee a ete remplacee par un (!isset()) puisque c'est maintenant le tableau $command qui est static. On factorise donc la clause (!isset()) pour ne l'evaluer qu'une fois, et on peut restreindre le cas static a la presence de variable reperees par un $ dans la clause calculee.
Corrolairement, et pour n'evaluer qu'une fois le where de la plupart des boucles, on remplace la globale $var_preview par une constante _VAR_PREVIEW, celle-ci n'etant pas supposee changer au cours d'un hit. Le meme travail serait a faire sur ses homologues $var_xxx pour plus de lisibilite du code
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;,
}}}
qui prend en entree le champ date a comparer,
et produit en sortie la condition complete ou 1=1 (elimine ensuite par le compilateur) si pas d'article dans le futur