Le 27 septembre 2013 08:59, Franck Paul <carnet.franck.paul(a)gmail.com> a
écrit :
Je crois me souvenir qu'à l'époque j'avais fait ça pour
deux raisons
(peut-être pas valables aujourd'hui) :
1. avoir toutes les infos sous la main en une fois, pour gagner en code et
rapidité pour l'affichage
Pour ce point-là, on a $_favs à coté des favoris utilisateurs, je ne pense
pas qu'il y ait beaucoup d'impacts
2. conserver la "mémoire" des favoris si on désactivait
temporairement l'un
des plugins pointés par eux (voire suppression d'un plugin et
réinstallation ultérieure, le favori restant enregistré mais non affiché
entre temps).
Ca on peut peut-être le voir différemment (voir plus bas)
Je crois (à vérifier) que ce que je mets dans les user-prefs n'est qu'une
copie sérialisée de ce qu'il y a dans le $_fav
J'ai fait quelques tests, et je confirme que c'est le cas (j'ai remplacé le
$fav issu des préférences utilisateurs par un $_fav, j'ai le même
comportement)
De plus, je ne pensais pas au moment de commencer leur développement
alors
me limiter aux seuls points d'entrée des plugins et permettre à peu près
n'importe quoi la-dedans, éventuellement même des liens externes. Vu
l'usage actuel, on peut surement optimiser.
En ce qui concerne le nom, vu qu'on ne stocke qu'une URL, on risque d'avoir
du mal à positionner ça dynamiquement, mais je peux me tromper.
Avant de continuer, je vais préciser pourquoi je pose la question
maintenant, et surtout ce qui m'a amené à la poser. C'est "à cause" de
Franck (Tomek) et son ticket 1727.
Le fait est qu'avec les paramètres des favoris tels qu'ils sont définis, on
ne peut pas à coup sûr déterminer quel favori mettre en évidence à partir
seulement de son URL.
Pour preuve les cas suivants :
* posts.php ==> favori surligné = billets
* posts.php?page=2 ==> favori surligné = Billets
Jusque là on pourrait dire : on vérifie que l'url commence par posts.php,
et on ignore la QS
* post.php ==> favori surligné = "nouveau billet"
* post.php?id=1 => favori surligné = "aucun"
Mince, ici il ne faut pas ignorer la QS
* plugin.php?p=pages ==> favori surligné = "Pages"
* plugin.php?p=pages&page=2 ==> favori surligné = "Pages"
* plugin.php?p=pages&act=page ==> favori surligné = "Nouvelle page"
Et donc je ne vois pas d'autre moyen que de fournir une fonction qui permet
de savoir si un favori est activé ou pas. Et je me vois mal sérialiser
cette fonction dans les settings :)
Pour en revenir à nos moutons, je propose une approche différente pour le
stockage des favoris en preférences.
On réduit à 2 prefs : favorites->user et favorites->global
Chaque pref est une version sérialisée d'un array("name1","name2",
...),
nameX étant le nom du setting, clef de $_fav. On les stocke bien entendu
dans l'ordre désiré.
On laisse toutefois la possibilité de spécialiser chaque favori, auquel cas
on ne spécifie plus un nom, mais un array du type : array ('name' =>
'nameX', 'permissions' => 'perm', ...).
Et quand on veut afficher ce dernier, on fait un aray_merge entre
$_fav['name'] et le reste des paramètres. Et chaque plugin qui définit un
favori peut fournir un callback (stocké dans $_fav) à la place de $active,
qui prend en entré une uri et des paramètres, et dit si oui ou non le
favori est à positionner activé. Donc si $active est callable(), on
l'appelle, sinon on prend sa valeur.
Donc bref, je ne veux pas casser pour casser, je veux juste faire évoluer
pour résoudre ce problème de mise en valeur :)
Z'en dites ?
--
Bruno