New file |
0,0 → 1,152 |
<?php |
/** |
* |
* /syntaxons --> retourne l'ensemble des tuples de la table |
* /syntaxons?masque.catminat=#catminat&masque.niveau=#niveau etc.--> retourne les syntaxons répondant à ces critères |
* |
* * @package eflore-projets |
* @author mathilde Salthun-Lassalle |
* @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 SyntaxonsTous extends SyntaxonsCommun { |
|
|
function __construct(Conteneur $conteneur) { |
parent::__construct($conteneur); |
$this->champs_recherches = 'cle, code_catminat, syntaxon, code_fixe_nom, code_natura_2000, niveau '; |
} |
|
public function consulter($ressources, $parametres) { |
$this->ressources = $ressources; |
$this->parametres = $parametres; |
$this->traiterParametres(); |
$this->definirTables(); |
$resultats = null; |
foreach ($this->table_version as $version) { |
$this->table = $version; |
$requete = $this->assemblerLaRequete(); |
$resultat = $this->Bdd->recupererTous($requete); |
// puisque notre implémentation de retournerResultatFormate() n'utilise pas NULL |
// et que le prototype de Commun::traiterResultat() doit être respecté, nous passons |
// NULL comme second paramètre. |
$versionResultat = $this->traiterResultat($resultat, NULL); |
if (count($this->table_version) > 1) { |
$resultats[$version] = $versionResultat; |
} else { |
$resultats = $versionResultat; |
} |
} |
return $resultats; |
} |
|
|
|
//+-------------------------------------traitement des ressources et des paramètres----------------------------------------+// |
|
public function traiterParametres() { |
if (isset($this->parametres) && !empty($this->parametres) ) { |
foreach ($this->parametres as $param => $valeur) { |
switch ($param) { |
case 'navigation.depart' : |
$this->definirNavigationDepart($valeur); |
break; |
case 'navigation.limite' : |
$this->definirNavigationLimite($valeur); |
break; |
case 'version.projet' : |
$this->traiterVersion($valeur); |
break; |
case 'masque.catminat' : |
$this->traiterCatminat($valeur); |
break; |
case 'masque.niveau' : |
$this->traiterNiveau($valeur); |
break; |
case 'masque.retenu' : |
$this->traiterRetenu($valeur); |
break; |
case 'masque.fixe' : |
$this->requete_condition[] = ' code_fixe_nom = \''.$valeur.'\' '; |
break; |
case 'retour.champs' : |
$this->champs_recherches .= ','.$valeur.' '; |
break; |
default : |
$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " ' |
.$param.' " n\'existe pas.'; |
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e); break; |
} |
} |
} |
|
} |
|
public function traiterRetenu($valeur) { |
$valeur = trim($valeur); |
if( $valeur == 'true') { |
$this->requete_condition[] = ' niveau NOT LIKE \'syn%\' '; |
} elseif ( $valeur == 'false') { |
$this->requete_condition[] = ' niveau LIKE \'syn%\' '; |
} |
} |
|
public function traiterCatminat($valeur) { |
$valeur = trim($valeur); |
$valeur = str_replace('-', '/', $valeur); |
$this->requete_condition[] = ' code_catminat = '.$this->getBdd()->proteger($valeur).''; |
} |
|
public function traiterNiveau($valeur) { |
$valeur = strtoupper(trim($valeur)); |
if (in_array($valeur,$this->niv)) { |
$this->requete_condition[] = ' niveau = '.$this->getBdd()->proteger($valeur).''; |
//$this->requete_condition[] = ' code_catminat = '.$this->catminat.''; |
} else { |
$e = "Erreur : valeur inconnue pour masque.niveau." |
." valeurs possibles : ALL|ORD|CLA|SUBCLA|SUBORD|SUBALL|ASS|SUBASS|BC|DC|GRPT"; |
throw new Exception($e, RestServeur::HTTP_CODE_MAUVAISE_REQUETE); |
} |
} |
|
|
//+--------------------------formatages de resultats -------------------------------------------+ |
|
public function retournerResultatFormate($resultat) { |
$resultat_json = array(); |
$resultat_json['entete'] = $this->ajouterEnteteResultat(); |
foreach ($resultat as $cle => $res) { |
$resultat[$cle]['href'] = $this->ajouterHref('syntaxons','cle:'.$res['cle']); |
$resultat[$cle] = array_merge($resultat[$cle],$this->traiterOntologieNiveau($res['niveau'])); |
unset($resultat[$cle]['niveau']); |
} |
$resultat_json['resultat'] = $resultat; |
return $resultat_json; |
} |
|
|
|
public function ajouterEnteteResultat() { |
$entete['depart'] = $this->limite_requete['depart']; |
$entete['limite'] = $this->limite_requete['limite']; |
$entete['total'] = $this->total_resultat; |
$entete['version'] = $this->version_projet; |
$ressources = (empty($this->ressources)) ? '/syntaxons' : '/syntaxons/' ; |
$url = $this->formulerUrl($this->total_resultat, $ressources.implode('/',$this->ressources)); |
if (isset($url['precedent']) && $url['precedent'] != '') { |
$entete['href.precedent'] = $url['precedent']; |
} |
if (isset($url['suivant']) && $url['suivant'] != '') { |
$entete['href.suivant'] = $url['suivant']; |
} |
return $entete; |
} |
|
|
|
} |
?> |