New file |
0,0 → 1,335 |
<?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 regi par la licence CeCILL soumise au droit francais 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 diffusee par le CEA, le CNRS et l'INRIA |
// sur le site "http://www.cecill.info". |
|
// En contrepartie de l'accessibilite au code source et des droits de copie, |
// de modification et de redistribution accordes par cette licence, il n'est |
// offert aux utilisateurs qu'une garantie limitee. Pour les memes raisons, |
// seule une responsabilite restreinte pese sur l'auteur du programme, le |
// titulaire des droits patrimoniaux et les concedants successifs. |
|
// A cet egard l'attention de l'utilisateur est attiree sur les risques |
// associes au chargement, a l'utilisation, a la modification et/ou au |
// developpement et a la reproduction du logiciel par l'utilisateur etant |
// donne sa specificite de logiciel libre, qui peut le rendre complexe a |
// manipuler et qui le reserve donc a des developpeurs et des professionnels |
// avertis possedant des connaissances informatiques approfondies. Les |
// utilisateurs sont donc invites a charger et tester l'adequation du |
// logiciel a leurs besoins dans des conditions permettant d'assurer la |
// securite de leurs systemes et ou de leurs donnees et, plus generalement, |
// a l'utiliser et l'exploiter dans les memes conditions de securite. |
|
// Le fait que vous puissiez acceder a cet en-tete signifie que vous avez |
// pris connaissance de la licence CeCILL, et que vous en avez accepte les |
// termes. |
// ---- |
// CVS : $Id: ezmlmAccessObject.class.php,v 1.5 2007-06-25 12:15:06 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.5 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
/** 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', |
'liste_abonnes'); |
|
/** |
* l'action selectionnee |
*/ |
var $action ; |
|
/** |
* La langue 'fr-FR' |
*/ |
var $langue ; |
|
/** |
* L'url de base |
*/ |
var $url ; |
|
/** |
* L'identifiant du repertoire |
*/ |
var $identifiant_repertoire ; |
|
/** |
* Identifiant message |
*/ |
|
var $identifiant_message; |
|
/** |
* L'identifiant du repertoire |
*/ |
var $_numeroRepertoireSuivant ; |
|
/** |
* L'identifiant du repertoire |
*/ |
var $hash_auteur ; |
|
/** |
* Le mois a afficher |
*/ |
var $mois ; |
|
var $_numeraRepertoirePrecedent; |
|
/** |
* Identifiant message |
*/ |
|
var $_numeroFichierSuivant; |
|
var $_numeroFichierPrecedent; |
|
var $chemin_fichier_xml; |
|
/** |
* Creation de l'objet d'acces |
* |
*/ |
|
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 ; } |
|
function handleElement_ezmlm_liste_abonnes ($name, $attribs, $data) { echo $data ; } |
/** |
* Choix de l'action |
* |
* Liste des actions : |
* 'calendrier_messages' |
* |
* @access public |
* @param string une action qui doit etre supporté |
*/ |
|
function setAction($action) { |
// verification de l'action |
if (!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(); |
|
// On vide l url |
//$this->url = ''; |
$this->chemin_fichier_xml = ''; |
// 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) ; |
} |
|
/** |
* Precise un message a extraire |
* |
* On indique le numero de repertoire ezmlm et le numero du message |
* @param integer le numero du repertoire |
* @param integer le numero du message |
* |
*/ |
|
function setIdMessage ($identifiant_repertoire, $identifiant_message) { |
$this->identifiant_repertoire = $identifiant_repertoire ; |
$this->identifiant_message = $identifiant_message ; |
} |
|
/** |
* Precise un auteur |
* |
* On indique le numero de repertoire ezmlm et le numero du message |
* @param string le hash d'un auteur |
* |
*/ |
|
function setHashAuteur ($hash_auteur) { |
$this->hash_auteur = $hash_auteur; |
} |
/** |
* Precise un mois |
* |
* On indique le numero de repertoire 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') { |
//try { |
$xml = new SimpleXMLElement($this->chemin_fichier_xml, null, true); |
switch ($this->action) { |
case 'calendrier_messages' :echo utf8_decode($xml); |
echo utf8_decode($xml->ezmlm_calendrier_messages); |
break; |
case 'message': |
echo utf8_decode ($xml); |
$this->_numeroRepertoirePrecedent = $xml->message_precedent['numero_repertoire']; |
$this->_numeroRepertoireSuivant = $xml->message_suivant['numero_repertoire']; |
$this->_numeroFichierSuivant = $xml->message_suivant['numero']; |
$this->_numeroFichierPrecedent = $xml->message_precedent['numero']; |
break; |
default : |
echo utf8_decode($xml); |
} |
$error = 'Erreur dans l\'accès au fichier:<br />'.$this->chemin_fichier_xml.'<br />'; |
$error = ''; |
// throw new Exception($error); |
//} |
//catch (Exception $e) { |
// echo $e->getMessage(). "<br />"; |
//} |
|
} else { |
return parent::parse(); |
} |
} |
} |
|
?> |