Subversion Repositories Applications.wikini

Rev

Rev 35 | Rev 37 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 35 Rev 36
Line 32... Line 32...
32
			$this->definirValeurParDefautDesParametres();
32
			$this->definirValeurParDefautDesParametres();
33
			$this->verifierParametres($parametres);
33
			$this->verifierParametres($parametres);
34
			$this->analyserParametres($ressources, $parametres);
34
			$this->analyserParametres($ressources, $parametres);
Line 35... Line 35...
35
			
35
			
-
 
36
			$page = $this->consulterPage($this->pageNom, $this->section);
-
 
37
			if ($page == null) {
-
 
38
				$message = 'La page demandée n\'existe pas';
-
 
39
				$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
-
 
40
				throw new Exception($message, $code);
36
			$page = $this->consulterPage($this->pageNom, $this->section);
41
			}
Line 37... Line 42...
37
			$retour = $this->formaterRetour($page);
42
			$retour = $this->formaterRetour($page);
38
			
43
			
39
			$this->envoyerContenuJson($retour);
44
			$this->envoyerContenuJson($retour);
40
		} catch (Exception $e) {
45
		} catch (Exception $e) {
41
			$this->envoyerErreur($e);
46
			$this->envoyerErreur($e);
Line 42... Line 47...
42
		}
47
		}
43
	}
48
	}
44
	
49
	
45
	private function definirValeurParDefautDesParametres() {
50
	private function definirValeurParDefautDesParametres() {
46
		if (isset($this->parametres['txt_format']) == false) {
51
		if (isset($this->parametres['txt_format']) == false) {
Line 47... Line 52...
47
			$this->parametres['txt_format'] = 'txt';
52
			$this->parametres['txt_format'] = 'text/plain';
48
		}
53
		}
Line 87... Line 92...
87
			$this->retour = $parametres['txt_format'];
92
			$this->retour = $parametres['txt_format'];
88
		}
93
		}
89
	}
94
	}
Line 90... Line 95...
90
	
95
	
-
 
