Rev 116 | Rev 249 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php//vim: set expandtab tabstop=4 shiftwidth=4:// Copyright (C) 1999-2006 Tela Botanica (accueil@tela-botanica.org)//// Ce logiciel est un programme informatique servant à gérer du contenu et des// applications web.// Ce logiciel est régi par la licence CeCILL soumise au droit français et// respectant les principes de diffusion des logiciels libres. Vous pouvez// utiliser, modifier et/ou redistribuer ce programme sous les conditions// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA// sur le site "http://www.cecill.info".// En contrepartie de l'accessibilité au code source et des droits de copie,// de modification et de redistribution accordés par cette licence, il n'est// offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,// seule une responsabilité restreinte pèse sur l'auteur du programme, le// titulaire des droits patrimoniaux et les concédants successifs.// A cet égard l'attention de l'utilisateur est attirée sur les risques// associés au chargement, à l'utilisation, à la modification et/ou au// développement et à la reproduction du logiciel par l'utilisateur étant// donné sa spécificité de logiciel libre, qui peut le rendre complexe à// manipuler et qui le réserve donc à des développeurs et des professionnels// avertis possédant des connaissances informatiques approfondies. Les// utilisateurs sont donc invités à charger et tester l'adéquation du// logiciel à leurs besoins dans des conditions permettant d'assurer la// sécurité de leurs systèmes et ou de leurs données et, plus généralement,// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez// pris connaissance de la licence CeCILL, et que vous en avez accepté les// termes.// ----// CVS : $Id: ezmlmAccessObject.class.php,v 1.3 2006-09-18 09:55:21 alexandre_tb Exp $/*** Application projet** La classe ezmlmAccessObject**@package projet//Auteur original :*@author Alexandre Granier <alexandre@tela-botanica.org>//Autres auteurs :*@author Aucun*@copyright Tela-Botanica 2000-2006*@version $Revision: 1.3 $// +------------------------------------------------------------------------------------------------------+*//** Etend XML_Parser_Simple */require_once 'XML/Parser/Simple.php' ;/*** Les codes erreurs*/define ('EZMLM_ACCESS_OBJECT_ACTION_NON_SUPPORTEE', 206) ;/*** classe ezmlmAccessObject parse les fichiers XML* issue de ezmlm** @category XML* @package projet* @author alex*/class ezmlmAccessObject extends XML_Parser_Simple {/*** Le domaine de la liste*/var $domaine ;/*** Le nom de la liste*/var $liste ;/*** Les actions valides*/var $actions_supportees = array ('calendrier_messages','message','derniers_messages','messages_auteur','messages_mois','messages_thread','supprimer');/*** l'action sélectionnée*/var $action ;/*** La langue 'fr-FR'*/var $langue ;/*** L'url de base*/var $url ;/*** L'identifiant du répertoire*/var $identifiant_repertoire ;/*** Identifiant message*/var $identifiant_message;/*** L'identifiant du répertoire*/var $_numeroRepertoireSuivant ;/*** L'identifiant du répertoire*/var $hash_auteur ;/*** Le mois à afficher*/var $mois ;var $_numeraRepertoirePrecedent;/*** Identifiant message*/var $_numeroFichierSuivant;var $_numeroFichierPrecedent;var $chemin_fichier_xml;/*** Creation de l'objet d'accès***/function ezmlmAccessObject ($action, $domaine, $liste, $langue = 'fr', $url = '') {$this->XML_Parser_Simple(null, 'func') ;$this->action = $action ;$this->domaine = $domaine ;$this->liste = $liste ;$this->langue = $langue ;$this->url = $url ;}/*** Gestion des balises** Cette méthode spécifie les balises reconnus par ezmlmAccessObject* Elle remplace la méthode handleElement de XML_Parser_Simple** @access public* @param string nom de l'élément (Voir la doc de PHP)* @param array attributes* @param* @link http://fr.php.net/manual/fr/ref.xml.php manuel*/function handleElement_ezmlm_message ($name, $attribs, $data) {echo $data ;}function handleElement_message_suivant ($name, $attribs, $data) {$this->_numeroRepertoireSuivant = $attribs['NUMERO_REPERTOIRE'] ;$this->_numeroFichierSuivant = $attribs['NUMERO'] ;}function handleElement_message_precedent ($name, $attribs, $data) {$this->_numeroRepertoirePrecedent = $attribs['NUMERO_REPERTOIRE'] ;$this->_numeroFichierPrecedent = $attribs['NUMERO'] ;}function handleElement_ezmlm_calendrier_messages ($name, $attribs, $data) { echo $data ; }function handleElement_ezmlm_derniers_messages ($name, $attribs, $data) { echo $data ; }function handleElement_ezmlm_messages_auteur ($name, $attribs, $data) { echo $data ; }function handleElement_ezmlm_messages_mois ($name, $attribs, $data) { echo $data ; }function handleElement_ezmlm_messages_thread ($name, $attribs, $data) { echo $data ; }/*** Choix de l'action** Liste des actions :* 'calendrier_messages'** @access public* @param string une action qui doit être supporté*/function setAction($action) {// vérification de l'actionif (!in_array($action, $this->actions_supportees)) {return raiseError(EZMLM_ACCESS_OBJECT_ACTION_NON_SUPPORTEE) ;}$this->action = $action ;// Libere les ressources (XML_Parser::free)$this->free();// Charge la nouvelle action$this->load() ;}/*** Charge une action** cad affecte un fichier xml au parser** @access public*/function load() {$this->chemin_fichier_xml = PROJET_SERVEUR_VPOPMAIL.'/'.$this->action.'.php?domaine='.$this->domaine.'&liste='.$this->liste.'&langue='.$this->langue ;if ($this->url != '') $this->chemin_fichier_xml.= '&url='.urlencode($this->url) ;if (isset ($this->identifiant_repertoire))$this->chemin_fichier_xml .= '&actionargs[]='.$this->identifiant_repertoire ;if (isset ($this->identifiant_message))$this->chemin_fichier_xml .= '&actionargs[]='.$this->identifiant_message ;if (isset ($this->hash_auteur))$this->chemin_fichier_xml .= '&actionargs[]='.$this->hash_auteur ;if (isset ($this->mois))$this->chemin_fichier_xml .= '&actionargs[]='.$this->mois ;$this->setInputFile($this->chemin_fichier_xml) ;}/*** Précise un message à extraire** On indique le numéro de répertoire ezmlm et le numéro du message* @param integer le numéro du répertoire* @param integer le numéro du message**/function setIdMessage ($identifiant_repertoire, $identifiant_message) {$this->identifiant_repertoire = $identifiant_repertoire ;$this->identifiant_message = $identifiant_message ;}/*** Précise un auteur** On indique le numéro de répertoire ezmlm et le numéro du message* @param string le hash d'un auteur**/function setHashAuteur ($hash_auteur) {$this->hash_auteur = $hash_auteur;}/*** Précise un mois** On indique le numéro de répertoire ezmlm et le numéro du message* @param string le hash d'un auteur**/function setMois ($mois) {$this->mois = $mois;}/*** Renvoi le numero du repertoire suivant***/function getNumeroRepertoireSuivant() { return $this->_numeroRepertoireSuivant; }function getNumeroFichierSuivant () { return $this->_numeroFichierSuivant ; }function getNumeroRepertoirePrecedent() { return $this->_numeroRepertoirePrecedent; }function getNumeroFichierPrecedent () { return $this->_numeroFichierPrecedent ; }function parse(){if (substr(phpversion(), 0, 1) == '5') {$xml = new SimpleXMLElement(file_get_contents($this->chemin_fichier_xml));echo utf8_decode ($xml);switch ($this->action) {case 'calendrier_messages' : echo utf8_decode($xml->ezmlm_calendrier_messages);}} else {return parent::parse();}}}?>