Je suis en cours de développement de la fonctionnalité source/destination décrite sur la page [wiki] fr:fonctionnalites:categorie_source.
Une question un peu en suspens est la gestion des suppressions de liens source/destination. Que fait-on au niveau des liens image/catégorie ?
Une solution a été proposée dans le wiki, mais elle ne me convient pas vraiment. Voici ce que je propose, après réflexion pendant la phase de développement:
The rule is the following: if an image belong to the category and to the source, we suppose it comes from the source. If the source/destination link is broken, we delete the image/category link if the only origin of the link was the broken categories link. Example: "=>" means "source of". Between brackets the associated images. A (1,2,9) => \ |=> C (1,2,3,4,5,9) => D (1,2,3,4,5,6,9) B (3,4,9) => / In category C, we suppose (1,2) come from A, (3,4) from B, 9 from A or B and 5 was manually added. In category D, 6 was added manually. If we break A=>C, C and D loose (1,2) but not 9 because it can come from B. If we break C=>D, D loose (3,4,5,9) but not 6 because it was associated manually to 9.
(extrait de l'entête de la fonction delete_sources)
Quel est votre avis sur la question ?
Hors ligne
logique, tout simplement ..... et la logique doit prédominer..... pour qu'à l'usage cela soit simple et non générateur d'erreur... :o)
Hors ligne
z0rglub a écrit:
Code:
Example: "=>" means "source of". Between brackets the associated images. A (1,2,9) => \ |=> C (1,2,3,4,5,9) => D (1,2,3,4,5,6,9) B (3,4,9) => / In category C, we suppose (1,2) come from A, (3,4) from B, 9 from A or B and 5 was manually added. In category D, 6 was added manually. If we break A=>C, C and D loose (1,2) but not 9 because it can come from B. If we break C=>D, D loose (3,4,5,9) but not 6 because it was associated manually to 9.
Imaginons que l'on casse tous les liens:
Cela signifie que C=(5) et D=(6), n'est-ce pas?
Je reconstruis B=>C alors C=(3,4,5,9) et D ne change pas, nous sommes d'accord.
Je reconstruis C=>D alors D=(3,4,5,6,9) et C ne change pas.
Jusque là tout va bien, c'est exactement ce que tu obtenais en cassant A=>C.
Reprenons à imaginons que l'on casse tous les liens:
Je construis C=>D alors D=(5,6) et C ne change pas.
Je construis B=>C alors C=(3,4,5,9) mais que devient D, 2 cas de figure:
1 - D reste identique =(5,6).
2 - D par transitivité récupère sa valeur D=(3,4,5,6,9).
Je pencherai naturellement pour le cas 2, mais je reconnais que cela devient plus compliqué.
Je serais à 200% si tu te limites au cas 1 (beaucoup plus simple pour les novices).
Dans le cas 1, il faut resolliciter la fonction C=>D pour que D retrouve les images du cas 2.
Suis resté clair?
8-)
Hors ligne
VDigital, c'est le cas 2 qui est déjà codé sur ma copie de travail locale :-)
Dans l'exemple que je donne, la table #categories_link contient 3 enregistrements:
- A=>C
- B=>C
- C=>D
Mais lorsque je vérifie que toutes les images associées aux sources le sont aux destinations, je commence par résoudre la question de transitivité, ce qui me donne virtuellement 2 liens supplémentaires :
- A=>D
- B=>D
Au final, D a pour sources {A,B,C}, donc toute image associée à l'une de ces catégories l'est automatiquement à D.
VDigital a écrit:
Je serais à 200% si tu te limites au cas 1 (beaucoup plus simple pour les novices).
Pas d'accord que ce soit plus simple pour les novices. Evidemment, pour les novices, il ne faut pas parler de transitivité, mais dire la règle : "toute image associée à une source l'est aussi à ses destinations". En conséquence dans notre exemple, toute image associée à C (quelle que soit l'origine de l'association, manuelle ou par lien source/destination) l'est à D.
(ce dev m'amuse bien, on pousse à fond l'utilisation des catégories pour la classification)
Hors ligne
A quel moment ai-je oublié de dire que la première règle est de jamais détruire les liens physiques ? (correspondant à #images.storage_category_id qui va disparaître au profit de #image_category.is_storage)
Hors ligne
z0rglub a écrit:
VDigital, c'est le cas 2 qui est déjà codé sur ma copie de travail locale :-)
(ce dev m'amuse bien, on pousse à fond l'utilisation des catégories pour la classification)
Ok. Reçu 5/5
Je ne sais pas si "toute image associée à une source l'est aussi à ses destinations" sera clair pour tout le monde.
Ça l'est pour nous au moins.
Hors ligne
z0rglub a écrit:
A quel moment ai-je oublié de dire que la première règle est de jamais détruire les liens physiques ? (correspondant à #images.storage_category_id qui va disparaître au profit de #image_category.is_storage)
Je suis au courant mais pourquoi fais-tu cette remarque ici dans ce topic?
Hors ligne
VDigital a écrit:
z0rglub a écrit:
A quel moment ai-je oublié de dire que la première règle est de jamais détruire les liens physiques ? (correspondant à #images.storage_category_id qui va disparaître au profit de #image_category.is_storage)
Je suis au courant mais pourquoi fais-tu cette remarque ici dans ce topic?
Parce que rien ne dit que l'image 3 n'appartienne pas physiquement à C. Dans ce cas là, il ne faut pas détruire le lien. Attention à ne pas confondre catégorie virtuelle et lien virtuel (je me rends compte que ce n'est pas toujours clair)
Hors ligne
Bien vu !!!
Et une image associée dans une catégorie virtuelle via le panier? Elle disparaitrait?
Hors ligne
VDigital a écrit:
Et une image associée dans une catégorie virtuelle via le panier? Elle disparaitrait?
Relis bien les posts précédents :-) La réponse est "ça dépend si l'image est également associé à la source".
Hors ligne
z0rglub a écrit:
VDigital a écrit:
Et une image associée dans une catégorie virtuelle via le panier? Elle disparaitrait?
Relis bien les posts précédents :-) La réponse est "ça dépend si l'image est également associé à la source".
La réponse est: non (sans relire).
Tu respecteras les associations explicites.
Bravo !!!
Hors ligne
Pourra-t-on exclure?
A (1,2,9) => \
|=> C (1,4,5,9) Mais où sont les 2 et 3?
B (3,4,9) => /
Car c'est ce que je fais avec mes catégories virtuelles qui ne sont qu'une partie de catégorie physique.
Et 2ement, si après avec avoir fait une réunion de A et B en C, C et D en E, E et A en F (ca rien ca!), ect... que j'arrive à Z et que je suis content du Z mais que je veux supprimer les X, Y, W, peut-on fixer le Z?
Hors ligne
@rub: pour l'exclusion, je ne pense pas. tu vas garder tes exclusions en virtuelles, mais je pense que tes virtuelle spourront être catégories-sources pour une catégorie destination qui sera, elle, filtrée.
Donc le processus d'exclusion reste le même: catégorie virtuelle sans les images indésirables. Je laisse Pierrick confirmer.
pour ton 2e point on rejoint le problème de l'arret de l'alimentation dont on n'a pas encore parler (cf. wiki et topic).
Dernière modification par mathiasm (2006-03-01 01:12:34)
Hors ligne
Je n'avais meme pas vu cette evolution jusqua maintenant. z0rglub, je suis d'accord avec la solution que tu proposes. C'est la plus logique.
Au sujet des permissions: Si j'ai le lien A=>B, et je n'ai pas la permission de voir A, alors je suppose qu'en regardant B, les photos de A ne vont pas apparaitre. Correct?
Personellement j'aurai un tres fort interet pour ce dev si on peut gerer pas seulement les elements directement composant la source, mais aussi recursivement les elements des categories filles de la source. Par exemple: je defini le lien A+recursif=>B, alors en B ca me -//:---\spam les elements de B + tous les elements de A et les fils de A. Le but est aussi de pouvoir faire A+recursif=>A par exemple. Au niveau de la table il suffit de rajouter une colonne, mais est-ce qu'il sera difficile de gerer ca ? En fait c'est quelque chose de ce genre qui m'a manque au tout debut quand j'ai choisi d'utiliser pwg.
Hors ligne
rub a écrit:
Pourra-t-on exclure?
A (1,2,9) => \
|=> C (1,4,5,9) Mais où sont les 2 et 3?
B (3,4,9) => /
Car c'est ce que je fais avec mes catégories virtuelles qui ne sont qu'une partie de catégorie physique.
Et 2ement, si après avec avoir fait une réunion de A et B en C, C et D en E, E et A en F (ca rien ca!), ect... que j'arrive à Z et que je suis content du Z mais que je veux supprimer les X, Y, W, peut-on fixer le Z?
La réponse est sans doute non à ta question.
Par contre tes idées collent à la réalité et c'est ce qu'il faut savoir faire.
Je pense que z0rglub en est à peu près à ce point dans sa réflexion.
Bravo.
Hors ligne