Line 25... |
Line 25... |
25 |
protected $table = "";
|
25 |
protected $table = "";
|
26 |
private $champs_ontologiques = array();
|
26 |
private $champs_ontologiques = array();
|
27 |
private $format_reponse = 'informations';
|
27 |
private $format_reponse = 'informations';
|
28 |
protected $serviceNom = 'informations';
|
28 |
protected $serviceNom = 'informations';
|
29 |
private $retour_format = 'max';
|
29 |
private $retour_format = 'max';
|
30 |
private $Requete;
|
- |
|
31 |
private $Conteneur;
|
- |
|
32 |
private $Requete_assemblage;
|
- |
|
33 |
private $Bdd;
|
30 |
private $Bdd;
|
- |
|
31 |
private $requete_condition = "";
|
- |
|
32 |
private $champs_recherches = '*';
|
Line 34... |
Line 33... |
34 |
|
33 |
|
35 |
public function consulter($ressources, $parametres) {
|
34 |
public function consulter($ressources, $parametres) {
|
36 |
$this->ressources = $ressources;
|
35 |
$this->ressources = $ressources;
|
37 |
$this->parametres = $parametres;
|
36 |
$this->parametres = $parametres;
|
38 |
$this->traiterParametres();
|
37 |
$this->traiterParametres();
|
39 |
$this->definirTables();
|
38 |
$this->definirTables();
|
40 |
$this->traiterRessources();
|
39 |
$this->traiterRessources();
|
41 |
$resultats = '';
|
40 |
$resultats = '';
|
42 |
foreach ($this->table_version as $version) {
|
41 |
foreach ($this->table_version as $version) {
|
43 |
$this->Requete->table = $version;
|
42 |
$this->table = $version;
|
44 |
$requete = $this->Requete_assemblage->assemblerLaRequete($this->Requete);
|
43 |
$requete = $this->assemblerLaRequete();
|
45 |
$resultat = $this->Bdd->recupererTous($requete);
|
44 |
$resultat = $this->Bdd->recupererTous($requete);
|
46 |
$versionResultat = $this->analyserResultat($resultat);
|
45 |
$versionResultat = $this->analyserResultat($resultat);
|
47 |
if (count($this->table_version) > 1) {
|
46 |
if (count($this->table_version) > 1) {
|
48 |
$resultats[$version] = $versionResultat;
|
47 |
$resultats[$version] = $versionResultat;
|
49 |
} else {
|
48 |
} else {
|
50 |
$resultats = $versionResultat;
|
49 |
$resultats = $versionResultat;
|
51 |
}
|
50 |
}
|
52 |
}
|
51 |
}
|
53 |
return $versionResultat;
|
52 |
return $resultats;
|
Line 54... |
Line 53... |
54 |
}
|
53 |
}
|
55 |
|
54 |
|
56 |
public function analyserResultat($resultat) {
|
55 |
public function analyserResultat($resultat) {
|
Line 64... |
Line 63... |
64 |
}
|
63 |
}
|
65 |
return $versionResultat;
|
64 |
return $versionResultat;
|
66 |
}
|
65 |
}
|
Line 67... |
Line 66... |
67 |
|
66 |
|
68 |
public function __construct(Conteneur $Conteneur) {
|
- |
|
69 |
$this->Conteneur = $Conteneur;
|
67 |
public function __construct(Conteneur $Conteneur) {
|
70 |
$this->Bdd = $Conteneur->getBdd();
|
- |
|
71 |
$this->Requete = new Requete();
|
- |
|
72 |
$this->Requete_assemblage = $Conteneur->getRequetesAssemblage();
|
68 |
$this->Bdd = $Conteneur->getBdd();
|
Line 73... |
Line 69... |
73 |
}
|
69 |
}
|
Line 74... |
Line 70... |
74 |
|
70 |
|
75 |
//+--------------------------traitement ressources ou paramètres -------------------------------------------+
|
71 |
//+--------------------------traitement ressources ou paramètres -------------------------------------------+
|
76 |
|
72 |
|
77 |
public function traiterRessources() {
|
73 |
public function traiterRessources() {
|
78 |
if(preg_match('/^(.+)\.nn:([0-9]+)$/', $this->ressources[0], $retour)==1){
|
74 |
if(preg_match('/^(.+)\.nn:([0-9]+)$/', $this->ressources[0], $retour)==1){
|
79 |
switch ($retour[1]) {
|
75 |
switch ($retour[1]) {
|
80 |
case 'bdtfx' :
|
76 |
case 'bdtfx' :
|
81 |
$this->Requete->requete_condition[] = "num_nomen = ".$retour[2]." AND bdnt = 'bdtfx' ";
|
77 |
$this->requete_condition[] = "num_nomen = ".$retour[2]." AND bdnt = 'bdtfx' ";
|
82 |
break;
|
78 |
break;
|
83 |
default :
|
79 |
default :
|
Line 97... |
Line 93... |
97 |
if (isset($this->parametres) && !empty($this->parametres) ) {
|
93 |
if (isset($this->parametres) && !empty($this->parametres) ) {
|
98 |
foreach ($this->parametres as $param => $valeur) {
|
94 |
foreach ($this->parametres as $param => $valeur) {
|
99 |
switch ($param) {
|
95 |
switch ($param) {
|
100 |
case 'categorie' :
|
96 |
case 'categorie' :
|
101 |
if ($valeur == "ecologie"){
|
97 |
if ($valeur == "ecologie"){
|
102 |
$this->Requete->champs_recherches = ' num_nomen, bdnt, ve_lumiere_min , ve_lumiere_max,'
|
98 |
$this->champs_recherches = ' num_nomen, bdnt, ve_lumiere_min , ve_lumiere_max,'
|
103 |
.' ve_temperature_min, ve_temperature_max, ve_continentalite_min,'
|
99 |
.' ve_temperature_min, ve_temperature_max, ve_continentalite_min,'
|
104 |
.' ve_continentalite_max, ve_humidite_atmos_min, ve_humidite_atmos_max,'
|
100 |
.' ve_continentalite_max, ve_humidite_atmos_min, ve_humidite_atmos_max,'
|
105 |
.' ve_humidite_edaph_min, ve_humidite_edaph_max, ve_reaction_sol_min,'
|
101 |
.' ve_humidite_edaph_min, ve_humidite_edaph_max, ve_reaction_sol_min,'
|
106 |
.' ve_reaction_sol_max, ve_nutriments_sol_min, ve_nutriments_sol_max,'
|
102 |
.' ve_reaction_sol_max, ve_nutriments_sol_min, ve_nutriments_sol_max,'
|
107 |
.' ve_salinite_min, ve_salinite_max, ve_texture_sol_min,ve_texture_sol_max,'
|
103 |
.' ve_salinite_min, ve_salinite_max, ve_texture_sol_min,ve_texture_sol_max,'
|
Line 145... |
Line 141... |
145 |
$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
|
141 |
$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
|
146 |
throw new Exception($message, $code);
|
142 |
throw new Exception($message, $code);
|
147 |
}
|
143 |
}
|
148 |
}
|
144 |
}
|
Line 149... |
Line 145... |
149 |
|
145 |
|
150 |
public function DefinirTables() {
|
146 |
public function definirTables() {
|
151 |
$table_num_version = $this->recupererVersionDisponible();
|
147 |
$table_num_version = $this->recupererVersionDisponible();
|
152 |
$prefixe_table = config::get('bdd_table_rang_sup');
|
148 |
$prefixe_table = config::get('bdd_table_rang_sup');
|
153 |
if ( in_array($this->version_projet,$table_num_version) ) {
|
149 |
if ( in_array($this->version_projet,$table_num_version) ) {
|
154 |
$this->table_version[] = $prefixe_table.'_v'.$this->version_projet;
|
150 |
$this->table_version[] = $prefixe_table.'_v'.$this->version_projet;
|
Line 168... |
Line 164... |
168 |
|
164 |
|
Line 169... |
Line 165... |
169 |
//+--------------------------formatages de resultats -------------------------------------------+
|
165 |
//+--------------------------formatages de resultats -------------------------------------------+
|
170 |
|
166 |
|
171 |
|
167 |
|
172 |
public function retournerResultatFormate($resultat) {
|
- |
|
173 |
$resultat_json = $resultat[0];
|
168 |
public function retournerResultatFormate($resultat) {
|
174 |
if ($this->retour_format == 'max') {
|
- |
|
175 |
$this->champs_ontologiques = $this->recupererTableauConfig('champs_ontologiques');
|
- |
|
176 |
$graphique_presence = false;
|
- |
|
177 |
foreach ($this->champs_ontologiques as $cle => $valeur){
|
- |
|
178 |
if ($resultat_json[$cle.'_min'] != ""){
|
- |
|
179 |
$graphique_presence = true;
|
- |
|
180 |
$tab_ontologie = $this->recupererOntologies($resultat_json[$cle.'_min'], $cle.'_min');
|
- |
|
181 |
unset($resultat_json[$cle.'_min']);
|
- |
|
182 |
$resultat_json= array_merge($resultat_json,$tab_ontologie);
|
- |
|
183 |
}
|
- |
|
184 |
if ($resultat_json[$cle.'_max'] != ""){
|
- |
|
185 |
$tab_ontologie = $this->recupererOntologies($resultat_json[$cle.'_max'], $cle.'_max');
|
- |
|
186 |
unset($resultat_json[$cle.'_max']);
|
- |
|
187 |
$resultat_json= array_merge($resultat_json,$tab_ontologie);
|
169 |
$this->resultat_json = $resultat[0];
|
188 |
}
|
- |
|
189 |
}
|
- |
|
190 |
if ($graphique_presence) {
|
170 |
if ($this->retour_format == 'max') {
|
191 |
$resultat_json['graphique_climat']['libelle'] = 'climat';
|
- |
|
192 |
$resultat_json['graphique_climat']['href'] = $this->ajouterHref('graphiques/climat', strtolower($resultat_json['bdnt']).'.nn:'.$resultat_json['num_nomen']);
|
171 |
$graphique_presence = $this->traiterOntologieEcologie() ;
|
193 |
$resultat_json['graphique_sol']['libelle'] = 'sol';
|
172 |
if ($graphique_presence) {
|
194 |
$resultat_json['graphique_sol']['href'] = $this->ajouterHref('graphiques/sol', strtolower($resultat_json['bdnt']).'.nn:'.$resultat_json['num_nomen']);
|
173 |
$this->ajouterLiensGraphique();
|
Line 195... |
Line 174... |
195 |
}
|
174 |
}
|
Line -... |
Line 175... |
- |
|
175 |
}
|
- |
|
176 |
return $this->resultat_json ;
|
- |
|
177 |
|
- |
|
178 |
}
|
- |
|
179 |
|
- |
|
180 |
public function traiterOntologieEcologie() {
|
- |
|
181 |
$donnees_presence = false;
|
- |
|
182 |
$this->champs_ontologiques = $this->recupererTableauConfig('champs_ontologiques');
|
- |
|
183 |
foreach ($this->champs_ontologiques as $cle => $valeur){
|
- |
|
184 |
if ($this->resultat_json[$cle.'_min'] != ""){
|
- |
|
185 |
$donnees_presence = true;
|
- |
|
186 |
$tab_ontologie = $this->recupererOntologies($this->resultat_json[$cle.'_min'], $cle.'_min');
|
- |
|
187 |
unset($this->resultat_json[$cle.'_min']);
|
- |
|
188 |
}
|
- |
|
189 |
if ($this->resultat_json[$cle.'_max'] != ""){
|
- |
|
190 |
$this->recupererOntologies($this->resultat_json[$cle.'_max'], $cle.'_max');
|
- |
|
191 |
unset($this->resultat_json[$cle.'_max']);
|
- |
|
192 |
}
|
- |
|
193 |
}
|
- |
|
194 |
return $donnees_presence;
|
- |
|
195 |
}
|
- |
|
196 |
|
- |
|
197 |
|
- |
|
198 |
public function ajouterLiensGraphique() {
|
- |
|
199 |
$this->resultat_json['graphique_climat']['libelle'] = 'climat';
|
- |
|
200 |
$this->resultat_json['graphique_climat']['href'] = $this->ajouterHref('graphiques/climat',
|
- |
|
201 |
strtolower($this->resultat_json['bdnt']).'.nn:'.$this->resultat_json['num_nomen']);
|
196 |
}
|
202 |
$this->resultat_json['graphique_sol']['libelle'] = 'sol';
|
Line 197... |
Line 203... |
197 |
return $resultat_json ;
|
203 |
$this->resultat_json['graphique_sol']['href'] = $this->ajouterHref('graphiques/sol',
|
198 |
|
204 |
strtolower($this->resultat_json['bdnt']).'.nn:'.$this->resultat_json['num_nomen']);
|
199 |
}
|
205 |
}
|
200 |
|
206 |
|
201 |
//+--------------------------traitement ontologies -------------------------------------------+
|
207 |
//+--------------------------traitement ontologies -------------------------------------------+
|
202 |
|
208 |
|
203 |
public function recupererOntologies($valeur, $champs){
|
209 |
public function recupererOntologies($valeur, $champs){
|
204 |
$chps_sans = preg_replace("/_min|_max/", '', $champs);
|
210 |
$chps_sans = preg_replace("/_min|_max/", '', $champs);
|
205 |
$url = Config::get('url_service_base').Config::get('nom_projet').
|
- |
|
206 |
'/ontologies/'.$this->champs_ontologiques[$chps_sans].':'.urlencode(urlencode($valeur));
|
211 |
$url = Config::get('url_service_base').Config::get('nom_projet').
|
Line -... |
Line 212... |
- |
|
212 |
'/ontologies/'.$this->champs_ontologiques[$chps_sans].':'.urlencode(urlencode($valeur));
|
- |
|
213 |
$val = $this->consulterHref($url);
|
- |
|
214 |
$this->resultat_json[$champs.'.libelle'] = $val->nom;
|
- |
|
215 |
$this->resultat_json[$champs.'.code'] = $valeur;
|
- |
|
216 |
$this->resultat_json[$champs.'.href'] = $url;
|
- |
|
217 |
}
|
- |
|
218 |
|
- |
|
219 |
|
Line -... |
Line 220... |
- |
|
220 |
//+--------------------------FONCTIONS D'ASSEMBLAGE DE LA REQUETE-------------------------------------------+
|
- |
|
221 |
|
- |
|
222 |
public function assemblerLaRequete() {
|
- |
|
223 |
$requete = ' SELECT '.$this->champs_recherches.' FROM '.$this->table.' '
|
- |
|
224 |
.$this->retournerRequeteCondition();
|
- |
|
225 |
return $requete;
|
- |
|
226 |
}
|
- |
|
227 |
|
207 |
$val = $this->consulterHref($url);
|
228 |
|
208 |
$resultat_json[$champs.'.libelle'] = $val->nom;
|
229 |
|
209 |
$resultat_json[$champs.'.code'] = $valeur;
|
230 |
public function retournerRequeteCondition() {
|