* @author Jean-Pascal MILCENT * @author Aurelien PERONNET * @license GPL v3 * @license CECILL v2 * @copyright 1999-2014 Tela Botanica */ class ListeTaxons { private $conteneur; private $navigation; private $bdd; private $resultatsBruts = array(); private $resultats = array(); public function __construct(Conteneur $conteneur = null) { $this->conteneur = $conteneur == null ? new Conteneur() : $conteneur; $this->navigation = $this->conteneur->getNavigation(); $this->bdd = $this->conteneur->getBdd(); } public function consulter() { $this->chargerNoms(); $this->formaterResultats(); $this->mettreAJourEnteteResultats(); $resultat = new ResultatService(); $resultat->corps = array('entete' => $this->navigation->getEntete(), 'resultats' => $this->resultats); return $resultat; } private function chargerNoms() { $referentiel = $this->navigation->getFiltre('masque.referentiel'); if ($referentiel != 'tous') { $requete = urlencode($this->navigation->getFiltre('masque.nom')); $url = sprintf($this->conteneur->getParametre('nomstaxons.url_autocompletion_tpl'), $referentiel, $requete); $restClient = $this->conteneur->getRestClient(); $resultatJson = $restClient->consulter($url); $this->resultatsBruts =(array) json_decode($resultatJson, true); } } private function formaterResultats() { if (isset($this->resultatsBruts['resultat'])) { foreach ($this->resultatsBruts['resultat'] as $info) { $this->resultats[] = array( "nn" => $info['num_nom'], "ns" => $info['nom_sci_complet'], "retenu" => ($info['retenu'] === "true" ? true : false) ); } } } private function mettreAJourEnteteResultats() { $total = count($this->resultats); $this->navigation->setTotal($total); $this->navigation->setSansLimite(); } }