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