/trunk/jrest/bibliotheque/RechercheObservation.php |
---|
110,7 → 110,7 |
} |
$requete .= $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres); |
$requete = rtrim($requete, 'AND '); |
$resultat = Cel::db()->requeter($requete); |
$resultat = Cel::db()->requeter($requete); |
$nb_obs = ($resultat && is_array($resultat) && count($resultat) > 0) ? $resultat[0]['nb_obs'] : '0'; |
return $nb_obs; |
} |
203,6 → 203,7 |
} |
switch ($nom) { |
case "programme"; |
case "mots_cles"; |
$sous_requete .= $this->creerSousRequeteMotsCles($valeur); |
$sous_requete .= ' AND '; |
298,6 → 299,10 |
$sous_requete .= $valeur; |
$sous_requete .= ' AND '; |
break; |
case 'validation_identiplante': |
$sous_requete .= "`id_observation` in (SELECT distinct `ce_observation` FROM tb_del.`del_commentaire` WHERE `proposition_retenue` = 1 )"; |
$sous_requete .= ' AND '; |
break; |
default: |
if(!preg_match('/^[a-zA-Z0-9_-]+$/', $nom)) break; |
$valeur = rtrim($valeur); |
/trunk/jrest/bibliotheque/FormateurGroupeColonne.php |
---|
32,6 → 32,7 |
// les groupes de champs utilisables |
static $fieldGroups = array( |
'standard', |
'standardexport', |
'avance', |
'etendu', |
'baseflor', |
81,7 → 82,7 |
'perceptionRiverainMauvaise', |
); |
static function colGroupsValidation($groupe_de_champs = 'standard,avance') { |
static function colGroupsValidation($groupe_de_champs = 'standard,avance', $programme = "") { |
if (! $groupe_de_champs) return FALSE; |
if (is_string($groupe_de_champs)) { |
$groupe_de_champs = array_flip(explode(',', $groupe_de_champs)); |
94,6 → 95,10 |
if (!$groupe_de_champs) { |
return false; |
} |
if ($programme != "") { |
$groupe_de_champs['avance'] = true; |
$groupe_de_champs['etendu'] = true; |
} |
// toujours ajouter standard |
$groupe_de_champs['standard'] = true; |
return implode(',', array_keys($groupe_de_champs)); |
129,8 → 134,10 |
} |
$colonnes = array(); |
if (isset($groupe_de_champs['standard'])) { |
if (isset($groupe_de_champs['standardexport'])) { |
$colonnes += Array( |
'guid' => self::GenColInfo(Array('abbrev' => 'guid', |
'nom' => 'Identifiant unique')), |
'nom_sel' => self::GenColInfo(Array('abbrev' => 'nom_sel', |
'nom' => 'Espèce')), |
'nom_sel_nn' => self::GenColInfo(Array('abbrev' => 'nom_sel_nn', |
183,7 → 190,68 |
'nom' => 'Référentiel Géographique', |
'extra' => 1, |
'importable' => FALSE)), |
'programme' => self::GenColInfo(Array('abbrev' => 'programme', |
'nom' => 'Programme de sciences participatives ou observatoire citoyen', |
'importable' => FALSE)), |
'validation_identiplante' => self::GenColInfo(Array('abbrev' => 'validation_identiplante', |
'nom' => 'Espéce validée sur IdentiPlante', |
'importable' => FALSE)), |
); |
} elseif (isset($groupe_de_champs['standard'])) { |
$colonnes += Array( |
'nom_sel' => self::GenColInfo(Array('abbrev' => 'nom_sel', |
'nom' => 'Espèce')), |
'nom_sel_nn' => self::GenColInfo(Array('abbrev' => 'nom_sel_nn', |
'nom' => 'Numéro nomenclatural', |
'importable' => FALSE)), |
'nom_ret' => self::GenColInfo(Array('abbrev' => 'nom_ret', |
'nom' => 'Nom retenu', |
'importable' => FALSE)), |
'nom_ret_nn' => self::GenColInfo(Array('abbrev' => 'nom_ret_nn', |
'nom' => 'Numéro nomenclatural nom retenu', |
'importable' => FALSE)), |
'nt' => self::GenColInfo(Array('abbrev' => 'nt', |
'nom' => 'Numéro taxonomique', |
'importable' => FALSE)), |
'famille' => self::GenColInfo(Array('abbrev' => 'famille', |
'nom' => 'Famille', |
'importable' => FALSE)), |
'nom_referentiel' => self::GenColInfo(Array('abbrev' => 'nom_referentiel', |
'nom' => 'Referentiel taxonomique')), |
'pays' => self::GenColInfo(Array('abbrev' => 'pays', |
'nom' => 'Pays')), |
'zone_geo' => self::GenColInfo(Array('abbrev' => 'zone_geo', |
'nom' => 'Commune')), |
'ce_zone_geo' => self::GenColInfo(Array('abbrev' => 'ce_zone_geo', |
'nom' => 'Identifiant Commune', |
'fonction' => 'convertirCodeZoneGeoVersDepartement')), |
'date_observation' => self::GenColInfo(Array('abbrev' => 'date_observation', |
'nom' => 'Date', |
'fonction' => 'formaterDate')), |
'lieudit' => self::GenColInfo(Array('abbrev' => 'lieudit', |
'nom' => 'Lieu-dit')), |
'station' => self::GenColInfo(Array('abbrev' => 'station', |
'nom' => 'Station')), |
'milieu' => self::GenColInfo(Array('abbrev' => 'milieu', |
'nom' => 'Milieu')), |
'commentaire' => self::GenColInfo(Array('abbrev' => 'commentaire', |
'nom' => 'Notes')), |
'latitude' => self::GenColInfo(Array('abbrev' => 'latitude', |
'nom' => 'Latitude', |
'extra' => 1, |
'fonction' => 'trim0')), |
'longitude' => self::GenColInfo(Array('abbrev' => 'longitude', |
'nom' => 'Longitude', |
'extra' => 1, |
'fonction' => 'trim0')), |
'altitude' => self::GenColInfo(Array('abbrev' => 'altitude', |
'nom' => 'Altitude', |
'extra' => 1)), // pas de trim0 car INT(5) en DB |
'geodatum' => self::GenColInfo(Array('abbrev' => 'geodatum', |
'nom' => 'Référentiel Géographique', |
'extra' => 1, |
'importable' => FALSE)), |
); |
} |
if(isset($groupe_de_champs['avance'])) { |
/trunk/jrest/bibliotheque/RechercheObservationExport.php |
---|
35,7 → 35,7 |
public function rechercherObservations($id_utilisateur = null, $criteres = array(), $debut = 0, $limite = 50, $autoriser_sql_brut = FALSE) { |
$requete_selection_observations = 'SELECT * FROM cel_export '; |
unset($criteres['standard']); |
if ($id_utilisateur != null) { |
$requete_selection_observations .= 'WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' AND '; |
} else if(count($criteres) > 0) { |
70,6 → 70,7 |
} |
public function compterObservations($id_utilisateur = null, $criteres = array()) { |
unset($criteres['standard']); |
$requete = 'SELECT COUNT(*) AS nb_obs FROM cel_export '; |
if ($id_utilisateur != null) { |
$requete .= 'WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' AND '; |
77,8 → 78,8 |
$requete .= 'WHERE '; |
} |
$requete .= $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres); |
$requete = rtrim($requete, 'AND '); |
$resultat = Cel::db()->requeter($requete); |
$requete = rtrim($requete, 'AND '); |
$resultat = Cel::db()->requeter($requete);//print_r($requete);exit; |
$nb_obs = ($resultat && is_array($resultat) && count($resultat) > 0) ? $resultat[0]['nb_obs'] : '0'; |
return $nb_obs; |
} |
/trunk/jrest/services/CelWidgetExport.php |
---|
65,6 → 65,7 |
'colonnes' => 'colonnes', |
'transmission' => 'transmission', |
'obsids' => 'obsids', |
'standard' => 'standard', |
); |
private $limite_decoupage_defaut = 9000; |
102,8 → 103,11 |
private function getCalcul() { |
$criteres = $this->traiterParametresAutorises($_GET); |
$criteres['transmission'] = 1; |
if (!isset($criteres['standard'])) { |
$criteres['transmission'] = 1; |
} else { |
unset($criteres['transmission']); |
} |
// Définit si l'on exporte les obs privées ainsi que les champs étendus privés |
$this->export_prive = $this->doitEtPeutExporterObsPrivees($criteres); |
if($this->export_prive) { |
110,10 → 114,14 |
unset($criteres['transmission']); |
$this->id_utilisateur = $criteres['id_utilisateur']; |
} |
$chercheur_observations = new RechercheObservationExport($this->config); |
if (isset($criteres['standard']) && $criteres['standard'] == 1) { |
$chercheur_observations = new RechercheObservationExport($this->config); |
} else { |
$chercheur_observations = new RechercheObservation($this->config); |
} |
$numero_page = isset($criteres['debut']) ? $criteres['debut'] : 0; |
$limite = isset($criteres['limite']) ? $criteres['limite'] : 0; |
$colonnes = @FormateurGroupeColonne::colGroupsValidation($criteres['colonnes']); |
$colonnes = @FormateurGroupeColonne::colGroupsValidation($criteres['colonnes'], $criteres['programme']); |
unset($criteres['limite']); |
unset($criteres['debut']); |
166,7 → 174,11 |
if(!$criteres) die('erreur: pas de paramètre reçu'); |
if(!in_array($this->format, array('pdf','csv','xls'))) die('erreur: format invalide'); |
//$criteres['transmission'] = 1; |
if (!isset($criteres['standard'])) { |
$criteres['transmission'] = 1; |
} else { |
unset($criteres['transmission']); |
} |
// Définit si l'on exporte les obs privées ainsi que les champs étendus privés |
$this->export_prive = $this->doitEtPeutExporterObsPrivees($criteres); |
if($this->export_prive) { |
173,8 → 185,11 |
//unset($criteres['transmission']); |
$this->id_utilisateur = $criteres['ce_utilisateur']; |
} |
$chercheur_observations = new RechercheObservationExport($this->config); |
if (isset($criteres['standard']) && $criteres['standard'] == 1) { |
$chercheur_observations = new RechercheObservationExport($this->config); |
} else { |
$chercheur_observations = new RechercheObservation($this->config); |
} |
$debut = isset($criteres['debut']) ? intval($criteres['debut']) : 0; |
$limite = isset($criteres['limite']) ? intval($criteres['limite']) : 0; |
$groupes = @FormateurGroupeColonne::colGroupsValidation($criteres['colonnes']); |
243,7 → 258,6 |
$parametres_traites[$this->parametres_autorises[$cle]] = $valeur; |
} |
} |
$parametres_traites['obsids'] = @self::traiterObsIds($parametres['obsids']); |
return $parametres_traites; |
} |
357,32 → 371,6 |
return ! empty($utilisateur['id_utilisateur']) && $id_utilisateur == $utilisateur['id_utilisateur']; |
} |
static function traiterObsIds($range_param) { |
if (!isset($range_param)) return NULL; |
// trim() car: `POST http://url<<<"range=*"` |
if (trim($range_param) == '*') return NULL; |
return self::rangeToList(trim($range_param)); |
} |
/* |
* @param $fieldSets: un range, eg: 1-5,8,32,58-101 |
* @return un tableau trié, eg: 1,2,3,4,5,8,32,58,...,101 |
* http://stackoverflow.com/questions/7698664/converting-a-range-or-partial-array-in-the-form-3-6-or-3-6-12-into-an-arra |
*/ |
static function rangeToList($in = '') { |
$inSets = explode(',', trim($in, ',')); |
$outSets = array(); |
foreach($inSets as $inSet) { |
list($start,$end) = explode('-', $inSet . '-' . $inSet); |
// ignore les ranges trop importants |
if($start > 10000000 || $end > 10000000 || abs($start-$end) > 10000) continue; |
$outSets = array_merge($outSets,range($start,$end)); |
} |
$outSets = array_unique($outSets); |
$outSets = array_filter($outSets, 'is_numeric'); |
sort($outSets); |
return $outSets; |
} |
} |
?> |