Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3131 → Rev 3134

/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;
}
 
}
?>