Annonce

  •  » Outils
  •  » explications sur le modèle de données de la table categories

Notice: Undefined offset: 314 in /var/www/fr.piwigo.org/forum/include/parser.php on line 509

Notice: Undefined offset: 314 in /var/www/fr.piwigo.org/forum/include/parser.php on line 510

#1 2009-10-24 23:07:35

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12590

explications sur le modèle de données de la table categories

marcsins m'a demandé (par email) des explications sur "permalink", "uppercats" et "global_rank". Je réponds ici parce que ça peut servir à d'autres, autant ouvrir la discussion (et j'aime bien quand les discussions sont publiques en règle générale).

Je vais te répondre sans détails sur les 3 points que tu cites, mais cela nécessitera sans doute davantage d'explications, n'hésites pas à demander des précisions. Sachant que les 3 mots que tu donnes sont des colonnes de la table categories, je suppose que tu étudies le modèle de données.

1) permalink : c'est lorsqu'on veut donner un nom de son choix au niveau de l'URL pour une catégorie donnée. Par exemple, si tu créées la catégorie "Première catégorie", qui obtient l'id 1, en navigant dans ta galerie, tu vas aller sur category/1 (et sur category/1-premiere_categorie si tu changes $conf['category_url_style'] dans le fichier de configuration). Ensuite tu peux créer un permalink sur cette categorie et l'appeler "mon_premier_permalink", ensuite en navigant dans ta galerie tu iras sur category/mon_premier_permalink (au indice numérique).

2) global_rank : permet de comparer l'ordre entre 2 categories, quelque soit leur niveau dans l'arborescence. C'est une donnée qui se recalcule à partir de {uppercats, rank} (voir la fonction update_global_rank dans admin/include/functions.php qui utilise un algo que j'aime beaucoup avec un preg_replace qui execute son $replacement). Mais c'est pénible donc j'ai fait un cache avec cette colonne pour accélerer tout simplement. Comparer l'ordre de 2 catégories est utile lorsqu'on affiche un sous-ensemble des catégories. Comme lorsqu'on affiche la liste des catégories associées à une photo par exemple. Il y a de nombreux autres endroits comme cela. Au niveau du code PHP, j'utilise la fonction strnatcasecmp (voir la fonction global_rank_compare dans include/functions_category.inc.php)

3) uppercats : liste de identifiants des catégories de la racine, jusqu'à la catégorie courante. Par exemple, si j'ai "events (id=23) / season 1 (id=42) / salon de Berlin (id=95)", pour la catégorie 95, j'aurai dans la colonne uppercats 23,42,95. C'est également un cache, qui se recalcule à partir de {id,id_uppercat}. Il y a longtemps, j'ai écrit un billet sur mon blog à ce sujet, et ça reste toujours valable, ce code n'a pas changé depuis la 1.4.0.

Voilà, j'attends donc tes demandes de précisions.

Ce qui m'étonne, c'est que dans le cadre de [extension by ] tu aies besoin de comprendre cette mécanique interne. J'aurais plutôt tendance à penser que seule l'API web est intéressante pour toi, hors ces propriétés ne sont pas à renseigner quand on passe par l'API web.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#2 2009-10-25 07:15:30

marcsins
Membre
2009-09-12
85

Re: explications sur le modèle de données de la table categories

Bonjour,

Merci de ta réponse. Effectivement je suis en cours d'étude de la structure, car pour afficher celle-ci sous forme d'arbre (style répertoire) il faut pouvoir décoder et associer à chaque nom sa position dans l'arbre.

j'avais réussi à analyser un peu la structure mais quelques points m'étonne encore du style :
global_rank = "1.1.2" et le parent est "1" ( pas de "1.1" entre eux).
id = "138" et pas de désignation
id = 139 et pas de désignation

Merci de l'aide fournie
Cordialement
Marc S.

Hors ligne

#3 2009-10-27 23:06:43

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12590

Re: explications sur le modèle de données de la table categories

OK, je comprends mieux la demande alors.

En lisant ça je me dis que l'API web devrait retourner, à la demande, une structure avec l'arborescence déjà formée (c'est d'ailleurs ce que je croyais avant de regarder attentivement pwg.categories.getList). Sinon, l'algorithme déjà présent dans pLoader, que tu vas apparemment réécrire pour pLoaderMac, chaque client va devoir le réécrire, et bien sûr c'est pas super efficace globalement.

Que dirais-tu si pwg.categories.getList renvoyait directement une liste à N niveaux ?


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#4 2009-10-28 10:20:30

ron
Former Piwigo Team
2008-09-30
211

Re: explications sur le modèle de données de la table categories

plg a écrit:

Que dirais-tu si pwg.categories.getList renvoyait directement une liste à N niveaux ?

Ou peut être ajouter pwg.categories.getTreeList ?

Hors ligne

#5 2009-10-28 23:08:10

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12590

Re: explications sur le modèle de données de la table categories

ron a écrit:

plg a écrit:

Que dirais-tu si pwg.categories.getList renvoyait directement une liste à N niveaux ?

Ou peut être ajouter pwg.categories.getTreeList ?

J'aurais plutôt dit qu'on ajoute un paramètre "as_tree" à vrai ou faux (faux par défaut) dans les méthodes pwg.categories.getList et pwg.categories.getAdminList. Ca fait moins de code à ajouter/modifier, côté Piwigo et côté clients.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

  •  » Outils
  •  » explications sur le modèle de données de la table categories

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2023 · Contact