Subversion Repositories eFlore/Applications.cel

Rev

Rev 1470 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1470 Rev 1527
Line 106... Line 106...
106
		
106
		
107
		return $retour;
107
		return $retour;
Line 108... Line 108...
108
	}
108
	}
-
 
109
	
-
 
110
	/**
-
 
111
	* Modifie une observation publique dont l'id et l'utilisateur sont passé en paramètre
-
 
112
	*
-
 
113
	* @param int $utilisateur id utilisateur du proprietaire de l'observation
-
 
114
	* @param int $id identifiant de l'observation 
-
 
115
	* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
-
 
116
	*
-
 
117
	* @return true ou false suivant le succès de l'opération
-
 
118
	*/
-
 
119
	public function modifierObservationPublique($utilisateur, $id, $parametres) {
-
 
120
	
-
 
121
		$retour = true;
-
 
122
		$requete_modification = "UPDATE cel_obs SET " ;
-
 
123
	
-
 
124
		$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
-
 
125
		$requete_modification .= $sous_requete_modification;
-
 
126
	
-
 
127
		$requete_modification .= " WHERE id_observation = ".$this->proteger($id).
-
 
128
								 " AND ce_utilisateur = ".$this->proteger($utilisateur)." ".
-
 
129
								 " AND transmission = 1";
-
 
130
		// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes)
-
 
131
		// ce qui peut arriver dans les commentaires
-
 
132
		// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple
-
 
133
		$resultat_modification = $this->executerRequeteSimple($requete_modification);
-
 
134
		 
-
 
135
		if ($resultat_modification === false) {
-
 
136
			$retour = false;
-
 
137
			$this->logger("CEL_bugs","Erreur de mise à jour de l\'observation : ".$id);
-
 
138
		}
-
 
139
	
-
 
140
		return $retour;
-
 
141
	}
109
	
142
	
110
	/**
143
	/**
111
	* Supprime une ou plusieurs observations grâce aux paramètres fournis 
144
	* Supprime une ou plusieurs observations grâce aux paramètres fournis 
112
	* 
145
	* 
113
	* @param int $utilisateur id utilisateur du proprietaire de l'observation
146
	* @param int $utilisateur id utilisateur du proprietaire de l'observation
Line 245... Line 278...
245
	* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
278
	* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
246
	* 
279
	* 
247
	* @return $parametres le tableau modifié selon ce qu'il contenait
280
	* @return $parametres le tableau modifié selon ce qu'il contenait
248
	*/
281
	*/
249
	private function formaterParametresObservation($parametres) {
282
	private function formaterParametresObservation($parametres) {
-
 
283
				
-
 
284
		$code_referentiel = 'bdtfx';
-
 
285
		if(!isset($parametres['nom_referentiel'])) {
-
 
286
			$parametres['nom_referentiel'] = 'bdtfx:v1.01';
-
 
287
		}
-
 
288
		$code_referentiel = substr($parametres['nom_referentiel'], 0, 5);
Line 250... Line 289...
250
		
289
		
Line 251... Line 290...
251
		if (($parametres['nom_sel_nn'] == '' || $parametres['nom_sel_nn'] == 0) && $parametres['nom_sel'] != '') {
290
		if ($this->estUnNomSolitaire($parametres)) {
252
			
291
			
253
			$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config);
292
			$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config, $code_referentiel);
Line 254... Line 293...
254
			// Utilisation d'un nom sans numéro nomenclatural, recherche d'une correspondance sur le nom
293
			// Utilisation d'un nom sans numéro nomenclatural, recherche d'une correspondance sur le nom
255
			$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNom($parametres['nom_sel']);
294
			$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNom($parametres['nom_sel']);
256
 
295
 
257
			// Si l'on a trouvé un résultat sur la recherche, il s'agit vraisemblablement d'un copié-collé
296
			// Si l'on a trouvé un résultat sur la recherche, il s'agit vraisemblablement d'un copié-collé
258
			// de nom de taxon qui n'a pas été validé par la selection
297
			// de nom de taxon qui n'a pas été validé par la selection
259
			if(count($complement) > 0) {
-
 
260
				$parametres['nom_sel_nn'] = $complement[0][0];
-
 
261
			}
298
			if(count($complement) > 0) {
Line 262... Line 299...
262
			
299
				$parametres['nom_sel_nn'] = $complement[0][0];
263
			$parametres['nom_referentiel'] = 'bdtfx:v1.01';
300
			}
264
		}
301
		}
