Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1526 → Rev 1527

/trunk/jrest/lib/GestionChampsTags.php
File deleted
\ No newline at end of file
/trunk/jrest/lib/GestionObservation.php
108,6 → 108,39
}
/**
* Modifie une observation publique dont l'id et l'utilisateur sont passé en paramètre
*
* @param int $utilisateur id utilisateur du proprietaire de l'observation
* @param int $id identifiant de l'observation
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
*
* @return true ou false suivant le succès de l'opération
*/
public function modifierObservationPublique($utilisateur, $id, $parametres) {
$retour = true;
$requete_modification = "UPDATE cel_obs SET " ;
$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
$requete_modification .= $sous_requete_modification;
$requete_modification .= " WHERE id_observation = ".$this->proteger($id).
" AND ce_utilisateur = ".$this->proteger($utilisateur)." ".
" AND transmission = 1";
// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes)
// ce qui peut arriver dans les commentaires
// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple
$resultat_modification = $this->executerRequeteSimple($requete_modification);
if ($resultat_modification === false) {
$retour = false;
$this->logger("CEL_bugs","Erreur de mise à jour de l\'observation : ".$id);
}
return $retour;
}
/**
* Supprime une ou plusieurs observations grâce aux paramètres fournis
*
* @param int $utilisateur id utilisateur du proprietaire de l'observation
247,10 → 280,16
* @return $parametres le tableau modifié selon ce qu'il contenait
*/
private function formaterParametresObservation($parametres) {
$code_referentiel = 'bdtfx';
if(!isset($parametres['nom_referentiel'])) {
$parametres['nom_referentiel'] = 'bdtfx:v1.01';
}
$code_referentiel = substr($parametres['nom_referentiel'], 0, 5);
if (($parametres['nom_sel_nn'] == '' || $parametres['nom_sel_nn'] == 0) && $parametres['nom_sel'] != '') {
if ($this->estUnNomSolitaire($parametres)) {
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config);
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config, $code_referentiel);
// Utilisation d'un nom sans numéro nomenclatural, recherche d'une correspondance sur le nom
$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNom($parametres['nom_sel']);
 
259,20 → 298,16
if(count($complement) > 0) {
$parametres['nom_sel_nn'] = $complement[0][0];
}
$parametres['nom_referentiel'] = 'bdtfx:v1.01';
}
 
