Subversion Repositories Applications.projet

Rev

Rev 136 | Rev 249 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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