Subversion Repositories Applications.papyrus

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
821 alexandre_ 1
<?php
2
//vim: set expandtab tabstop=4 shiftwidth=4:
3
 
4
// Copyright (C) 1999-2006 Tela Botanica (accueil@tela-botanica.org)
5
//
6
// Ce logiciel est un programme informatique servant à gérer du contenu et des
7
// applications web.
8
 
9
// Ce logiciel est régi par la licence CeCILL soumise au droit français et
10
// respectant les principes de diffusion des logiciels libres. Vous pouvez
11
// utiliser, modifier et/ou redistribuer ce programme sous les conditions
12
// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
13
// sur le site "http://www.cecill.info".
14
 
15
// En contrepartie de l'accessibilité au code source et des droits de copie,
16
// de modification et de redistribution accordés par cette licence, il n'est
17
// offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
18
// seule une responsabilité restreinte pèse sur l'auteur du programme,  le
19
// titulaire des droits patrimoniaux et les concédants successifs.
20
 
21
// A cet égard  l'attention de l'utilisateur est attirée sur les risques
22
// associés au chargement,  à l'utilisation,  à la modification et/ou au
23
// développement et à la reproduction du logiciel par l'utilisateur étant
24
// donné sa spécificité de logiciel libre, qui peut le rendre complexe à
25
// manipuler et qui le réserve donc à des développeurs et des professionnels
26
// avertis possédant  des  connaissances  informatiques approfondies.  Les
27
// utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
28
// logiciel à leurs besoins dans des conditions permettant d'assurer la
29
// sécurité de leurs systèmes et ou de leurs données et, plus généralement,
30
// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
31
 
32
// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
33
// pris connaissance de la licence CeCILL, et que vous en avez accepté les
34
// termes.
35
// ----
882 alexandre_ 36
// CVS : $Id: ezmlmAccessObject.class.php,v 1.2 2006-07-04 08:46:07 alexandre_tb Exp $
821 alexandre_ 37
 
38
/**
39
* Application projet
40
*
41
* La classe ezmlmAccessObject
42
*
43
*@package projet
44
//Auteur original :
45
*@author        Alexandre Granier <alexandre@tela-botanica.org>
46
//Autres auteurs :
47
*@author        Aucun
48
*@copyright     Tela-Botanica 2000-2006
882 alexandre_ 49
*@version       $Revision: 1.2 $
821 alexandre_ 50
// +------------------------------------------------------------------------------------------------------+
51
*/
52
 
53
/** Etend XML_Parser_Simple */
54
require_once 'XML/Parser/Simple.php' ;
55
 
56
/**
57
 * Les codes erreurs
58
 */
59
 
60
define ('EZMLM_ACCESS_OBJECT_ACTION_NON_SUPPORTEE', 206) ;
61
/**
62
 * classe ezmlmAccessObject parse les fichiers XML
63
 * issue de ezmlm
64
 *
65
 * @category XML
66
 * @package projet
67
 * @author alex
68
 */
69
 
