Rev 274 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Classe implémentant l'API d'eFlore Textes pour le projet WIKIPEDIA.** @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=EfloreApi01Textes** @package eFlore/services* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>* @version 1.0* @copyright 1999-2012 Tela Botanica (accueil@tela-botanica.org)*/class Textes extends Commun{protected $parametres = array();protected $ressources = array();protected $service = 'textes';public function consulter($ressources, $parametres) {$this->parametres = $parametres;$this->ressources = $ressources;$this->analyserRessources();$resultat = $this->executerSousService();return $resultat;}private function analyserRessources() {$nbreRessources = count($this->ressources);if ($nbreRessources == 0) {$message = "A implémenter : listes des pages trouvées";$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;throw new Exception($message, $code);} else if ($nbreRessources == 1) {if ($this->etreRessourceIdentifiants(0)) {$this->sousService = 'Page';} else {$message = "La ressource n°1 '{$this->ressources[0]} indiquée n'est pas valable.";$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;throw new Exception($message, $code);}} else if ($nbreRessources > 1) {$message = "Les ressources indiquées ne sont pas valables.";$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;throw new Exception($message, $code);}}private function etreRessourceIdentifiants($position) {$ok = true;if (isset($this->ressources[$position])) {$ids = $this->ressources[$position];$supraSpPattern = "[A-Z][a-z]+";$spPattern = "{$supraSpPattern}_[a-z]+";$pagePattern = "/^(?:$supraSpPattern|$spPattern)$/i";$ok = preg_match($pagePattern, $ids) ? true : false;}return $ok;}private function executerSousService() {if (isset($this->sousService)) {$classe = $this->sousService.'Textes';require_once dirname(__FILE__).DS.'textes'.DS.$classe.'.php';$sousService = new $classe($this->ressources, $this->parametres, new Conteneur());$resultat = $sousService->consulter();} else {$message = "L'analyse des ressources n'a pu aboutir à déterminer le sous service à exécuter.";$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;throw new Exception($message, $code);}return $resultat;}}?>