Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1764 → Rev 1765

/trunk/jrest/lib/FormateurGroupeColonne.php
329,12 → 329,12
if(false && $abbrev == 'date_observation' && $valeur == "0000-00-00") {
/* blah */
}
// ici à cause du passage de $cel ($this), TODO: DB en Singleton !
// ici à cause du passage de $cel ($this->utilisateur)
if($abbrev == 'images') {
$valeur = FormateurGroupeColonne::getImages($obs, $cel->id_utilisateur, $cel);
$valeur = FormateurGroupeColonne::getImages($obs, $cel->id_utilisateur);
}
if($abbrev == 'nom-commun') {
$valeur = FormateurGroupeColonne::getNomCommun_v4($obs, $cel);
$valeur = FormateurGroupeColonne::getNomCommun_v4($obs);
}
if($valeur == null) {
351,7 → 351,7
if(is_null($colonne['dyna'])) continue;
// XXX: PHP-5.3
call_user_func_array($colonne['dyna'],
array($cel, $obs, &$ligne_formatee));
array($obs, &$ligne_formatee));
}
 
return $ligne_formatee;
393,7 → 393,7
* @param $fonction_dynamique (optionnel): défini une fonction ajoutant un nombre arbitraire de colonnes à une ligne donnée
* Utile, notamment, dans le cadre de l'export des champs étendus ou des données baseflor
* La fonction doit TOUJOURS alterer la ligne en lui ajoutant une nombre CONSTANT d'éléments (NULL ou non)
* La fonction doit prendre comme arguments ($cel, $obs, &$ligne_formatee)
* La fonction doit prendre comme arguments ($obs, &$ligne_formatee)
*/
static function GenColInfo($args) {
$default = Array('abbrev' => NULL,
443,12 → 443,12
return NULL;
}
 
static function getImages($obs, $id_utilisateur, $cel) {
static function getImages($obs, $id_utilisateur) {
if(! $id_utilisateur) return NULL;
if(isset(self::$cache['getImages'][$obs['id_observation']]))
return self::$cache['getImages'][$obs['id_observation']];
 
$rec = $cel->requeter(
$rec = Cel::db()->requeter(
sprintf("SELECT GROUP_CONCAT(nom_original ORDER BY nom_original ASC SEPARATOR '%s') AS i FROM cel_images i"
." LEFT JOIN cel_obs_images oi ON (i.id_image = oi.id_image)"
." LEFT JOIN cel_obs o ON (oi.id_observation = o.id_observation)"
605,7 → 605,7
Ainsi, les appels successifs à getNomCommun_v4() ne sont pas couteux (pas de requête SQL) */
static function getNomCommun_preload($cel, $obsids) {
if(!$obsids) return;
if(!self::referenceTableExiste($cel)) return NULL;
if(!self::referenceTableExiste()) return NULL;
 
// CREATE INDEX i_nom_referentiel ON cel_obs (nom_referentiel(5));
$req = sprintf("SELECT r.referentiel, r.num_taxon, r.nom_commun FROM cel_references r" .
612,7 → 612,7
" INNER JOIN cel_obs c ON (r.referentiel = substring_index(c.nom_referentiel, ':', 1) and r.num_taxon = c.nt)" .
" WHERE c.id_observation IN (%s)",
implode(',', $obsids));
$res = $cel->requeter($req);
$res = Cel::db()->requeter($req);
foreach($res as $v) {
self::$cache['getNomCommun'][$v['referentiel'] . '-' . $v['num_taxon'] . '-' . 'fra'] = $v['nom_commun'];
}
619,18 → 619,18
return NULL;
}
 
static function referenceTableExiste($cel) {
static function referenceTableExiste() {
if(!self::$is_table) {
// une seule fois
if(! $cel->executerRequete("SHOW TABLES LIKE 'cel_references'", Cel::SQL_RETOUR_LIGNE)) return FALSE;
if(! Cel::db()->executerRequete("SHOW TABLES LIKE 'cel_references'", Cel::SQL_RETOUR_LIGNE)) return FALSE;
self::$is_table = TRUE;
}
return TRUE;
}
static function getNomCommun_v4($obs, $cel) {
static function getNomCommun_v4($obs) {
if(! $obs['nt']) return NULL;
if(! self::referenceTableExiste($cel)) return NULL;
if(! self::referenceTableExiste()) return NULL;
 
$langue = 'fra';
list($referentiel) = explode(':', strtolower($obs['nom_referentiel']));
644,11 → 644,11
}
 
// pas de cache:
$nom = $cel->executerRequete(sprintf("SELECT nom_commun FROM cel_references " .
"WHERE referentiel = '%s' AND num_taxon = %d LIMIT 1",
$referentiel,
$obs['nt']),
Cel::SQL_RETOUR_LIGNE);
$nom = Cel::db()->executerRequete(sprintf("SELECT nom_commun FROM cel_references " .
"WHERE referentiel = '%s' AND num_taxon = %d LIMIT 1",
$referentiel,
$obs['nt']),
Cel::SQL_RETOUR_LIGNE);
 
if(! $nom) return NULL;
$nom = $nom["nom_commun"];
663,7 → 663,7
Ainsi, les appels successifs à baseflor_ligne() ne sont pas couteux (pas de requête SQL) */
static function baseflor_preload($cel, $obsids) {
if(!$obsids) return;
if(!self::referenceTableExiste($cel)) return NULL;
if(!self::referenceTableExiste()) return NULL;
 
$req = sprintf("SELECT referentiel, num_nom_retenu, %s FROM cel_references r" .
" INNER JOIN cel_obs c ON (r.num_nom_retenu = c.nom_ret_nn)" .
671,7 → 671,7
//" AND catminat_code IS NOT NULL", // TODO: suppression des NULL ici signifie que le cache sera partiel...
implode(',', array_keys(self::$baseflor_col)),
implode(',', $obsids));
$res = $cel->requeter($req);
$res = Cel::db()->requeter($req);
if(!$res) return NULL;
 
foreach($res as $v) {
685,13 → 685,13
}
 
static function baseflor_ligne($cel, $obs, &$ligne) {
static function baseflor_ligne($obs, &$ligne) {
if(! $obs['nom_ret_nn']) {
$ligne = array_merge($ligne, array_fill(0, count(self::$baseflor_col), NULL));
return;
}
 
if(! self::referenceTableExiste($cel)) {
if(! self::referenceTableExiste()) {
$ligne = array_merge($ligne, array_fill(0, count(self::$baseflor_col), NULL));
return;
}
707,7 → 707,7
}
 
// pas de cache:
$data = $cel->executerRequete(sprintf("SELECT %s FROM cel_references " .
$data = Cel::db()->executerRequete(sprintf("SELECT %s FROM cel_references " .
"WHERE referentiel = '%s' AND num_nom_retenu = %d LIMIT 1",
implode(', ', array_keys(self::$baseflor_col)),
$referentiel,
760,7 → 760,7
return $champs_etendus_fmt;
}
 
static function champsEtendus_ligne($cel, $obs, &$ligne) {
static function champsEtendus_ligne($obs, &$ligne) {
// si header n'est pas défini, aucune observation ne possède de champ étendu
// et nous n'ajoutons ni colonnes, ni valeurs.
if(! isset(self::$cache['champsEtendus']['header'])) return;