96
	private function consulterPage($page, $section = null) {
91
	private function consulterPage($page, $section = null) {
97
		
92
		$this->wiki = Registre::get('wikiApi');
98
		$this->wiki = Registre::get('wikiApi');
93
		$this->wiki->setPageCourante($this->pageNom);
99
		$this->wiki->setPageCourante($this->pageNom);
-
 
100
		$page = $this->wiki->LoadPage($page);
-
 
101
		
94
		$page = $this->wiki->LoadPage($page);
102
		if($page != null) {
95
		// attention les wikis sont en ISO !
103
			// attention les wikis sont souvent en ISO !
96
		$page["body"] = $this->convertirTexteWikiVersEncodageAppli($page['body']);
104
			$page["body"] = $this->convertirTexteWikiVersEncodageAppli($page['body']);
97
	
105
		
98
		if($section != null) {
106
			if($section != null) {
-
 
107
				$page["body"] = $this->decouperPageSection($page["body"], $section);
99
			$page["body"] = $this->decouperPageSection($page["body"], $section);
108
			}
Line 100... Line 109...
100
		}
109
		}
101
	
110
	
Line 192... Line 201...
192
	public function ajouter($ressources, $requeteDonnees) {
201
	public function ajouter($ressources, $requeteDonnees) {
193
		return $this->modifier($ressources, $requeteDonnees);
202
		return $this->modifier($ressources, $requeteDonnees);
194
	}
203
	}
Line 195... Line 204...
195
	
204
	
196
	public function modifier($ressources, $requeteDonnees) {
205
	public function modifier($ressources, $requeteDonnees) {
-
 
206
			
197
	
207
		$this->verifierParametresEcriture($requeteDonnees);
-
 
208
		$this->analyserParametresEcriture($requeteDonnees);
198
		$this->pageNom = $ressources[0];
209
		
199
		$this->wiki = Registre::get('wikiApi');
210
		$this->wiki = Registre::get('wikiApi');
Line 200... Line -...
200
		$this->wiki->setPageCourante($this->pageNom);
-
 
201
		
211
		$this->wiki->setPageCourante($this->pageNom);
202
		$section = (isset($requeteDonnees['txt.section.titre']) && trim($requeteDonnees['txt.section.titre']) != "") ? $requeteDonnees['txt.section.titre'] : null;
-
 
203
		$texte = $requeteDonnees['texte'];
212
		
204
		
-
 
205
		$page = $this->consulterPage($this->pageNom);
-
 
206
		$corps = $page['body'];
213
		$texte = $requeteDonnees['texte'];
207
		$section_page_originale = $corps;
214
		$page = $this->consulterPage($this->pageNom);
208
		
215
				
-
 
216
		if($page != null) {
-
 
217
			$corps = ($this->section != null) ? $this->remplacerSection($this->section, $texte, $page['body']) : $texte;	
209
		if($section != null) {
218
		} else {
210
			$section_page_originale = $this->decouperPageSection($corps, $section);
-
 
211
		}	
-
 
212
		
-
 
213
		$page_remplacee = str_replace($section_page_originale, $texte, $corps);
-
 
214
		
219
			$corps = $texte;
215
		$texte_encode = $this->convertirTexteAppliVersEncodageWiki($page_remplacee);
-
 
216
		$ecriture = $this->wiki->SavePage($this->pageNom, $texte_encode, "", true);
220
		}	
217
	
221
		$ecriture = $this->ecrirePage($this->pageNom, $corps);	
218
		if($ecriture) {
222
		if($ecriture) {
-
 
223
			$this->envoyerCreationEffectuee();
-
 
224
		} else {
219
			$this->envoyerCreationEffectuee();
225
			$message = 'Impossible de créer ou modifier la page';
220
		} else {
226
			$code = RestServeur::HTTP_CODE_ERREUR;
Line 221... Line 227...
221
			$this->envoyerErreurServeur();
227
			throw new Exception($message, $code);
222
		}
228
		}
Line -... Line 229...
-
 
229
		
-
 
230
		return $ecriture;
-
 
231
	}
-
 
232
	
-
 
233
	private function remplacerSection($titre_ou_numero_section, $section_remplacement, $corps) {
-
 
234
		$section_page_originale = $this->decouperPageSection($corps, $titre_ou_numero_section);
-
 
235
		$contenu = str_replace($section_page_originale, $texte, $corps);
-
 
236
		
-
 
237
		return $contenu;
-
 
238
	}
-
 
239
	
-
 
240
	private function ecrirePage($nom_page, $contenu) {
-
 
241
		
-
 
242
		$texte_encode = $this->convertirTexteAppliVersEncodageWiki($contenu);
-
 
243
		$ecriture = $this->wiki->SavePage($nom_page, $texte_encode, "", true);
-
 
244
		
-
 
245
		return $ecriture;
-
 
246
	}
-
 
247
	
-
 
248
	private function analyserParametresEcriture($parametres) {
-
 
249
		$this->pageNom = $parametres['wiki'];
-
 
250
		$this->section = isset($parametres['section']) ? $parametres['section'] : null;
-
 
251
	}
-
 
252
	
-
 
253
	private function verifierParametresEcriture($parametres) {
-
 
254
			
-
 
255
		$erreurs = array();
-
 
256
		
-
 
257
		if(!isset($parametres['texte'])) {
-
 
258
			$message = "Le paramètre texte est obligatoire";
-
 
259
			$erreurs[] = $message;
-
 
260
		}
-
 
261
		
-
 
262
		if(!isset($parametres['wiki']) || trim($parametres['wiki']) == '') {
-
 
263
			$message = "Le paramètre wiki est obligatoire";
-
 
264
			$erreurs[] = $message;
-
 
265
		}
-
 
266
		
-
 
267
		if (count($erreurs) > 0) {
-
 
268
			$message = implode('<br />', $erreurs);
-
 
269
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
223
		
270
			throw new Exception($message, $code);
224
		return $ecriture;
271
		}
225
	}
272
	}
226
	
273
	
227
	private function convertirTexteWikiVersEncodageAppli($texte) {
274
	private function convertirTexteWikiVersEncodageAppli($texte) {