Classe Categories_management
Table des matières
Cette classe permet de gérer très simplement un système de catégories infinies (c'est-à-dire qu'une catégorie peut contenir des catégories et ceci de façon infinie). Pour pouvoir l'utiliser il suffit simplement de respecter certaines règles détaillées ici qui portent notamment sur votre base de données et votre fichier cache.
Voici plus précisément ce que propose cette classe :
Si vous souhaitez utiliser un système de catégories, il est fortement conseillé d'utiliser cette classe. Inutile de réinventer la roue pour chaque module. Cette classe est fiable et optimisée, elle vous évitera de plus énormément de travail, un tel système de catégories ne se fait pas en quelques heures. Cependant elle gère très peu d'interfaces, ce sera à vous de les faire. Elle s'occupera de toutes les opérations sur les catégories. Il vous faudra en revanche respecter quelques règles notamment concernant les structures des tables dans la base de données.
Cette classe du framework PHPBoost se trouve dans le fichier cats_management.class.php du répertoire includes. Il faudra donc systématiquement utiliser ce code avant de l'utiliser :
Cette classe est générique dans le sens ou elle est adaptable pour tout genre de module. Il faudra donc certainement l'adapter à chaque module (seuls les modules utilisant le système de catégories de façon très basique pourront se contenter de ce qu'elle contient). L'avantage de sa conception est qu'elle est très facilement personnalisable. Pour cela il suffit simplement de créer soi-même une classe héritant de la classe Cats_management. Cela permet de redéfinir des méthodes existantes ou d'en définir de nouvelles.
Voici un cas qui montre bien l'intérêt de cet héritage. Considérons un module (une galerie photos par exemple) avec des catégories qui contiennent des photos. Il est intéressant de savoir combien de photos contiennent chaque catégorie. Le problème est que lorsque nous allons déplacer une catégorie, si nous la mettons dans une autre catégorie le nombre de photos de son ancienne et de sa nouvelle catégorie va changer. On va donc dans ce cas redéfinir la méthode Move_category_into_another_category() dans laquelle on appellera la méthode générique ainsi que d'autres opérations qui s'occuperont de modifier le nombre de photos. Pour appeler la méthode de la classé générique dans la classe qu'on est en train de créer il faudra utiliser le mot clé parent :
Voici les différentes méthodes à votre disposition dans cette classe.
Introduction
Cette classe permet de gérer très simplement un système de catégories infinies (c'est-à-dire qu'une catégorie peut contenir des catégories et ceci de façon infinie). Pour pouvoir l'utiliser il suffit simplement de respecter certaines règles détaillées ici qui portent notamment sur votre base de données et votre fichier cache.
Ce que fait cette classe
Voici plus précisément ce que propose cette classe :
- Panneau d'administration des catégories (déplacement, modification, suppression, création) avec plusieurs de ces fonctions en AJAX.
- Génération de formulaire HTML de type select qui permet de faire choisir une catégorie lors de l'ajout d'un élément à l'intérieur par exemple (elle peut tenir compte des autorisations).
- Gérer la visibilité de chaque catégorie
Pourquoi utiliser cette classe ?
Si vous souhaitez utiliser un système de catégories, il est fortement conseillé d'utiliser cette classe. Inutile de réinventer la roue pour chaque module. Cette classe est fiable et optimisée, elle vous évitera de plus énormément de travail, un tel système de catégories ne se fait pas en quelques heures. Cependant elle gère très peu d'interfaces, ce sera à vous de les faire. Elle s'occupera de toutes les opérations sur les catégories. Il vous faudra en revanche respecter quelques règles notamment concernant les structures des tables dans la base de données.
Fonctionnement de la classe
Accès à la classe
Cette classe du framework PHPBoost se trouve dans le fichier cats_management.class.php du répertoire includes. Il faudra donc systématiquement utiliser ce code avant de l'utiliser :
Code PHP :
include_once('../includes/kernel/framework/categories.class.php');
Personnalisation
Cette classe est générique dans le sens ou elle est adaptable pour tout genre de module. Il faudra donc certainement l'adapter à chaque module (seuls les modules utilisant le système de catégories de façon très basique pourront se contenter de ce qu'elle contient). L'avantage de sa conception est qu'elle est très facilement personnalisable. Pour cela il suffit simplement de créer soi-même une classe héritant de la classe Cats_management. Cela permet de redéfinir des méthodes existantes ou d'en définir de nouvelles.
Voici un cas qui montre bien l'intérêt de cet héritage. Considérons un module (une galerie photos par exemple) avec des catégories qui contiennent des photos. Il est intéressant de savoir combien de photos contiennent chaque catégorie. Le problème est que lorsque nous allons déplacer une catégorie, si nous la mettons dans une autre catégorie le nombre de photos de son ancienne et de sa nouvelle catégorie va changer. On va donc dans ce cas redéfinir la méthode Move_category_into_another_category() dans laquelle on appellera la méthode générique ainsi que d'autres opérations qui s'occuperont de modifier le nombre de photos. Pour appeler la méthode de la classé générique dans la classe qu'on est en train de créer il faudra utiliser le mot clé parent :
Code PHP :
//On charge la classé générique include_once('../kernel/framework/categories.class.php'); //On étend cette classe afin de l'adapter à notre module class Mes_categories extends Cats_management { //Déclaration d'attributs/méthodes autres //Méthode de déplacement function Move_category_into_another_category($id, $new_id_cat, $position = 0) { //Déplacement grâce à la méthode générique parent::Move_category_into_another_category($id, $new_id_cat, $position); //Travail sur le nombre de catégories } }
Méthodes disponibles
Voici les différentes méthodes à votre disposition dans cette classe.
- Opérations sur les catégories
- Categories_management : constructeur de la classe. Permet d'instancier la classe avec sa propre configuration.
- Add_category : permet d'ajouter une catégorie
- Move_category : permet de déplacer une catégorie (monter ou descendre au sein de la même catégorie)
- Move_category_into_another_category : déplacement d'une catégorie dans une autre catégorie
- Delete_category : supprime une catégorie
- Change_category_visibility : change la visibilité de la catégorie
- Interfaces
- Set_displaying_configuration : établit la configuration d'affichage (par exemple le nom des fichiers qui gèrent les actions).
- Check_displaying_configuration : vérifie que la configuration actuelle est correcte
- Build_categories_administration_interface : crée l'interface d'administration des catégories
- Build_select_form : génère un formulaire de sélection de catégories (prend en compte si il le faut des autorisations).
- Check_error : détermine quelle erreur s'est produite (en pratique très utile pour le débuggage mais peu utilisé en production).
- Parcours d'arbre
- Build_children_id_list : crée la liste des catégories filles d'une catégorie.
- Build_parent_id_list : crée la liste des catégories parente d'une catégorie.