Aller au contenu

Catégories

phil/taxonomy-bundle

Une catégorie a une clé — un slug, unique —, un parent ou aucun, une position parmi ses sœurs, des noms et des descriptions par langue, et un chemin depuis la racine, /a/b/c/, qui permet de trouver une branche entière d'un seul coup. Une catégorie est au plus à la profondeur 10, une racine étant à la profondeur 0 : un arbre compte onze niveaux, et le chemin de la catégorie la plus profonde tient dans sa colonne de 420 caractères.

MéthodeCe qu'elle fait
createCategory($key, $parent, $names, $position)Une nouvelle catégorie ; une clé déjà prise est une InvalidTaxonomy
translate($category, $locale, $name, $description)Son nom dans une langue, créé ou modifié
name($category, $locale)fr_CA, sinon fr, sinon la langue de repli, sinon la clé
names($categories, $locale)Les noms de plusieurs catégories, par identifiant, leurs traductions lues en une seule requête : seulement celles de la langue, de sa langue de base et de la langue de repli
move($category, $parent, $position)La déplace avec sa branche ; sous elle-même ou sous sa branche, ou une branche dont la catégorie la plus profonde dépasserait la profondeur 10, est une InvalidTaxonomy
tree($locale)Des CategoryNode — catégorie, nom, enfants —, les sœurs triées par position puis par clé ; deux requêtes, quelle que soit la taille de l'arbre
categorize($resource, $categories), categoriesOf($resource)Donne à une ressource exactement ces catégories ; ses catégories
categorizedIn($category, $withDescendants, $kind)Les ressources d'une catégorie et, sauf indication contraire, de toute sa branche
mergeCategories($from, $into)Déplace les enfants et les ressources de la première vers la seconde, puis la retire avec ses noms ; l'arbre est lu une fois et les enfants sont écrits en un seul flush, quel que soit leur nombre

Une catégorie qui a des enfants ne peut pas être supprimée de la base de données — le parent de ses enfants l'en empêche — : fusionnez-la, ou déplacez d'abord ses enfants.