| Line 134... |
Line 134... |
| 134 |
} else {
|
134 |
} else {
|
| 135 |
if ($this->recherche == 'etendue') {
|
135 |
if ($this->recherche == 'etendue') {
|
| 136 |
$valeur = '%'.str_replace(' ','% ', $valeur);
|
136 |
$valeur = '%'.str_replace(' ','% ', $valeur);
|
| 137 |
$valeur .= '%';
|
137 |
$valeur .= '%';
|
| 138 |
}
|
138 |
}
|
| 139 |
$this->requete_condition[] = $nom_champ.' LIKE '.$this->getBdd()->proteger($valeur);
|
139 |
$this->requete_condition[] = 'nva.'.$nom_champ.' LIKE '.$this->getBdd()->proteger($valeur);
|
| 140 |
}
|
140 |
}
|
| 141 |
}
|
141 |
}
|
| 142 |
}
|
142 |
}
|
| Line 143... |
Line 143... |
| 143 |
|
143 |
|
| Line 150... |
Line 150... |
| 150 |
if (isset($this->ressources[1]) && !empty($this->ressources[1])) {
|
150 |
if (isset($this->ressources[1]) && !empty($this->ressources[1])) {
|
| 151 |
$this->traiterRessourceChamp(); //modifie requete_champ ou requete_condition
|
151 |
$this->traiterRessourceChamp(); //modifie requete_champ ou requete_condition
|
| 152 |
}
|
152 |
}
|
| 153 |
}
|
153 |
}
|
| 154 |
} else { //rajoute distinct pour ne pas avoir plusieurs fois le même nom
|
154 |
} else { //rajoute distinct pour ne pas avoir plusieurs fois le même nom
|
| 155 |
$this->requete_champ = array('distinct(id)', 'nom_vernaculaire ');
|
155 |
$this->requete_champ = array('distinct(nva.num_nom_vernaculaire)', 'nva.nom_vernaculaire ');
|
| 156 |
}
|
156 |
}
|
| 157 |
}
|
157 |
}
|
| Line 158... |
Line 158... |
| 158 |
|
158 |
|
| 159 |
//requete : /noms-vernaculaires/#id (ex : /noms-vernaculaires/7)
|
159 |
//requete : /noms-vernaculaires/#id (ex : /noms-vernaculaires/7)
|
| 160 |
public function traiterRessourceId() {
|
160 |
public function traiterRessourceId() {
|
| 161 |
if (is_numeric($this->ressources[0])) {
|
161 |
if (is_numeric($this->ressources[0])) {
|
| 162 |
$this->requete_condition[] = ' id = '.$this->getBdd()->proteger($this->ressources[0]);
|
162 |
$this->requete_condition[] = ' nva.num_nom_vernaculaire = '.$this->getBdd()->proteger($this->ressources[0]);
|
| 163 |
$this->format_reponse .= '/id';
|
163 |
$this->format_reponse .= '/id';
|
| 164 |
} elseif ($this->ressources[0] == 'attributions') {
|
164 |
} elseif ($this->ressources[0] == 'attributions') {
|
| 165 |
$this->format_reponse .= '/attributions';
|
165 |
$this->format_reponse .= '/attributions';
|
| 166 |
} else {
|
166 |
} else {
|
| Line 196... |
Line 196... |
| 196 |
}
|
196 |
}
|
| Line 197... |
Line 197... |
| 197 |
|
197 |
|
| 198 |
//+------------------------------------------------------------------------------------------------------+
|
198 |
//+------------------------------------------------------------------------------------------------------+
|
| 199 |
public function assemblerLaRequete() {
|
199 |
public function assemblerLaRequete() {
|
| 200 |
$requete = ' SELECT '.$this->formerRequeteChamp().
|
200 |
$requete = ' SELECT '.$this->formerRequeteChamp().
|
| 201 |
', CASE code_langue WHEN "fra" THEN 1 ELSE 0 END AS tri '.
|
201 |
', CASE nva.code_langue WHEN "fra" THEN 1 ELSE 0 END AS tri '.
|
| - |
|
202 |
' FROM '.str_replace('nva', 'nva_index', $this->table).' inva'.
|
| 202 |
' FROM '.$this->table
|
203 |
' LEFT JOIN '.$this->table.' nva ON nva.num_nom_vernaculaire = inva.num_nom_vernaculaire '
|
| 203 |
.$this->formerRequeteCondition().
|
204 |
.$this->formerRequeteCondition().
|
| 204 |
' ORDER BY tri DESC, nom_vernaculaire ASC '
|
205 |
' ORDER BY tri DESC, nva.nom_vernaculaire ASC '
|
| 205 |
.$this->formerRequeteLimite();
|
206 |
.$this->formerRequeteLimite();
|
| 206 |
return $requete;
|
207 |
return $requete;
|
| Line 207... |
Line 208... |
| 207 |
}
|
208 |
}
|
| 208 |
|
209 |
|
| Line 238... |
Line 239... |
| 238 |
return $this->requete_limite;
|
239 |
return $this->requete_limite;
|
| 239 |
}
|
240 |
}
|
| Line 240... |
Line 241... |
| 240 |
|
241 |
|
| 241 |
//on récupère le nombre total de résultats de la requete (ex : le nombre d'id contenu dans la liste /noms-vernaculaires)
|
242 |
//on récupère le nombre total de résultats de la requete (ex : le nombre d'id contenu dans la liste /noms-vernaculaires)
|
| 242 |
public function recupererTotalResultat() {
|
243 |
public function recupererTotalResultat() {
|
| 243 |
$distinct = ($this->format_reponse == 'noms-vernaculaires/attributions') ? 'id' : 'distinct id ';
|
244 |
$distinct = ($this->format_reponse == 'noms-vernaculaires/attributions') ? '*' : 'distinct nva.num_nom_vernaculaire';
|
| - |
|
245 |
$requete = 'SELECT count('.$distinct.') as nombre FROM '
|
| - |
|
246 |
.str_replace('nva', 'nva_index', $this->table).' inva '
|
| 244 |
$requete = 'SELECT count('.$distinct.') as nombre FROM '
|
247 |
.'INNER JOIN '.$this->table.' nva ON nva.num_nom_vernaculaire = '
|
| 245 |
.$this->table
|
248 |
.'inva.num_nom_vernaculaire '
|
| - |
|
249 |
.$this->formerRequeteCondition();
|
| 246 |
.$this->formerRequeteCondition();
|
250 |
|
| Line 247... |
Line 251... |
| 247 |
$res = $this->getBdd()->recuperer($requete);
|
251 |
$res = $this->getBdd()->recuperer($requete);
|
| 248 |
|
252 |
|
| 249 |
if ($res) {
|
253 |
if ($res) {
|
| Line 289... |
Line 293... |
| 289 |
public function ajouterJsonResultatNV($resultat) {
|
293 |
public function ajouterJsonResultatNV($resultat) {
|
| 290 |
foreach ($resultat as $tab) {
|
294 |
foreach ($resultat as $tab) {
|
| 291 |
foreach ($tab as $key => $valeur) {
|
295 |
foreach ($tab as $key => $valeur) {
|
| 292 |
if ($valeur != '') {
|
296 |
if ($valeur != '') {
|
| 293 |
switch ($key) {
|
297 |
switch ($key) {
|
| 294 |
case 'id' : $num = $valeur; break;
|
298 |
case 'num_nom_vernaculaire' : $num = $valeur; break;
|
| 295 |
case 'nom_vernaculaire' : $this->table_retour['nom'] = $valeur; break;
|
299 |
case 'nom_vernaculaire' : $this->table_retour['nom'] = $valeur; break;
|
| 296 |
default : break;
|
300 |
default : break;
|
| 297 |
}
|
301 |
}
|
| 298 |
}
|
302 |
}
|
| 299 |
}
|
303 |
}
|
| Line 343... |
Line 347... |
| 343 |
$table_nom[] = $tab['nom_vernaculaire'];
|
347 |
$table_nom[] = $tab['nom_vernaculaire'];
|
| 344 |
$oss [] = $tab['nom_vernaculaire'];
|
348 |
$oss [] = $tab['nom_vernaculaire'];
|
| 345 |
}
|
349 |
}
|
| 346 |
}
|
350 |
}
|
| 347 |
}
|
351 |
}
|
| 348 |
if (isset($this->masque)) $masque = implode('&', $this->masque);
|
352 |
$masque = $this->recupererMasque();
|
| - |
|
353 |
if($masque == "") {
|
| 349 |
else $masque = 'Pas de masque';
|
354 |
$masque = "Pas de masque";
|
| - |
|
355 |
}
|
| 350 |
$table_retour_oss = array($masque, $oss);
|
356 |
$table_retour_oss = array($masque, $oss);
|
| 351 |
return $table_retour_oss;
|
357 |
return $table_retour_oss;
|
| 352 |
}
|
358 |
}
|
| Line 353... |
Line 359... |
| 353 |
|
359 |
|
| Line 363... |
Line 369... |
| 363 |
if (isset($url['suivant']) && $url['suivant'] != '') {
|
369 |
if (isset($url['suivant']) && $url['suivant'] != '') {
|
| 364 |
$table_retour_json['entete']['href.suivant'] = $url['suivant'];
|
370 |
$table_retour_json['entete']['href.suivant'] = $url['suivant'];
|
| 365 |
}
|
371 |
}
|
| 366 |
foreach ($resultat as &$tab) {
|
372 |
foreach ($resultat as &$tab) {
|
| 367 |
unset($tab['tri']);
|
373 |
unset($tab['tri']);
|
| - |
|
374 |
$id_nom = $tab['num_nom_vernaculaire'];
|
| 368 |
$resultat_json[$tab['id']]['id'] = $tab['id'];
|
375 |
$resultat_json[$id_nom]['id'] = $id_nom;
|
| 369 |
$resultat_json[$tab['id']]['nom_vernaculaire'] = $tab['nom_vernaculaire'];
|
376 |
$resultat_json[$id_nom]['nom_vernaculaire'] = $tab['nom_vernaculaire'];
|
| 370 |
$resultat_json[$tab['id']]['code_langue'] = $tab['code_langue'];
|
377 |
$resultat_json[$id_nom]['code_langue'] = $tab['code_langue'];
|
| 371 |
$resultat_json[$tab['id']]['taxon.code'] = 'bdtxa.nt:'.$tab['num_taxon'];
|
378 |
$resultat_json[$id_nom]['taxon.code'] = 'bdtxa.nt:'.$tab['num_taxon'];
|
| 372 |
if ($this->retour_format == 'max') {
|
379 |
if ($this->retour_format == 'max') {
|
| 373 |
$resultat_json[$tab['id']]['num_taxon'] = $tab['num_taxon'];
|
380 |
$resultat_json[$id_nom]['num_taxon'] = $tab['num_taxon'];
|
| 374 |
$resultat_json[$tab['id']]['nom_retenu.code'] = $tab['num_taxon'];
|
381 |
$resultat_json[$id_nom]['nom_retenu.code'] = $tab['num_taxon'];
|
| 375 |
$resultat_json[$tab['id']]['taxon'] = $tab['num_taxon'];
|
382 |
$resultat_json[$id_nom]['taxon'] = $tab['num_taxon'];
|
| 376 |
$this->taxons[] = $tab['num_taxon']; // utilisé pour chercher les noms latins plus bas
|
383 |
$this->taxons[] = $tab['num_taxon']; // utilisé pour chercher les noms latins plus bas
|
| 377 |
$resultat_json[$tab['id']]['href'] = $this->ajouterHref('noms-vernaculaires', $tab['id']);
|
384 |
$resultat_json[$id_nom]['href'] = $this->ajouterHref('noms-vernaculaires', $id_nom);
|
| Line 378... |
Line 385... |
| 378 |
|
385 |
|
| 379 |
if($this->champs_supp != array()) {
|
386 |
if($this->champs_supp != array()) {
|
| 380 |
$resultat_json[$tab['id']] = $this->ajouterChampsOntologieLigneResultat($tab);
|
387 |
$resultat_json[$id_nom] = $this->ajouterChampsOntologieLigneResultat($tab);
|
| 381 |
}
|
388 |
}
|
| 382 |
}
|
389 |
}
|
| Line 383... |
Line 390... |
| 383 |
}
|
390 |
}
|
| Line 479... |
Line 486... |
| 479 |
// langue
|
486 |
// langue
|
| 480 |
// num_nom (correspond à un taxon bdtxa)
|
487 |
// num_nom (correspond à un taxon bdtxa)
|
| 481 |
public function formaterNomsVernaculairesId($resultat) {
|
488 |
public function formaterNomsVernaculairesId($resultat) {
|
| 482 |
foreach ($resultat as $taxon) { // pour chaque attribution à un taxon bdtxa
|
489 |
foreach ($resultat as $taxon) { // pour chaque attribution à un taxon bdtxa
|
| 483 |
// on crée les variables qui serviront de clés et on les enléves du tableau
|
490 |
// on crée les variables qui serviront de clés et on les enléves du tableau
|
| 484 |
$num_nom = $taxon['id']; // unique pour un trinôme id, langue, taxon
|
491 |
$num_nom = $taxon['num_nom_vernaculaire']; // unique pour un trinôme id, langue, taxon
|
| 485 |
unset($taxon['id']);
|
492 |
unset($taxon['num_nom_vernaculaire']);
|
| 486 |
$langue = $taxon['code_langue'];
|
493 |
$langue = $taxon['code_langue'];
|
| 487 |
unset($taxon['code_langue']);
|
494 |
unset($taxon['code_langue']);
|
| Line 488... |
Line 495... |
| 488 |
|
495 |
|
| 489 |
foreach ($this->correspondance_champs as $key => $correspondance) { // ordonne les infos pour affichage
|
496 |
foreach ($this->correspondance_champs as $key => $correspondance) { // ordonne les infos pour affichage
|
| Line 501... |
Line 508... |
| 501 |
unset($this->table_retour['href']);
|
508 |
unset($this->table_retour['href']);
|
| 502 |
return $this->table_retour;
|
509 |
return $this->table_retour;
|
| 503 |
}
|
510 |
}
|
| Line 504... |
Line 511... |
| 504 |
|
511 |
|
| 505 |
public function afficherDonnees($champ, $valeur, $langue = '', $num_nom = '') {
|
512 |
public function afficherDonnees($champ, $valeur, $langue = '', $num_nom = '') {
|
| 506 |
if ($champ == 'id' || $champ == 'nom_vernaculaire') {
|
513 |
if ($champ == 'num_nom_vernaculaire' || $champ == 'nom_vernaculaire') {
|
| 507 |
$this->table_retour[$champ] = $valeur;
|
514 |
$this->table_retour[$champ] = $valeur;
|
| 508 |
} elseif (preg_match('/^(.*)\.code$/', $champ, $match)) {
|
515 |
} elseif (preg_match('/^(.*)\.code$/', $champ, $match)) {
|
| 509 |
switch ($match[1]) {
|
516 |
switch ($match[1]) {
|
| 510 |
case 'taxon' : if ($this->retour_format == 'max') {$this->taxons[$num_nom] = $valeur;}
|
517 |
case 'taxon' : if ($this->retour_format == 'max') {$this->taxons[$num_nom] = $valeur;}
|