265
 
302
 
266
		if ($parametres['nom_sel_nn'] != '') {
303
		if ($this->parametreNumNomEstPresent($parametres)) {
267
			// Utilisation d'un nom faisant parti du referentiel : recherche du nom valide correspondant
304
			// Utilisation d'un nom faisant parti du referentiel : recherche du nom valide correspondant
268
			$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config);
305
			$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config , $code_referentiel);
269
			$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNumNom($parametres['nom_sel_nn']);
306
			$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNumNom($parametres['nom_sel_nn']);
270
			$parametres['nom_ret']=$complement['Nom_Retenu'];
-
 
271
	        $parametres['nom_ret_nn']=$complement['Num_Nom_Retenu'];
-
 
272
	        $parametres['nt']=$complement['Num_Taxon'];
307
			$parametres['nom_ret']=$complement['Nom_Retenu'];
Line 273... Line 308...
273
	        $parametres['famille']=$complement['Famille'];
308
	        $parametres['nom_ret_nn']=$complement['Num_Nom_Retenu'];
Line 274... Line 309...
274
	        
309
	        $parametres['nt']=$complement['Num_Taxon'];
Line 303... Line 338...
303
        	}
338
        	}
304
        }
339
        }
Line 305... Line 340...
305
 
340
 
306
        // TODO : voir si l'on peut utiliser un des fonctions de la classe cel
341
        // TODO : voir si l'on peut utiliser un des fonctions de la classe cel
-
 
342
        if (isset($parametres['date_observation']) && $parametres['date_observation']!="null") {
307
        if (isset($parametres['date_observation']) && $parametres['date_observation']!="null") {
343
        	if(substr_count($parametres['date_observation'], '/') == 3) {
308
        	list($jour,$mois,$annee)=explode("/",$parametres['date_observation']);
344
        		list($jour,$mois,$annee)=explode("/",$parametres['date_observation']);
-
 
345
        		$parametres['date_observation']=$annee."-".$mois."-".$jour." 0:0:0";
309
        	$parametres['date_observation']=$annee."-".$mois."-".$jour." 0:0:0";
346
        	}
Line 310... Line 347...
310
        }
347
        }
311
        
348
        
Line -... Line 349...
-
 
349
       return $parametres;
-
 
350
	}
-
 
351
	
-
 
352
	private function estUnNomSolitaire($parametres) {
-
 
353
		return $this->parametreNumNomPasPresent($parametres) && $parametres['nom_sel'] != '';
-
 
354
	}
-
 
355
	
-
 
356
	private function parametreNumNomEstPresent($parametres) {
-
 
357
		return !$this->parametreNumNomPasPresent($parametres);
-
 
358
	}
-
 
359
	
-
 
360
	private function parametreNumNomPasPresent($parametres) {
-
 
361
		return (!isset($parametres['nom_sel_nn']) || 
-
 
362
				$parametres['nom_sel_nn'] == null ||
-
 
363
				$parametres['nom_sel_nn'] == '' || 
312
       return $parametres;
364
				$parametres['nom_sel_nn'] == 0);
313
	}
365
	}
314
	
366
	
315
	/**
367
	/**
316
	* Assemble une sous requete pour un ajout, tout en formatant les paramètres et en recherchant
368
	* Assemble une sous requete pour un ajout, tout en formatant les paramètres et en recherchant