eZ Role
Publié le 24 août 2009 | 8 commentaire(s) | Tags : extension |
eZ Role est une extension eZpublish . Elle permet d'exporter/importer les rôles via des fichiers formatés en YAML. Cette extension est encore en alpha, mais vous pouvez déjà d'or et déjà la trouver à l'adresse suivante : http://projects.ez.no/ezinstall
Comme petite histoire pour le dépot, l'extension se nommait à la base eZ Install. L'objectif de l'extension était de pouvoir créer/modifier les classes et les rôles. Comme eZ publish implémente l'utilisation des packages, les différentes fonctionnalités sur les classes étaient redondantes. Je me suis exclusivement porté sur l'import/export des rôles et droits. Je l'ai donc renommée en eZ Role.
Je vais expliquer brievement les quelques points que je juge intéressant, au cas où ca vous donne des idées.
Pour avoir une idée des différents choix techniques, voici une petite idée des différents objectifs de mon extension :
- bonne intégration à eZ publish : histoire de faciliter le plus possible l'utilisation de cette extension, j'ai intégré le plus possible les différentes fonctions au sein des templates déjà existants d'eZ publish.
- format des fichiers simples : l'idée est qu'on peut les lire facilement, ou les créer aussi facilement à la main, histoire de ne pas avoir à passer par l'interface de création de droits. Le format YAML a été choisit pour ça.
Lire/écrire les fichiers YAML
Pour manier les fichiers YAML, j'utilise la classe Spyc . Cette classe fournit des fonctions simples à utiliser.
require_once "spyc.php"; // Charge un fichier YAML dans une variable $data = Spyc::YAMLLoad('spyc.yaml'); // Transforme le contenu d'une variable PHP au format YAML $content = Spyc::YAMLDump( $data );
eZ publish - Téléchargement d'un fichier
Lors de l'exportation, je récupère les droits dans une variable php, avant de la transformer au format YAML. Au lieu d'écrire le résultat de l'exportation sur le serveur en lui même, j'ai fouillé un peu la classe eZFile. Gràce à cette classe, j'ai trouvé une petite méthode me permettant de proposer directement en téléchargement le fichier. Voici les différentes lignes que j'ai utilisé :
eZFile::create( $fileName , false, $content ); eZFile::download( $fileName );
Ces 2 fonctions permettent de créer le fichier, et de le proposer directement en téléchargement, sans écrire sur le disque.
eZSiteInstaller - updateRoles
La classe eZSiteInstaller fournit de nombreuses méthodes assez sympas, tel que updateRoles, addClassAttributes. Elle vaut le détour cette petite classe.
La méthode updateRoles prend en paramètre un tableau, et permet de créer/modifier les différents rôles qu'elle trouve dans le tableau fournit.
Méthode très simple à faire, et qui m'a permis d'écrire qu'une dizaine de ligne pour importer les rôles.
TODO
L'extension va encore subir quelques modifications, tel que l'utilisation des remote_id pour faire la correspondance entre diverses instances eZpublish .
J'hésite dans la possibilité de mettre en place une interface permettant de choisir quelles polices mettre à jour.
Commentaires
#1 - Le 26 août 09 par Jérôme
#2 - Le 26 août 09 par Damien
#3 - Le 26 août 09 par Frefred
#4 - Le 26 août 09 par truffo
#5 - Le 27 août 09 par Frefred
#6 - Le 27 août 09 par Damien
#7 - Le 31 août 09 par Jérôme V.
#8 - Le 01 sept 09 par frefred
Ajouter un commentaire