229,8 → 229,48 |
} |
} |
|
//+------------------------------------------------------------------------------------------------------+ |
// fait du neuf avec du vieux |
public function assemblerLaRequete() { |
$requete = false; |
if ($this->format_reponse == 'noms-vernaculaires') { |
// mode liste |
$requete = $this->assemblerRequeteListe(); |
} else { |
$requete = $this->assemblerRequeteAutre(); |
} |
return $requete; |
} |
|
/** |
* Exécute un astucieux GROUP BY afin que le service retourne ce qu'il |
* annonce qu'il retourne (truc de ouf!) - pour le mode "liste" |
*/ |
protected function assemblerRequeteListe() { |
$count = $this->recupererTotalResultat(); |
$limiteClause = self::formerRequeteLimite( // LIMIT |
$this->limite_requete['depart'], |
$count, |
$this->limite_requete['limite'] |
); |
|
$req = sprintf( |
'SELECT %s, group_concat(num_taxon) as num_taxon, IF(num_statut="",1,0) AS is_null' . |
' FROM %s WHERE %s GROUP BY id ORDER BY %s is_null ASC, num_statut ASC %s -- %s:%d', |
|
in_array('*', $this->requete_champ) ? ' * ' : implode(', ', $this->requete_champ), |
$this->table, |
$this->requete_condition ? implode(' AND ', $this->requete_condition) : 'TRUE', |
$this->tri ? ($this->tri . ' ' . $this->tri_ordre . ', ') : '', |
$limiteClause, |
__FILE__, __LINE__); |
//echo "REQ: $req\n"; |
return $req; |
} |
|
/** |
* Ancien système d'assemblage de requête |
*/ |
protected function assemblerRequeteAutre() { |
$nolimit = in_array( |
$this->format_reponse, |
array($this->service.'/id', $this->service.'/id/champs')); |
252,6 → 292,7 |
$this->tri ? ($this->tri . ' ' . $this->tri_ordre . ', ') : '', |
$nolimit ? '' : $limiteClause, |
__FILE__, __LINE__); |
//echo "REQ 2: $req\n"; |
return $req; |
} |
|
308,6 → 349,7 |
case 'noms-vernaculaires/id/champ' : $reponse = $this->formaterNomsVernaculairesIdChamp($resultat); break; |
default : break; |
} |
//echo "\nCOMPTE: " . count($reponse['resultat']) . "\n\n"; |
return $reponse; |
} |
|
326,8 → 368,15 |
return $table_retour_json; |
} |
|
/** |
* @TODO Ne devrait pas retourner un oblet mais un Array (conserve l'ordre, |
* évite d'écraser des clefs etc.) |
*/ |
public function ajouterJsonResultatNV($resultat) { |
//echo "CPT RES: " . count($resultat) . "\n\n"; |
$resultat_json = array(); |
foreach ($resultat as $tab) { |
$this->table_retour = array(); |
foreach ($tab as $key => $valeur) { |
if ($valeur != '') { |
switch ($key) { |
343,7 → 392,6 |
} |
if ($this->retour_format == 'max') $this->table_retour['href'] = $this->ajouterHref('noms-vernaculaires', $num); |
$resultat_json[$num] = $this->table_retour; |
$this->table_retour = array(); |
} |
return $resultat_json; |
} |