43,6 → 43,32 |
"syntaxon" => "Syntaxon", |
); |
|
// TODO: dirty, ordre des champs étendus... souhaité pour florilèges: |
static $ordre_champ_etendus_Florileges = array( |
"personneStructure", |
"personneService", |
"personneFonction", |
"adresse", |
"latitudeDebutRue", |
"longitudeDebutRue", |
"latitudeFinRue", |
"longitudeFinRue", |
"typoUrbaine", |
"revetementSol", |
"presenceZoneVegetalise", |
"hauteurBatimentAvoisinant", |
"intensiteGestion", |
"periodiciteTraitementPhyto", |
"dateArretTraitementPhyto", |
"itineraireGestion", |
"dateDerniereIntervention", |
"hauteurPlante", |
"resistanceTraitementPhyto", |
"vitesseCroissance", |
"perceptionTechnicien", |
"perceptionRiverainMauvaise", |
); |
|
static function colGroupsValidation($groupe_de_champs = 'standard,avance') { |
if(! $groupe_de_champs) return FALSE; |
if(is_string($groupe_de_champs)) { |
577,11 → 603,18 |
static function champsEtendus_preload($cel, $obsids) { |
$gestion_champs_etendus = new GestionChampsEtendus($cel->config, 'obs'); |
$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($obsids); |
// ces deux lignes réordonnent l'ordre des colonnes des champs étendus en fonction de l'ordre (très spécifique) |
// de self::$ordre_champ_etendus_Florileges, les champs non-mentionnés sont ajoutés à la fin. |
$colonnes_champs_supp_par_obs = self::sortArrayByArray(array_flip($colonnes_champs_supp_par_obs), |
self::$ordre_champ_etendus_Florileges); |
$colonnes_champs_supp_par_obs = array_keys($colonnes_champs_supp_par_obs); |
|
// si le SELECT des clefs ne retourne rien, une autre requêtes est inutile |
// TODO: optimize, 1 seule requête |
if(!$colonnes_champs_supp_par_obs) return Array('header' => array(), 'data' => array()); |
|
$champs_supp_par_obs = $gestion_champs_etendus->consulterParLots($obsids); |
|
self::$cache['champsEtendus']['header'] = $colonnes_champs_supp_par_obs; |
foreach($champs_supp_par_obs as &$v) { |
$v = self::champsEtendus_aplatir($v); |
632,4 → 665,20 |
// XXX/ array_merge() ? |
$ligne += $ligne_etendue_fmt; |
} |
|
/* HELPERS */ |
|
// http://stackoverflow.com/questions/348410/sort-an-array-based-on-another-array |
// XXX; redéfinition, utilisé aussi par ExportXLS |
static function sortArrayByArray($array, $orderArray) { |
$ordered = array(); |
foreach($orderArray as $key) { |
if(array_key_exists($key, $array)) { |
$ordered[$key] = $array[$key]; |
unset($array[$key]); |
} |
} |
return $ordered + $array; |
} |
|
} |