* @license GPL v3 * @license CECILL v2 * @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; } } ?>