Le besoin est le suivant : en un minimum d’opérations, associer toutes les photos d’une catégorie à une autre.
Précision : pouvoir créer la catégorie destinatrice au moment de l’association.
Très concrètement, il s’agit de pouvoir associer une catégorie physique à une catégorie virtuelle, afin de bénéficier de la souplesse de gestion des catégories virtuelles. Dans une galerie comme celle d’un développeur de PWG (pierrick en l’occurence), chaque catégorie physique est associée à une catégorie virtuelle.
En branche 1.5, les actions nécessaires sont les suivantes :
navigation dans [Administration»Catégories»Gérer] pour trouver la catégorie parente et y créer une sous-catégorie virtuelle
navigation dans [Administration»Catégories»Gérer] pour trouver la catégorie physique à lier. Cliquer sur l’action de gestion des éléments de la catégorie, on arrive sur l’écran de gestion des photos par lot.
Choisir la catégorie virtuelle nouvelle créée comme catégorie à laquelle associer toutes les photos, prendre “toutes” comme cible et valider.
Bref, trop de clics à mon goût. La nouvelle fonctionnalité de “catégorie source”, permettra d’obtenir le même résultat en suivant les actions :
navigation dans [Administration»Catégories»Gérer] pour trouver la catégorie physique à lier. Cliquer sur l’action “propriétés de la catégorie”.
section “liens entre catégories”, remplir le nom de la nouvelle catégorie virtuelle à créer, choisir sa catégorie parente dans une liste, valider.
Efficace. Jusque là, rien de nouveau par rapport à la branche 1.5, il ne s’agit que d’une simplification ergonomique.
La page de gestion des propriétés d’une catégorie, dans sa section “liens entre catégories”, permet de :
créer une nouvelle catégorie de destination
gérer une liste de catégories source et non source (grâce à un double multiselect comme la gestion globale des catégories)
gérer une liste de catégories destination et non destination (grâce à un double multiselect également)
On parle de catégorie source, ce qui entraîne automatiquement la notion de catégorie de destination. Plutôt que de choisir une catégorie source, on choisit une catégorie de destination.
Multiplicité : chaque catégorie peut avoir N catégories sources et N catégories de destination.
Les liens entre catégories sont persistants. Cela signifie que si une catégorie a une catégorie source, alors à chaque ajout dans la catégorie source, la catégorie de destination est automatiquement créditée de l’ajout (par lien virtuel).
Si on confirme la règle de suppression, on peut créer la règle suivante:
Arrêt v1 : l’arrêt se fait sur une Catégorie Virtuelle, et cela stoppe l’alimentation de
toutes les sources. Il suffit alors de recréer une autre catégorie virtuelle qui a comme source l’ancienne catégorie virtuelle et toutes les sources à maintenir.

Arrêt v2 : l’arrêt d’un lien entre catégories entraîne le positionnement d’un champ de type Date “end_date” pour déterminer quelles photos importer pour la source impactée en faisant correspondre avec le champ “images.date_available”. Est-ce que le test de date n’est pas trop consommateur?

Nouvelle table #categories_link, avec 2 colonnes.
CREATE TABLE phpwebgallery_categories_link (
source smallint(5) UNSIGNED NOT NULL,
destination smallint(5) UNSIGNED NOT NULL,
PRIMARY KEY (source, destination)
);
Les liens entre catégories permettent de créer des lignes dans la table #image_category, de manière statique. Ces liens sont créés statiquement lors des ajouts d’éléments dans une catégories :
Conseil : la fonction qui gérera les inserts dans #image_category en conséquence du contenu de #categories_link devra commencer par résoudre les problèmes de transitivité en ne traitant qu’un tableau source⇒destination à un niveau. Ceci afin d’éviter la lourdeur de la récursivité.
La règle de suppression est à discuter.