Subversion Repositories Applications.wikini

Rev

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

Rev 39 Rev 40
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Web service de consultation d'un page wiki
4
 * Web service de consultation d'un page wiki
5
 *
5
 *
6
 * @category	php 5.2
6
 * @category	php 5.2
7
 * @package		wapi
7
 * @package		wapi
8
 * @author		Aurélien Peronnet < aurelien@tela-botanica.org>
8
 * @author		Aurélien Peronnet < aurelien@tela-botanica.org>
9
 * @author		Jean-Pascal Milcent < jpm@tela-botanica.org>
9
 * @author		Jean-Pascal Milcent < jpm@tela-botanica.org>
10
 * @copyright	Copyright (c) 2011, Tela Botanica (accueil@tela-botanica.org)
10
 * @copyright	Copyright (c) 2011, Tela Botanica (accueil@tela-botanica.org)
11
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @version		$Id$
13
 * @version		$Id$
14
 */
14
 */
15
class Pages extends Service {
15
class Pages extends Service {
16
	
16
	
17
	private $wiki = null;
17
	private $wiki = null;
18
	private $pageNom = null;
18
	private $pageNom = null;
19
	private $section = null;
19
	private $section = null;
-
 
20
	private $creerPage = false;
-
 
21
	private $templateDefaut = null;
20
	
22
	
21
	private $retour = 'txt';
23
	private $retour = 'txt';
22
	private $formats_retour = array('text/plain','text/html');
24
	private $formats_retour = array('text/plain','text/html');
23
	private $format_texte;
25
	private $format_texte;
24
	
26
	
25
	const MIME_JSON = 'application/json';
27
	const MIME_JSON = 'application/json';
26
	const MIME_HTML = 'text/html';
28
	const MIME_HTML = 'text/html';
27
	const MIME_TEXT = 'text/plain';
29
	const MIME_TEXT = 'text/plain';
28
	
30
	
29
	public function consulter($ressources, $parametres) {
31
	public function consulter($ressources, $parametres) {
30
		
32
		
31
		try {
33
		try {
32
			$this->definirValeurParDefautDesParametres();
34
			$this->definirValeurParDefautDesParametres();
33
			$this->verifierParametres($parametres);
35
			$this->verifierParametres($parametres);
34
			$this->analyserParametres($ressources, $parametres);
36
			$this->analyserParametres($ressources, $parametres);
35
			
37
			
36
			$page = $this->consulterPage($this->pageNom, $this->section);
38
			$page = $this->consulterPage($this->pageNom, $this->section);
37
			
39
			
38
			// on devrait normalement renvoyer une erreur 404 mais 
40
			// on devrait normalement renvoyer une erreur 404 mais 
39
			// l'api de consultation d'url du framework prend mal en compte 
41
			// l'api de consultation d'url du framework prend mal en compte 
40
			// le 404 et ne permet pas de le traiter quand on le recoit
42
			// le 404 et ne permet pas de le traiter quand on le recoit
41
			$page['existe'] = ($page != null);
43
			if($page == null && $this->creerPage) {
-
 
44
				$this->creerPageAPartirTemplate($this->pageNom, $this->templateDefaut);
-
 
45
				$page = $this->consulterPage($this->pageNom, $this->section);
-
 
46
			}
-
 
47
			
42
			$retour = $this->formaterRetour($page);
48
			$retour = $this->formaterRetour($page);
43
			
49
			
44
			$this->envoyerContenuJson($retour);
50
			$this->envoyerContenuJson($retour);
45
		} catch (Exception $e) {
51
		} catch (Exception $e) {
46
			$this->envoyerErreur($e);
52
			$this->envoyerErreur($e);
47
		}
53
		}
48
	}
54
	}
49
	
55
	
50
	private function definirValeurParDefautDesParametres() {
56
	private function definirValeurParDefautDesParametres() {
51
		if (isset($this->parametres['txt_format']) == false) {
57
		if (isset($this->parametres['txt_format']) == false) {
52
			$this->parametres['txt_format'] = 'text/plain';
58
			$this->parametres['txt_format'] = 'text/plain';
53
		}
59
		}
54
	}
60
	}
55
	
61
	
56
	private function verifierParametres($parametres) {
62
	private function verifierParametres($parametres) {
57
		$erreurs = array();
63
		$erreurs = array();
58
		
64
		
59
		if (isset($parametres['txt_format'])) {
65
		if (isset($parametres['txt_format'])) {
60
			if(!in_array($parametres['txt_format'], $this->formats_retour)) {
66
			if(!in_array($parametres['txt_format'], $this->formats_retour)) {
61
				$message = "La valeur du paramètre 'txt.format' peut seulement prendre les valeurs : text/plain et text/html.";
67
				$message = "La valeur du paramètre 'txt.format' peut seulement prendre les valeurs : text/plain et text/html.";
62
				$erreurs[] = $message;
68
				$erreurs[] = $message;
63
			}
69
			}
64
		}
70
		}
65
		
71
		
66
		if (isset($parametres['txt_section_position']) && !is_numeric($parametres['txt_section_position'])) {
72
		if (isset($parametres['txt_section_position']) && !is_numeric($parametres['txt_section_position'])) {
67
			$message = "La valeur du paramètre 'txt.section.position' peut seulement prendre des valeurs numeriques";
73
			$message = "La valeur du paramètre 'txt.section.position' peut seulement prendre des valeurs numeriques";
68
			$erreurs[] = $message;
74
			$erreurs[] = $message;
69
		}
75
		}
70
		
76
		
71
		if (isset($parametres['txt_section_titre']) && trim($parametres['txt_section_titre']) == '') {
77
		if (isset($parametres['txt_section_titre']) && trim($parametres['txt_section_titre']) == '') {
72
			$message = "La valeur du paramètre 'txt.section.titre' ne peut pas être vide si celui-ci est présent";
78
			$message = "La valeur du paramètre 'txt.section.titre' ne peut pas être vide si celui-ci est présent";
73
			$erreurs[] = $message;
79
			$erreurs[] = $message;
74
		}
80
		}
-
 
81
		
-
 
82
		if (isset($parametres['txt_section_titre']) && trim($parametres['txt_section_titre']) == '') {
-
 
83
			$message = "La valeur du paramètre 'txt.section.titre' ne peut pas être vide si celui-ci est présent";
-
 
84
			$erreurs[] = $message;
-
 
85
		}
-
 
86
		
-
 
87
		if (isset($parametres['txt_template']) && trim($parametres['txt_template']) == '') {
-
 
88
			$message = "La valeur du paramètre 'txt_template' ne peut pas être vide si celui-ci est présent";
-
 
89
			$erreurs[] = $message;
-
 
90
		}
75
				
91
				
76
		if (count($erreurs) > 0) {
92
		if (count($erreurs) > 0) {
77
			$message = implode('<br />', $erreurs);
93
			$message = implode('<br />', $erreurs);
78
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
94
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
79
			throw new Exception($message, $code);
95
			throw new Exception($message, $code);
80
		}
96
		}
81
	}
97
	}
82
	
98
	
83
	private function analyserParametres($ressources, $parametres) {	
99
	private function analyserParametres($ressources, $parametres) {	
84
		$this->pageNom = $ressources[0];
100
		$this->pageNom = $ressources[0];
85
		if (isset($parametres['txt_section_titre'])) {
101
		if (isset($parametres['txt_section_titre'])) {
86
			$this->section = $parametres['txt_section_titre'];
102
			$this->section = $parametres['txt_section_titre'];
87
		}
103
		}
88
		if (isset($parametres['txt_section_position'])) {
104
		if (isset($parametres['txt_section_position'])) {
89
			$this->section = $parametres['txt_section_position'];
105
			$this->section = $parametres['txt_section_position'];
90
		}
106
		}
91
		if (isset($parametres['txt_format'])) {
107
		if (isset($parametres['txt_format'])) {
92
			$this->retour = $parametres['txt_format'];
108
			$this->retour = $parametres['txt_format'];
93
		}
109
		}
-
 
110
		if (isset($parametres['txt_template'])) {
-
 
111
			$this->creerPage = true;
-
 
112
			$this->templateDefaut = $parametres['txt_template'];
-
 
113
		}
94
	}
114
	}
95
	
115
	
96
	private function consulterPage($page, $section = null) {
116
	private function consulterPage($page, $section = null) {
97
		
117
		
98
		$this->wiki = Registre::get('wikiApi');
118
		$this->wiki = Registre::get('wikiApi');
99
		$this->wiki->setPageCourante($this->pageNom);
119
		$this->wiki->setPageCourante($this->pageNom);
100
		$page = $this->wiki->LoadPage($page);
120
		$page = $this->wiki->LoadPage($page);
101
				
121
				
102
		if ($page != null) {
122
		if ($page != null) {
103
			// attention les wikis sont souvent en ISO !
123
			// attention les wikis sont souvent en ISO !
104
			$page["body"] = $this->convertirTexteWikiVersEncodageAppli($page['body']);
124
			$page["body"] = $this->convertirTexteWikiVersEncodageAppli($page['body']);
105
			if($section != null) {
125
			if($section != null) {
106
				$page["body"] = $this->decouperPageSection($page["body"], $section);
126
				$page["body"] = $this->decouperPageSection($page["body"], $section);
107
			}
127
			}
108
		}
128
		}
109
	
129
	
110
		return $page;
130
		return $page;
111
	}
131
	}
112
	
132
	
113
	private function decouperPageSection($contenu_page, $section) {
133
	private function decouperPageSection($contenu_page, $section) {
114
		$section_retour = '';
134
		$section_retour = '';
115
		if (is_numeric($section)) {
135
		if (is_numeric($section)) {
116
			$section_retour =  $this->getSectionParNumero($contenu_page, $section);
136
			$section_retour =  $this->getSectionParNumero($contenu_page, $section);
117
		} else {
137
		} else {
118
			$section_retour =  $this->getSectionParTitre($contenu_page, $section, false);
138
			$section_retour =  $this->getSectionParTitre($contenu_page, $section, false);
119
		}
139
		}
120
		return $section_retour;
140
		return $section_retour;
121
	}
141
	}
122
	
142
	
123
	public function getSectionParNumero($page, $num) {
143
	public function getSectionParNumero($page, $num) {
124
		preg_match_all('/(=[=]+[ ]*)(.[.^=]*)+[ ]*=[=]+[.]*/i', $page, $sections, PREG_OFFSET_CAPTURE);
144
		preg_match_all('/(=[=]+[ ]*)(.[.^=]*)+[ ]*=[=]+[.]*/i', $page, $sections, PREG_OFFSET_CAPTURE);
125
		$sectionTxt = '';
145
		$sectionTxt = '';
126
		$debut_section = 0;
146
		$debut_section = 0;
127
		$lg_page = strlen($page);
147
		$lg_page = strlen($page);
128
		$fin_section = $lg_page;
148
		$fin_section = $lg_page;
129
		
149
		
130
		if ($num <= count($sections[1]) && $num > 0) {	
150
		if ($num <= count($sections[1]) && $num > 0) {	
131
						
151
						
132
			$debut_section = $sections[1][$num - 1][1];
152
			$debut_section = $sections[1][$num - 1][1];
133
			$separateur = trim($sections[1][$num - 1][0]);
153
			$separateur = trim($sections[1][$num - 1][0]);
134
			$separateur_trouve = false;
154
			$separateur_trouve = false;
135
						
155
						
136
			for ($i = $num; $i < count($sections[1]); $i++) {
156
			for ($i = $num; $i < count($sections[1]); $i++) {
137
				$fin_section = $sections[1][$i][1];
157
				$fin_section = $sections[1][$i][1];
138
				if($separateur == trim($sections[1][$i][0])) {
158
				if($separateur == trim($sections[1][$i][0])) {
139
					$separateur_trouve = true;
159
					$separateur_trouve = true;
140
					break;
160
					break;
141
				}
161
				}
142
			}
162
			}
143
			
163
			
144
			$fin_section = $separateur_trouve ? $fin_section : $lg_page;
164
			$fin_section = $separateur_trouve ? $fin_section : $lg_page;
145
			$sectionTxt = substr($page, $debut_section, $fin_section - $debut_section);
165
			$sectionTxt = substr($page, $debut_section, $fin_section - $debut_section);
146
			
166
			
147
		} else {
167
		} else {
148
			$sectionTxt = '';
168
			$sectionTxt = '';
149
		}
169
		}
150
 
170
 
151
		return $sectionTxt;
171
		return $sectionTxt;
152
	}
172
	}
153
	
173
	
154
	public function getSectionParTitre($page, $titre, $inclure_titre = false) {
174
	public function getSectionParTitre($page, $titre, $inclure_titre = false) {
155
		$section = '';
175
		$section = '';
156
		$reg_exp = '/((=[=]+)[ ]*'.preg_quote(trim($titre), '/').'[ ]*=[=]+)[.]*/i';
176
		$reg_exp = '/((=[=]+)[ ]*'.preg_quote(trim($titre), '/').'[ ]*=[=]+)[.]*/i';
157
		$match = preg_split($reg_exp, $page, 2, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
177
		$match = preg_split($reg_exp, $page, 2, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
158
		if (count($match) > 3) {
178
		if (count($match) > 3) {
159
			$section = explode(trim($match[2]), $match[3], 2);
179
			$section = explode(trim($match[2]), $match[3], 2);
160
			$section = $section[0];
180
			$section = $section[0];
161
			$section = ($inclure_titre) ? $match[1].$section : $section;
181
			$section = ($inclure_titre) ? $match[1].$section : $section;
162
		} elseif (count($match) == 3) {
182
		} elseif (count($match) == 3) {
163
			$section = explode(trim($match[1]), $match[2], 2);
183
			$section = explode(trim($match[1]), $match[2], 2);
164
			$section = $section[0];
184
			$section = $section[0];
165
			$section = ($inclure_titre) ? $match[0].$section : $section;
185
			$section = ($inclure_titre) ? $match[0].$section : $section;
166
		} else {
186
		} else {
167
			$section = "";
187
			$section = "";
168
		}
188
		}
169
		
189
		
170
		return $section;
190
		return $section;
171
	}
191
	}
172
	
192
	
173
	private function formaterRetour($page) {
193
	private function formaterRetour($page) {
174
 
194
 
175
		$mime = null;
195
		$mime = null;
176
		$texte = '';
196
		$texte = '';
177
		
197
		
178
		switch ($this->retour) {
198
		switch ($this->retour) {
179
			case self::MIME_HTML:
199
			case self::MIME_HTML:
180
				$texte = $this->wiki->Format($page["body"], "wakka");
200
				$texte = $this->wiki->Format($page["body"], "wakka");
181
				$mime = self::MIME_HTML;
201
				$mime = self::MIME_HTML;
182
				break;
202
				break;
183
			default:
203
			default:
184
				$texte = $page["body"];
204
				$texte = $page["body"];
185
				$mime = self::MIME_TEXT;
205
				$mime = self::MIME_TEXT;
186
		}
206
		}
187
		
207
		
188
		$url = $this->wiki->Href("", $this->pageNom);
208
		$url = $this->wiki->Href("", $this->pageNom);
189
		
209
		
190
		$retour = array('id' => $this->pageNom,
210
		$retour = array('id' => $this->pageNom,
191
				'titre' => $this->pageNom,
211
				'titre' => $this->pageNom,
192
				'mime' => $mime,
212
				'mime' => $mime,
193
				'texte' => $texte,
213
				'texte' => $texte,
194
				'href' => $url,
214
				'href' => $url);
195
				'existe' => $page['existe']);
-
 
196
		
215
		
197
		return $retour;
216
		return $retour;
198
	}
217
	}
-
 
218
	
-
 
219
	private function creerPageAPartirTemplate($tag_page_a_creer, $tag_template) {
-
 
220
		$page_template = $this->consulterPage($tag_template);
-
 
221
		$corps_nouvelle_page = ($page_template != null) ? $page_template['body'] : '';
-
 
222
		// si le template n'existe pas, la page créée sera vide
-
 
223
		$ecriture = $this->ecrirePage($tag_page_a_creer, $corps_nouvelle_page);	
-
 
224
		
-
 
225
		return $ecriture;
-
 
226
	}
199
	
227
	
200
	public function ajouter($ressources, $requeteDonnees) {
228
	public function ajouter($ressources, $requeteDonnees) {
201
		return $this->modifier($ressources, $requeteDonnees);
229
		return $this->modifier($ressources, $requeteDonnees);
202
	}
230
	}
203
	
231
	
204
	public function modifier($ressources, $requeteDonnees) {
232
	public function modifier($ressources, $requeteDonnees) {
205
 
233
 
206
		$requeteDonnees['pageTag'] = $ressources[0];
234
		$requeteDonnees['pageTag'] = $ressources[0];
207
		$this->verifierParametresEcriture($requeteDonnees);
235
		$this->verifierParametresEcriture($requeteDonnees);
208
		$this->analyserParametresEcriture($requeteDonnees);
236
		$this->analyserParametresEcriture($requeteDonnees);
209
		$this->wiki = Registre::get('wikiApi');
237
		$this->wiki = Registre::get('wikiApi');
210
		$this->wiki->setPageCourante($this->pageNom);
238
		$this->wiki->setPageCourante($this->pageNom);
211
		
239
		
212
		$texte = $requeteDonnees['pageContenu'];
240
		$texte = $requeteDonnees['pageContenu'];
213
		$page = $this->consulterPage($this->pageNom);
241
		$page = $this->consulterPage($this->pageNom);
214
				
242
				
215
		if ($page != null) {
243
		if ($page != null) {
216
			$corps = ($this->section != null) ? $this->remplacerSection($this->section, $texte, $page['body']) : $texte;	
244
			$corps = ($this->section != null) ? $this->remplacerSection($this->section, $texte, $page['body']) : $texte;	
217
		} else {
245
		} else {
218
			$corps = $texte;
246
			$corps = $texte;
219
		}	
247
		}	
220
		
248
		
221
		$ecriture = $this->ecrirePage($this->pageNom, $corps);	
249
		$ecriture = $this->ecrirePage($this->pageNom, $corps);	
222
		
250
		
223
		if ($ecriture) {
251
		if ($ecriture) {
224
			$this->envoyerCreationEffectuee();
252
			$this->envoyerCreationEffectuee();
225
		} else {
253
		} else {
226
			$message = 'Impossible de créer ou modifier la page';
254
			$message = 'Impossible de créer ou modifier la page';
227
			$code = RestServeur::HTTP_CODE_ERREUR;
255
			$code = RestServeur::HTTP_CODE_ERREUR;
228
			throw new Exception($message, $code);
256
			throw new Exception($message, $code);
229
		}
257
		}
230
		
258
		
231
		return $ecriture;
259
		return $ecriture;
232
	}
260
	}
233
	
261
	
234
	/**
262
	/**
235
	 * 
263
	 * 
236
	 * Si la section demandée existe dans la page, renvoie un tableau contenant le numéro de caractère de 
264
	 * Si la section demandée existe dans la page, renvoie un tableau contenant le numéro de caractère de 
237
	 * début de la section, après son titre, ainsi que la longeur du titre
265
	 * début de la section, après son titre, ainsi que la longeur du titre
238
	 * @param string $titre de la section
266
	 * @param string $titre de la section
239
	 * @param string $page contenu de la page wiki
267
	 * @param string $page contenu de la page wiki
240
	 * @return tableau associatif tel que décrit ici
268
	 * @return tableau associatif tel que décrit ici
241
	 */
269
	 */
242
	private function getInformationsPositionSection($titre, $page) {
270
	private function getInformationsPositionSection($titre, $page) {
243
		
271
		
244
		preg_match_all('/(=[=]+[ ]*'.preg_quote(trim($titre), '/').'[ ]*=[=]+[.]*)/i', $page, $sections, PREG_OFFSET_CAPTURE);
272
		preg_match_all('/(=[=]+[ ]*'.preg_quote(trim($titre), '/').'[ ]*=[=]+[.]*)/i', $page, $sections, PREG_OFFSET_CAPTURE);
245
		$longueur_titre = 0;
273
		$longueur_titre = 0;
246
		$debut_section_apres_titre = 0;
274
		$debut_section_apres_titre = 0;
247
		
275
		
248
		if (count($sections) > 0 && is_array($sections[0]) && count($sections[0][0]) >= 2) {
276
		if (count($sections) > 0 && is_array($sections[0]) && count($sections[0][0]) >= 2) {
249
			$longueur_titre = mb_strlen($sections[0][0][0]);
277
			$longueur_titre = mb_strlen($sections[0][0][0]);
250
			$debut_section_apres_titre = $sections[0][0][1] + $longueur_titre;
278
			$debut_section_apres_titre = $sections[0][0][1] + $longueur_titre;
251
		}
279
		}
252
		
280
		
253
		// ATTENTION : début contient le numéro du caractere de début de la section, après le titre
281
		// ATTENTION : début contient le numéro du caractere de début de la section, après le titre
254
		$infos = array('debut' => $debut_section_apres_titre,
282
		$infos = array('debut' => $debut_section_apres_titre,
255
						'longueur_titre' => $longueur_titre
283
						'longueur_titre' => $longueur_titre
256
				);
284
				);
257
		
285
		
258
		return $infos;
286
		return $infos;
259
	}
287
	}
260
	
288
	
261
	private function remplacerSection($titre_section, $section_remplacement, $corps) {
289
	private function remplacerSection($titre_section, $section_remplacement, $corps) {
-
 
290
				
-
 
291
		// insertion d'un saut de ligne pour empêcher de casser le titre, lorsque le titre
262
				
292
		// suivant vient directement après la section, sans saut de ligne ni espace
263
		$section_remplacement = "\n".$section_remplacement."\n";
293
		$section_remplacement = "\n".$section_remplacement."\n";
264
		$section_page_originale = $this->getSectionParTitre($corps, $titre_section, true);
294
		$section_page_originale = $this->getSectionParTitre($corps, $titre_section, true);
265
		$infos_section = $this->getInformationsPositionSection($titre_section, $corps);
295
		$infos_section = $this->getInformationsPositionSection($titre_section, $corps);
266
		$nb_caracteres_a_remplacer = mb_strlen($section_page_originale) - $infos_section['longueur_titre'];
296
		$nb_caracteres_a_remplacer = mb_strlen($section_page_originale) - $infos_section['longueur_titre'];
267
		
297
		
268
		$nouveau_contenu = substr_replace($corps, $section_remplacement, $infos_section['debut'], $nb_caracteres_a_remplacer);
298
		$nouveau_contenu = substr_replace($corps, $section_remplacement, $infos_section['debut'], $nb_caracteres_a_remplacer);
269
			
299
			
270
		return $nouveau_contenu;
300
		return $nouveau_contenu;
271
	}
301
	}
272
	
302
	
273
	private function ecrirePage($nom_page, $contenu) {
303
	private function ecrirePage($nom_page, $contenu) {
274
		
304
		
275
		$texte_encode = $this->convertirTexteAppliVersEncodageWiki($contenu);
305
		$texte_encode = $this->convertirTexteAppliVersEncodageWiki($contenu);
276
		$ecriture = $this->wiki->SavePage($nom_page, $texte_encode, "", true);
306
		$ecriture = $this->wiki->SavePage($nom_page, $texte_encode, "", true);
277
		
307
		
278
		return $ecriture;
308
		return $ecriture;
279
	}
309
	}
280
	
310
	
281
	private function analyserParametresEcriture($parametres) {
311
	private function analyserParametresEcriture($parametres) {
282
		$this->pageNom = $parametres['pageTag'];
312
		$this->pageNom = $parametres['pageTag'];
283
		$this->section = isset($parametres['pageSectionTitre']) ? $parametres['pageSectionTitre'] : null;
313
		$this->section = isset($parametres['pageSectionTitre']) ? $parametres['pageSectionTitre'] : null;
284
	}
314
	}
285
	
315
	
286
	private function verifierParametresEcriture($parametres) {
316
	private function verifierParametresEcriture($parametres) {
287
			
317
			
288
		$erreurs = array();
318
		$erreurs = array();
289
		
319
		
290
		if(!isset($parametres['pageContenu'])) {
320
		if (!isset($parametres['pageContenu'])) {
291
			$message = "Le paramètre pageContenu est obligatoire";
321
			$message = "Le paramètre pageContenu est obligatoire";
292
			$erreurs[] = $message;
322
			$erreurs[] = $message;
293
		}
323
		}
294
		
324
		
295
		if(!isset($parametres['pageTag']) || trim($parametres['pageTag']) == '') {
325
		if (!isset($parametres['pageTag']) || trim($parametres['pageTag']) == '') {
296
			$message = "Le paramètre pageTag est obligatoire";
326
			$message = "Le paramètre pageTag est obligatoire";
297
			$erreurs[] = $message;
327
			$erreurs[] = $message;
298
		}
328
		}
299
		
329
		
300
		if(isset($parametres['pageSectionTitre']) && $parametres['pageSectionTitre'] == '') {
330
		if (isset($parametres['pageSectionTitre']) && $parametres['pageSectionTitre'] == '') {
301
			$message = "Le paramètre pageSectionTitre ne doit pas être vide s'il est présent";
331
			$message = "Le paramètre pageSectionTitre ne doit pas être vide s'il est présent";
302
			$erreurs[] = $message;
332
			$erreurs[] = $message;
303
		}
333
		}
304
		
334
		
305
		if (count($erreurs) > 0) {
335
		if (count($erreurs) > 0) {
306
			$message = implode('<br />', $erreurs);
336
			$message = implode('<br />', $erreurs);
307
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
337
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
308
			throw new Exception($message, $code);
338
			throw new Exception($message, $code);
309
		}
339
		}
310
	}
340
	}
311
	
341
	
312
	private function convertirTexteWikiVersEncodageAppli($texte) {
342
	private function convertirTexteWikiVersEncodageAppli($texte) {
313
		if(Config::get('encodage_appli') != Config::get('encodage_wiki')) {
343
		if (Config::get('encodage_appli') != Config::get('encodage_wiki')) {
314
			$texte = mb_convert_encoding($texte,Config::get('encodage_appli'),Config::get('encodage_wiki'));
344
			$texte = mb_convert_encoding($texte,Config::get('encodage_appli'),Config::get('encodage_wiki'));
315
		}
345
		}
316
		return $texte;
346
		return $texte;
317
	}
347
	}
318
	
348
	
319
	private function convertirTexteAppliVersEncodageWiki($texte) {
349
	private function convertirTexteAppliVersEncodageWiki($texte) {
320
		if(Config::get('encodage_appli') != Config::get('encodage_wiki')) {
350
		if (Config::get('encodage_appli') != Config::get('encodage_wiki')) {
321
			$texte = mb_convert_encoding($texte,Config::get('encodage_wiki'),Config::get('encodage_appli'));
351
			$texte = mb_convert_encoding($texte,Config::get('encodage_wiki'),Config::get('encodage_appli'));
322
		}
352
		}
323
		return $texte;
353
		return $texte;
324
	}
354
	}
325
}	
355
}	
326
?>
356
?>