if ($parametres['nom_sel_nn'] != '') {
if ($this->parametreNumNomEstPresent($parametres)) {
// Utilisation d'un nom faisant parti du referentiel : recherche du nom valide correspondant
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config);
$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config , $code_referentiel);
$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNumNom($parametres['nom_sel_nn']);
$parametres['nom_ret']=$complement['Nom_Retenu'];
$parametres['nom_ret_nn']=$complement['Num_Nom_Retenu'];
$parametres['nt']=$complement['Num_Taxon'];
$parametres['famille']=$complement['Famille'];
$parametres['nom_referentiel'] = 'bdtfx:v1.01';
}
if(isset($parametres['ce_utilisateur'])) {
305,13 → 340,30
 
// TODO : voir si l'on peut utiliser un des fonctions de la classe cel
if (isset($parametres['date_observation']) && $parametres['date_observation']!="null") {
list($jour,$mois,$annee)=explode("/",$parametres['date_observation']);
$parametres['date_observation']=$annee."-".$mois."-".$jour." 0:0:0";
if(substr_count($parametres['date_observation'], '/') == 3) {
list($jour,$mois,$annee)=explode("/",$parametres['date_observation']);
$parametres['date_observation']=$annee."-".$mois."-".$jour." 0:0:0";
}
}
return $parametres;
}
private function estUnNomSolitaire($parametres) {
return $this->parametreNumNomPasPresent($parametres) && $parametres['nom_sel'] != '';
}
private function parametreNumNomEstPresent($parametres) {
return !$this->parametreNumNomPasPresent($parametres);
}
private function parametreNumNomPasPresent($parametres) {
return (!isset($parametres['nom_sel_nn']) ||
$parametres['nom_sel_nn'] == null ||
$parametres['nom_sel_nn'] == '' ||
$parametres['nom_sel_nn'] == 0);
}
/**
* Assemble une sous requete pour un ajout, tout en formatant les paramètres et en recherchant
* les infos complémentaires
/trunk/jrest/lib/GestionChampsEtendus.php
82,22 → 82,24
* @return array
*/
public function obtenirChampsEtendusPourElementsMultiples($ids_element_lies) {
$ids_element_lies = array_map(array($this, 'proteger'),$ids_element_lies);
$requete = "SELECT * FROM ".$this->table_champs_etendus." ".
"WHERE ".$this->champ_id." IN (".implode(',',$ids_element_lies).") ";
 
$resultats = $this->executerRequete($requete);
$champs_etendus_par_element = array();
foreach ($resultats as &$ligne) {
$id_element = $ligne[$this->champ_id];
if(!isset($champs_etendus_par_element[$id_element])) {
$champs_etendus_par_element[$id_element] = array();
if(!empty($ids_element_lies)) {
$ids_element_lies = array_map(array($this, 'proteger'),$ids_element_lies);
$requete = "SELECT * FROM ".$this->table_champs_etendus." ".
"WHERE ".$this->champ_id." IN (".implode(',',$ids_element_lies).") ";
$resultats = $this->executerRequete($requete);
$champs_etendus_par_element = array();
foreach ($resultats as &$ligne) {
$id_element = $ligne[$this->champ_id];
if(!isset($champs_etendus_par_element[$id_element])) {
$champs_etendus_par_element[$id_element] = array();
}
$champs_etendus_par_element[$id_element][$ligne['cle']] = $ligne['valeur'];
}
$champs_etendus_par_element[$id_element][$ligne['cle']] = $ligne['valeur'];
}
return $champs_etendus_par_element;
/trunk/jrest/lib/RechercheInfosTaxonBeta.php
24,11 → 24,17
private $url_service_chorologie = null;
private $masque_recherche = null;
private $code_referentiel = 'bdtfx';
public function RechercheInfosTaxonBeta($config, $code_referentiel = 'bdtfx') {
parent::__construct($config);
$this->code_referentiel = $code_referentiel;
$this->formaterUrlsServices($config);
}
public function RechercheInfosTaxonBeta($config) {
parent::__construct($config);
$this->url_service_nom = $config['eflore']['url_service_nom'];
$this->url_service_taxon = $config['eflore']['url_service_taxon'];
private function formaterUrlsServices($config) {
$this->url_service_nom = str_replace('{referentiel}', $this->code_referentiel ,$config['eflore']['url_service_nom']);
$this->url_service_taxon = str_replace('{referentiel}', $this->code_referentiel ,$config['eflore']['url_service_taxon']);
$this->url_service_chorologie_obs = $config['eflore']['url_service_chorologie_obs'];
}
176,7 → 182,6
}
public function rechercherNumTaxSurNumNom($num_nom) {
$nt = null;
$url = $this->url_service_nom."/".$num_nom.'?retour.champs=num_taxonomique';
$resultat = @file_get_contents($url);
222,7 → 227,7
$identifiant_espece=utf8_encode($identifiant_espece);
$retour = array();
//TODO: voir ce qu'on fait pour l'import de différent référentiels
preg_match('/BDNFFnn([0-9][0-9]*)/',$identifiant_espece, $elements);
if (isset($elements[1])) {
// Numero nomenclatural
/trunk/jrest/lib/Cel.php
326,7 → 326,7
 
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DE L'IDENTIFICATION
 
protected function getAuthIdentifiant() {
$id = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : null;
return $id;
377,6 → 377,17
}
}
}
public function controleAppelIpAutorisee() {
$ips_autorisees = explode(',', $this->config['jrest_admin']['ip_autorisees']);
$ip_appelante = $_SERVER['REMOTE_ADDR'];
if(!in_array($ip_appelante, $ips_autorisees) && $ip_appelante != $_SERVER['SERVER_ADDR']) {
header('HTTP/1.0 401 Unauthorized');
echo 'Accès interdit';
exit(0);
}
return true;
}
 
public function logger($index,$chaine) {
if(!class_exists('Log')) {
/trunk/jrest/lib/RechercheObservation.php
95,9 → 95,13
}
public function formaterPourEnvoiCel($tableau_observations) {
$ids = array();
foreach($tableau_observations as &$observation) {
$observation['ce_zone_geo'] = $this->convertirCodeZoneGeoVersCodeInsee($observation['ce_zone_geo']);
$ids_mots_cles = $this->getIdsMotsClesObservation($observation['id_observation']);
$ids[] = $observation['id_observation'];
$mots_cles_chaine = '';
foreach($ids_mots_cles as $id_mot_cle) {
$mots_cles_chaine .= $id_mot_cle['id_mot_cle_obs'].';';
112,6 → 116,15
}
}
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
$champs_supp = $gestion_champs_etendus->obtenirChampsEtendusPourElementsMultiples($ids);
foreach($tableau_observations as &$obs) {
if(isset($champs_supp[$obs['id_observation']])) {
$obs['obs_etendue'] = $champs_supp[$obs['id_observation']];
}
}
return $tableau_observations;
}