Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1785 → Rev 1786

/trunk/jrest/lib/GestionObservation.php
34,7 → 34,10
$retour = true;
$parametres['ordre'] = $this->renvoyerDernierOrdreUtilisePlusUn($utilisateur);
$this->traiterEspece($parametres);
$this->formaterParametresObservation($parametres);
 
$requete_insertion_observation = 'INSERT INTO cel_obs ';
$sous_requete_colonnes = $this->traiterParametresObservationEtConstruireSousRequeteAjout($parametres);
132,12 → 135,17
famille = IF(SUBSTR(nom_referentiel, 1, 5) != "$r", NULL, famille),
EOF;
}
else {
// uniquement en cas de nom_sel présent
$this->traiterEspece($parametres);
}
 
$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
$requete_modification .= $sous_requete_modification;
$this->formaterParametresObservation($parametres);
 
$requete_modification .= " WHERE ordre IN (".$ordre.") AND ce_utilisateur = ".Cel::db()->proteger($utilisateur);
$requete_modification .= $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres) .
" WHERE ordre IN (".$ordre.") AND ce_utilisateur = ".Cel::db()->proteger($utilisateur);
 
 
// 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
167,15 → 175,16
'nom_referentiel' => NULL);
$parametres = array_merge($base_param, $parametres);
 
$this->traiterEspece($parametres);
$this->formaterParametresObservation($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 = ".Cel::db()->proteger($id).
" AND ce_utilisateur = ".Cel::db()->proteger($utilisateur)." ".
" AND transmission = 1";
$requete_modification = "UPDATE cel_obs SET " .
$this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres) .
" WHERE id_observation = ".Cel::db()->proteger($id).
" AND ce_utilisateur = ".Cel::db()->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
321,15 → 330,7
return $migration_releve;
}
/**
* Formate les paramètres fournis en ajoutant des infos complementaires
*
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
*
* @return $parametres le tableau modifié selon ce qu'il contenait
*/
private function formaterParametresObservation(&$parametres) {
 
private function traiterEspece(&$parametres) {
$code_referentiel = 'bdtfx';
if(!$parametres['nom_referentiel']) {
$parametres['nom_referentiel'] = Cel::$default_referentiel;
353,11 → 354,10
// Utilisation d'un nom sans numéro nomenclatural, recherche d'une correspondance sur le nom
 
$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNom($parametres['nom_sel']);
 
// Si l'on a trouvé un résultat sur la recherche, il s'agit vraisemblablement d'un copié-collé
// de nom de taxon qui n'a pas été validé par la selection
if(count($complement) > 0) {
$parametres['nom_sel_nn'] = $complement[0][0];
if($complement) {
$parametres['nom_sel_nn'] = $complement->{"nom_retenu.id"};
}
else {
// pas de résultat de recherche sur le référentiel demandé, le webservice doit peut-être être corrigé
370,18 → 370,26
if ($parametres['nom_sel_nn']) {
// Utilisation d'un nom faisant parti du referentiel : recherche du nom valide correspondant
$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'];
$complement = $chercheur_infos_complementaires->effectuerRequeteInfosComplementairesSurNumNom($parametres['nom_sel_nn']);
$parametres['nom_ret'] = RechercheInfosTaxonBeta::supprimerBiblio($complement->nom_retenu_complet);
$parametres['nom_ret_nn'] = $complement->{"nom_retenu.id"};
$parametres['nt'] = $complement->num_taxonomique;
$parametres['famille'] = $complement->famille;
}
}
 
// mise à jour du référentiel utilisé, sans n° de version
$parametres['nom_referentiel'] = $code_referentiel;
}
 
/**
* Formate les paramètres fournis en ajoutant des infos complementaires
*
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
*
* @return $parametres le tableau modifié selon ce qu'il contenait
*/
private function formaterParametresObservation(&$parametres) {
if(isset($parametres['ce_utilisateur'])) {
$infos_utilisateur = $this->getInfosComplementairesUtilisateur($parametres['ce_utilisateur']);
418,8 → 426,6
$parametres['date_observation']=$annee."-".$mois."-".$jour." 0:0:0";
}
}
 
return $parametres;
}
432,11 → 438,8
* @return string une sous requete utilisable pour l'ajout d'une observation
*/
private function traiterParametresObservationEtConstruireSousRequeteAjout($parametres) {
$sous_requete = '';
 
$parametres = $this->formaterParametresObservation($parametres);
 
$champs = '';
$valeurs = '';
473,10 → 476,7
* selon la syntaxe UPDATE table SET colonne1 = valeur1, colonne2 = valeur2 WHERE condition
*/
private function traiterParametresObservationEtConstruireSousRequeteMaj($parametres) {
$sous_requete = '';
 
$parametres = $this->formaterParametresObservation($parametres);
// Nullifiage ...
// TODO: code dupliqué, en faire une fonction à mettre à la place appropriée
483,7 → 483,7
foreach($parametres as $cle => $valeur) {
// Pour apparaitre le premier dans les tris ...
if (trim($valeur) == "" || trim($valeur) == "null") {
if (trim($valeur) == "" || trim($valeur) == "null" || trim($valeur) == "000null") {
$valeur = "NULL";
} else {
$valeur = Cel::db()->proteger($valeur);