81,7 → 81,7 |
/* 'nom_commun' => self::GenColInfo('nom_commun', 'Nom Commun', 1, NULL, 'getNomCommun', FALSE), |
'nom-commun' => self::GenColInfo('nom-commun', 'Nom Commun', 1, NULL, 'getNomCommun_v2'), |
'nom-commun' => self::GenColInfo('nom-commun', 'Nom Commun', 1, NULL, 'getNomCommun_v3'), */ |
'nom-commun' => self::GenColInfo('nom-commun', 'Nom Commun', 1, NULL, NULL /* cas particu 'getNomCommun_v4' */), |
'nom-commun' => self::GenColInfo('nom-commun', 'Nom Commun', 1, NULL, NULL /* cas particu 'getNomCommun_v4' */, TRUE, 'getNomCommun_preload'), |
|
); |
} |
88,6 → 88,15 |
|
return $colonnes; |
} |
|
static function preload($colonnes, $cel, $ids) { |
$result = array(); |
foreach($colonnes as $abbrev => $colonne) { |
if(!$colonne['preload']) continue; |
$result[$abbrev] = call_user_func(array(__CLASS__, $colonne['preload']), $cel, $ids); |
} |
return $result; |
} |
|
public static function getIntitulesColonnes($colonnes) { |
return array_map(array('FormateurGroupeColonne', 'retournerNomItem'), $colonnes); |
96,7 → 105,7 |
public static function retournerNomItem(&$item) { |
return $item['nom']; |
} |
|
|
public static function getLigneObservation(&$obs, &$colonnes, $cel = false) { |
|
$ligne_formatee = array(); |
143,11 → 152,16 |
// // fin de section "cas particuliers" |
$ligne_formatee[] = $valeur; |
} |
|
// TODO: |
// taxon => (code_catminat) => syntaxon => données baseveg |
|
return $ligne_formatee; |
} |
|
/* |
* Wrapper générant un tableau associatif: |
* Ne pas changer les valeurs par défaut du prototype sans réflexion sur l'implication pour nomEnsembleVersListeColonnes() |
|
* @param $abbrev (obligatoire): nom court de colonne, largement utilisé lors de l'import. |
* En effet chaque ligne importée est accessible à l'aide du `define` de $abbrev en majuscule, préfixé de "C_" |
172,15 → 186,19 |
|
* @param $importable (optionnel): défini si la colonne est traitée (ou absolument ignorée par PHPExcel) lors de |
* l'import. |
|
* @param $preload (optionnel): défini une fonction de préchargement massif de donnée potentiellement utilisable par $fonction_data. |
* Utile, notamment, dans le cadre de l'export |
|
*/ |
static function GenColInfo($abbrev, $nom, $is_extra = 0, $fonction = NULL, $fonction_data = NULL, $importable = TRUE) { |
static function GenColInfo($abbrev, $nom, $is_extra = 0, $fonction = NULL, $fonction_data = NULL, $importable = TRUE, $preload = NULL) { |
return Array('abbrev' => $abbrev, |
'nom' => $nom, |
'extra' => $is_extra ? 1 : 0, |
'fonction' => $fonction, |
'fonction_data' => $fonction_data, |
'importable' => $importable |
'importable' => $importable, |
'preload' => $preload, |
); |
} |
|
348,6 → 366,25 |
return $nom; |
} |
|
/* Cette fonction initialise le cache des noms communs en 1 fois, sur la liste des observations à exporter. |
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(!$cel->executerRequete("SHOW TABLES LIKE 'cel_references'", Cel::SQL_RETOUR_LIGNE)) 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" . |
" 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); |
foreach($res as $v) { |
self::$cache['getNomCommun'][$v['referentiel'] . '-' . $v['num_taxon'] . '-' . 'fra'] = $v['nom_commun']; |
} |
return NULL; |
} |
|
static function getNomCommun_v4($obs, $cel) { |
static $is_table = false; |
if(! $obs['nt']) return NULL; |
364,10 → 401,6 |
if(isset(self::$cache['getNomCommun'][$cache_id])) return self::$cache['getNomCommun'][$cache_id]; |
|
// pas de cache: |
$donnees = Array('masque.nt' => $obs['nt'], |
'masque.lg' => $langue, |
'retour.champs' => 'conseil_emploi'); |
|
$nom = $cel->executerRequete(sprintf("SELECT nom_commun FROM cel_references " . |
"WHERE referentiel = '%s' AND num_taxon = %d LIMIT 1", |
$referentiel, |