Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 517 → Rev 518

/trunk/services/modules/0.1/baseflor/InformationsTaxonsSup.php
33,16 → 33,21
public function consulter($ressources, $parametres) {
$this->ressources = $ressources;
$this->parametres = $parametres;
$this->traiterParametres();
$this->definirVersion();
$this->table = Config::get('bdd_table_rang_sup')."_v".$this->version;
$this->definirTables();
$this->traiterRessources();
$resultats = '';
$this->recupererNomChamp($this->table);
$this->traiterRessources();
$requete = $this->assemblerLaRequete();
$resultat = $this->getBdd()->recupererTous($requete);
$versionResultat = $this->traiterResultat($resultat, $this->table, $requete);
foreach ($this->table_version as $version) {
$this->table = $version;
$requete = $this->assemblerLaRequete();
$resultat = $this->getBdd()->recupererTous($requete);
$versionResultat = $this->traiterResultat($resultat, $version);
if (count($this->table_version) > 1) {
$resultats[$version] = $versionResultat;
} else {
$resultats = $versionResultat;
}
}
return $versionResultat;
}
95,6 → 100,9
$e = "Valeur de paramètre inconnue pour 'retour.format'.";
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
}
case 'version.projet' :
$this->traiterVersion($valeur);
break;
default :
$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
.$param.' " n\'existe pas.';
103,29 → 111,42
}
}
}
private function definirVersion() {
$this->chargerVersions();
if( (!isset($this->parametres['version.projet']) ) || ((isset($this->parametres['version.projet']) )&&
(($this->parametres['version.projet'] == '+') || ($this->parametres['version.projet'] == '')))){
$this->version = $this->metadonnees[0]['version'];
} else {
$this->version = $this->parametres['version.projet'];
 
//+++------------------------------traitement des versions----------------------------------------++
public function traiterVersion($valeur) {
if (preg_match('/^[0-9]+(?:[._][0-9]+)*$/', $valeur) || $valeur == '*' || $valeur == '+') {
$this->version_projet = $valeur;
} else {
$e = "Erreur : La version est inconnue.";
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
}
if ($this->version_projet == '*' && $this->ressources == array()) {
$message = "L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id";
$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
throw new Exception($message, $code);
}
}
 
private function chargerVersions() {
$requete = "SELECT version FROM ".Config::get('bdd_table_meta')." ".
"ORDER BY date_creation DESC ";
$resultats = $this->getBdd()->recupererTous($requete);
if (!is_array($resultats) || count($resultats) <= 0) {
$message = "Les méta-données n'ont pu être chargée pour la ressource demandée";
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
throw new Exception($message, $code);
public function DefinirTables() {
$table_num_version = $this->recupererVersionDisponible();
$prefixe_table = config::get('bdd_table_rang_sup');
if ( in_array($this->version_projet,$table_num_version) ) {
$this->table_version[] = $prefixe_table.'_v'.$this->version_projet;
} elseif ($this->version_projet == '+') {
$derniere_version = $table_num_version[count($table_num_version) - 1];
$this->table_version[] = $prefixe_table.'_v'.str_replace('.', '_', $derniere_version);
} elseif ($this->version_projet == '*') {
foreach ($table_num_version as $num_version) {
$this->table_version[] = $prefixe_table.'_v'.str_replace('.', '_', $num_version);
}
} else {
$e = "Erreur : La version est inconnue.";
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
}
$this->metadonnees = $resultats;
}
//+--------------------------formatages de resultats -------------------------------------------+
162,7 → 183,8
public function recupererOntologies($valeur, $champs){
$chps_sans = preg_replace("/_min|_max/", '', $champs);
$url = $this->ajouterHref('ontologies',$this->champs_ontologiques[$chps_sans].':'.urlencode(urlencode($valeur)));
$url = Config::get('url_service_base').Config::get('nom_projet').
'/ontologies/'.$this->champs_ontologiques[$chps_sans].':'.urlencode(urlencode($valeur));
$val = $this->consulterHref($url);
$resultat_json[$champs.'.libelle'] = $val->nom;
$resultat_json[$champs.'.code'] = $valeur;
/trunk/services/modules/0.1/baseflor/InformationsBaseflor.php
38,15 → 38,14
$this->ressources = $ressources;
$this->parametres = $parametres;
$this->traiterParametres();
$this->traiterVersionProjet();
$this->DefinirTables();
$this->traiterRessources();
$resultats = null;
foreach ($this->table_version as $version) {
$this->table = $version;
$this->recupererNomChamp($this->table);
$this->traiterRessources();
$requete = $this->assemblerLaRequete();
$resultat = $this->getBdd()->recupererTous($requete);
$versionResultat = $this->traiterResultat($resultat, $version, $requete);
$versionResultat = $this->traiterResultat($resultat, $version);
if (count($this->table_version) > 1) {
$resultats[$version] = $versionResultat;
} else {
56,7 → 55,7
return $resultats;
}
 
public function traiterResultat($resultat, $version, $requete) {
public function traiterResultat($resultat, $version) {
$versionResultat = null;
if ($resultat == '') {
$message = 'La requête SQL formée comporte une erreur!';
134,6 → 133,9
$e = "Valeur de paramètre inconnue pour 'retour.format'.";
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
}
case 'version.projet' :
$this->traiterVersion($valeur);
break;
default :
$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
.$param.' " n\'existe pas.';
174,7 → 176,41
$this->champs_recherches=" cle, catminat_code, BDNT, num_taxon, num_nomen ";
}
}
 
//+++------------------------------traitement des versions----------------------------------------++
public function traiterVersion($valeur) {
if (preg_match('/^[0-9]+(?:[._][0-9]+)*$/', $valeur) || $valeur == '*' || $valeur == '+') {
$this->version_projet = $valeur;
} else {
$e = "Erreur : La version est inconnue.";
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
}
if ($this->version_projet == '*' && $this->ressources == array()) {
$message = "L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id";
$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
throw new Exception($message, $code);
}
}
public function DefinirTables() {
$table_num_version = $this->recupererVersionDisponible();
$prefixe_table = config::get('bdd_table');
if ( in_array($this->version_projet,$table_num_version) ) {
$this->table_version[] = $prefixe_table.'_v'.$this->version_projet;
} elseif ($this->version_projet == '+') {
$derniere_version = $table_num_version[count($table_num_version) - 1];
$this->table_version[] = $prefixe_table.'_v'.str_replace('.', '_', $derniere_version);
} elseif ($this->version_projet == '*') {
foreach ($table_num_version as $num_version) {
$this->table_version[] = $prefixe_table.'_v'.str_replace('.', '_', $num_version);
}
} else {
$e = "Erreur : La version est inconnue.";
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
}
}
//+--------------------------formatages de resultats -------------------------------------------+
public function retournerResultatFormate($resultat) {
if ((count($this->ressources)) == 0) {
297,8 → 333,10
 
 
//+--------------------------traitement ontologies -------------------------------------------+
 
public function recupererOntologies($valeur, $champs){
$url = $this->ajouterHref('ontologies',$this->champs_ontologiques[$champs].':'.urlencode(urlencode($valeur)));
$url = Config::get('url_service_base').Config::get('nom_projet').
'/ontologies/'.$this->champs_ontologiques[$champs].':'.urlencode(urlencode($valeur));
$val = $this->consulterHref($url);
$resultat_json[$champs.'.libelle'] = $val->nom;
$resultat_json[$champs.'.code'] = $valeur;
330,7 → 368,8
 
foreach ($types_sstypes as $cle => $tb) {
if (($cle == 'type.principal') || ($cle == 'type.secondaire')) {
$url = $this->ajouterHref('ontologies','TB:'.urlencode(urlencode($tb)));
$url = Config::get('url_service_base').Config::get('nom_projet').
'/ontologies/TB:'.urlencode(urlencode($tb));
$val = $this->consulterHref($url);
$libelle[$cle]= $val->nom;
$detail[$cle]['libelle'] = $val->nom;
340,7 → 379,8
if ($cle == 'sous_type.principal' || $cle == 'sous_type.secondaire' || $cle == 'sous_type.special') {
$i = 0;
foreach ($tb as $sstypes) {
$url = $this->ajouterHref('ontologies','ssTT:'.urlencode(urlencode($sstypes)));
$url = Config::get('url_service_base').Config::get('nom_projet').
'/ontologies/ssTT:'.urlencode(urlencode($sstypes));
$val = $this->consulterHref($url);
$libelle[$cle]=$val->nom;
$detail[$cle][$i]['libelle'] = $val->nom;