70
class ezmlmAccessObject extends XML_Parser_Simple {
71
 
72
	/**
73
	 * Le domaine de la liste
74
	 */
75
 
76
	var $domaine ;
77
 
78
	 /**
79
	  * Le nom de la liste
80
	 */
81
 
82
	var $liste ;
83
 
84
	  /**
85
	  * Les actions valides
86
	  */
87
 
88
	var $actions_supportees = array ('calendrier_messages',
882 alexandre_ 89
									 'message',
90
									 'derniers_messages',
91
									 'messages_auteur',
92
									 'messages_mois',
93
									 'messages_thread',
94
									 'supprimer');
821 alexandre_ 95
 
96
	/**
97
	* l'action sélectionnée
98
	*/
99
	var $action ;
100
 
101
	/**
102
	 * La langue 'fr-FR'
103
	 */
104
	 var $langue ;
105
 
106
	/**
107
	 * L'url de base
108
	 */
109
	 var $url ;
110
 
111
	/**
112
	 * L'identifiant du répertoire
113
	 */
114
	var $identifiant_repertoire ;
115
 
116
	/**
117
	 * Identifiant message
118
	 */
119
 
120
	var $identifiant_message;
121
 
122
	/**
123
	 * L'identifiant du répertoire
124
	 */
125
	var $_numeroRepertoireSuivant ;
126
 
882 alexandre_ 127
	/**
128
	 * L'identifiant du répertoire
129
	 */
130
	var $hash_auteur ;
131
 
132
	/**
133
	 * Le mois à afficher
134
	 */
135
	var $mois ;
136
 
821 alexandre_ 137
	var $_numeraRepertoirePrecedent;
138
 
139
	/**
140
	 * Identifiant message
141
	 */
142
 
143
	var $_numeroFichierSuivant;
144
 
145
	var $_numeroFichierPrecedent;
146
 
147
	/**
148
	 * Creation de l'objet d'accès
149
	 *
150
	 *
151
	 */
152
 
153
	function ezmlmAccessObject ($action, $domaine, $liste, $langue = 'fr', $url = '') {
154
		$this->XML_Parser_Simple(null, 'func') ;
155
		$this->action = $action ;
156
		$this->domaine = $domaine ;
157
		$this->liste = $liste ;
158
		$this->langue = $langue ;
159
		$this->url = $url ;
160
	}
161
 
162
	/**
163
	 * Gestion des balises
164
	 *
165
	 * Cette méthode spécifie les balises reconnus par ezmlmAccessObject
166
	 * Elle remplace la méthode handleElement de XML_Parser_Simple
167
	 *
168
	 * @access public
169
	 * @param string nom de l'élément (Voir la doc de PHP)
170
	 * @param array attributes
171
	 * @param
172
	 * @link http://fr.php.net/manual/fr/ref.xml.php manuel
173
	 */
174
 
175
	function handleElement_ezmlm_message ($name, $attribs, $data) {
176
		echo $data ;
177
	}
178
 
179
	function handleElement_message_suivant ($name, $attribs, $data) {
180
		$this->_numeroRepertoireSuivant = $attribs['NUMERO_REPERTOIRE'] ;
181
		$this->_numeroFichierSuivant = $attribs['NUMERO'] ;
182
	}
183
 
184
	function handleElement_message_precedent ($name, $attribs, $data) {
185
		$this->_numeroRepertoirePrecedent = $attribs['NUMERO_REPERTOIRE'] ;
186
		$this->_numeroFichierPrecedent = $attribs['NUMERO'] ;
187
	}
188
	function handleElement_ezmlm_calendrier_messages ($name, $attribs, $data) { echo $data ; }
882 alexandre_ 189
 
190
	function handleElement_ezmlm_derniers_messages ($name, $attribs, $data) { echo $data ; }
191
 
192
	function handleElement_ezmlm_messages_auteur ($name, $attribs, $data) { echo $data ; }
193
 
194
	function handleElement_ezmlm_messages_mois ($name, $attribs, $data) { echo $data ; }
195
 
196
	function handleElement_ezmlm_messages_thread ($name, $attribs, $data) { echo $data ; }
197
 
821 alexandre_ 198
	/**
199
	 * Choix de l'action
200
	 *
201
	 * Liste des actions :
202
	 * 'calendrier_messages'
203
	 *
204
	 * @access public
205
	 * @param string	une action qui doit être supporté
206
	 */
207
 
208
	function setAction($action) {
209
		// vérification de l'action
210
		if (!in_array($action, $this->actions_supportees)) {
211
			return raiseError(EZMLM_ACCESS_OBJECT_ACTION_NON_SUPPORTEE) ;
212
		}
213
		$this->action = $action ;
214
 
215
		// Libere les ressources (XML_Parser::free)
216
		$this->free();
217
 
218
		// Charge la nouvelle action
219
		$this->load() ;
220
	}
221
 
222
	/**
223
	 * Charge une action
224
	 *
225
	 * cad affecte un fichier xml au parser
226
	 *
227
	 * @access public
228
	 */
229
	function load() {
230
		$chemin_fichier_xml = PROJET_SERVEUR_VPOPMAIL.'/'.$this->action.'.php?domaine='.
231
                         $this->domaine.'&liste='.$this->liste.'&langue='.
232
                         $this->langue ;
233
		if ($this->url != '') $chemin_fichier_xml.= '&url='.urlencode($this->url) ;
234
		if (isset ($this->identifiant_repertoire))
235
			$chemin_fichier_xml .= '&actionargs[]='.$this->identifiant_repertoire ;
236
		if (isset ($this->identifiant_message))
237
			$chemin_fichier_xml .= '&actionargs[]='.$this->identifiant_message ;
882 alexandre_ 238
		if (isset ($this->hash_auteur))
239
			$chemin_fichier_xml .= '&actionargs[]='.$this->hash_auteur ;
240
		if (isset ($this->mois))
241
			$chemin_fichier_xml .= '&actionargs[]='.$this->mois ;
821 alexandre_ 242
 
243
		$this->setInputFile($chemin_fichier_xml) ;
244
	}
245
 
246
	/**
247
	 * Précise un message à extraire
248
	 *
249
	 * On indique le numéro de répertoire ezmlm et le numéro du message
250
	 * @param	integer	le numéro du répertoire
251
	 * @param 	integer le numéro du message
252
	 *
253
	 */
254
 
255
	 function setIdMessage ($identifiant_repertoire, $identifiant_message) {
256
	 	$this->identifiant_repertoire = $identifiant_repertoire ;
257
	 	$this->identifiant_message = $identifiant_message ;
258
	 }
259
 
882 alexandre_ 260
	 	/**
261
	 * Précise un auteur
262
	 *
263
	 * On indique le numéro de répertoire ezmlm et le numéro du message
264
	 * @param	string	le hash d'un auteur
265
	 *
266
	 */
267
 
268
	 function setHashAuteur ($hash_auteur) {
269
	 	$this->hash_auteur = $hash_auteur;
270
	 }
821 alexandre_ 271
	 /**
882 alexandre_ 272
	 * Précise un mois
273
	 *
274
	 * On indique le numéro de répertoire ezmlm et le numéro du message
275
	 * @param	string	le hash d'un auteur
276
	 *
277
	 */
278
 
279
	 function setMois ($mois) {
280
	 	$this->mois = $mois;
281
	 }
282
 
283
	 /**
821 alexandre_ 284
	  * Renvoi le numero du repertoire suivant
285
	  *
286
	  *
287
	 */
288
	 function getNumeroRepertoireSuivant() { return $this->_numeroRepertoireSuivant; }
289
 
290
	 function getNumeroFichierSuivant () { return $this->_numeroFichierSuivant ; }
291
 
292
	 function getNumeroRepertoirePrecedent() { return $this->_numeroRepertoirePrecedent; }
293
 
294
	 function getNumeroFichierPrecedent () { return $this->_numeroFichierPrecedent ; }
295
}
296
 
297
?>