Subversion Repositories eFlore/Applications.cel

Rev

Rev 1783 | Rev 1788 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1783 Rev 1786
Line 32... Line 32...
32
	*/
32
	*/
33
	public function ajouterObservation($utilisateur, $parametres) {
33
	public function ajouterObservation($utilisateur, $parametres) {
Line 34... Line 34...
34
				 	
34
				 	
35
		$retour = true;
35
		$retour = true;
36
		$parametres['ordre'] = $this->renvoyerDernierOrdreUtilisePlusUn($utilisateur);
36
		$parametres['ordre'] = $this->renvoyerDernierOrdreUtilisePlusUn($utilisateur);
-
 
37
		
-
 
38
		$this->traiterEspece($parametres);
-
 
39
		$this->formaterParametresObservation($parametres);
37
				
40
 
38
        $requete_insertion_observation = 'INSERT INTO cel_obs ';
41
        $requete_insertion_observation = 'INSERT INTO cel_obs ';
Line 39... Line 42...
39
        $sous_requete_colonnes = $this->traiterParametresObservationEtConstruireSousRequeteAjout($parametres);
42
        $sous_requete_colonnes = $this->traiterParametresObservationEtConstruireSousRequeteAjout($parametres);
Line 130... Line 133...
130
nom_ret = IF(SUBSTR(nom_referentiel, 1, 5) != "$r", NULL, nom_ret),
133
nom_ret = IF(SUBSTR(nom_referentiel, 1, 5) != "$r", NULL, nom_ret),
131
nt = IF(SUBSTR(nom_referentiel, 1, 5) != "$r", NULL, nt),
134
nt = IF(SUBSTR(nom_referentiel, 1, 5) != "$r", NULL, nt),
132
famille = IF(SUBSTR(nom_referentiel, 1, 5) != "$r", NULL, famille),
135
famille = IF(SUBSTR(nom_referentiel, 1, 5) != "$r", NULL, famille),
133
EOF;
136
EOF;
134
		}
137
		}
-
 
138
		else {
-
 
139
			// uniquement en cas de nom_sel présent
-
 
140
			$this->traiterEspece($parametres);
-
 
141
		}
-
 
142
 
-
 
143
		$this->formaterParametresObservation($parametres);
Line 135... Line 144...
135
 
144
 
136
		$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
145
		$requete_modification .= $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres) .
Line 137... Line -...
137
		$requete_modification .= $sous_requete_modification;
-
 
Line 138... Line 146...
138
 
146
			" WHERE ordre IN (".$ordre.") AND ce_utilisateur = ".Cel::db()->proteger($utilisateur);
139
		$requete_modification .= " WHERE ordre IN (".$ordre.") AND ce_utilisateur = ".Cel::db()->proteger($utilisateur);
147
 
140
 
148
 
141
		// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes)
149
		// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes)
Line 165... Line 173...
165
							'nom_sel' => NULL,
173
							'nom_sel' => NULL,
166
							'nom_ret_nn' => NULL,
174
							'nom_ret_nn' => NULL,
167
							'nom_referentiel' => NULL);
175
							'nom_referentiel' => NULL);
168
		$parametres = array_merge($base_param, $parametres);
176
		$parametres = array_merge($base_param, $parametres);
Line -... Line 177...
-
 
177
 
-
 
178
		$this->traiterEspece($parametres);
-
 
179
		$this->formaterParametresObservation($parametres);
169
 
180
 
170
		$retour = true;
181
		$retour = true;
171
		$requete_modification = "UPDATE cel_obs SET " ;
-
 
172
	
182
		$requete_modification = "UPDATE cel_obs SET " .
173
		$sous_requete_modification = $this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres);
-
 
174
		$requete_modification .= $sous_requete_modification;
-
 
175
	
183
			$this->traiterParametresObservationEtConstruireSousRequeteMaj($parametres) .
176
		$requete_modification .= " WHERE id_observation = ".Cel::db()->proteger($id).
184
			" WHERE id_observation = ".Cel::db()->proteger($id).
177
								 " AND ce_utilisateur = ".Cel::db()->proteger($utilisateur)." ".
185
			" AND ce_utilisateur = ".Cel::db()->proteger($utilisateur)." ".
-
 
186
			" AND transmission = 1";
178
								 " AND transmission = 1";
187
 
179
		// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes)
188
		// important ! ne pas utiliser la fonction executerRequete qui renvoie une erreur si la requete contient des | (pipes)
180
		// ce qui peut arriver dans les commentaires
189
		// ce qui peut arriver dans les commentaires
181
		// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple
190
		// TODO: corriger la fonction ou bien continuer à utiliser executerRequeteSimple
Line 319... Line 328...
319
		$migration_releve = Cel::db()->executerRequeteSimple($requete_migration_releve);
328
		$migration_releve = Cel::db()->executerRequeteSimple($requete_migration_releve);
Line 320... Line 329...
320
	
329
	
321
		return $migration_releve;
330
		return $migration_releve;
Line 322... Line -...
322
	}
-
 
323
	
-
 
324
	/**
-
 
325
	* Formate les paramètres fournis en ajoutant des infos complementaires 
-
 
326
	* 
-
 
327
	* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
-
 
328
	* 
-
 
329
	* @return $parametres le tableau modifié selon ce qu'il contenait
331
	}
330
	*/
-
 
331
	private function formaterParametresObservation(&$parametres) {
332
	
332
 
333
	private function traiterEspece(&$parametres) {
333
		$code_referentiel = 'bdtfx';
334
		$code_referentiel = 'bdtfx';
334
		if(!$parametres['nom_referentiel']) {
335
		if(!$parametres['nom_referentiel']) {
335
			$parametres['nom_referentiel'] = Cel::$default_referentiel;
336
			$parametres['nom_referentiel'] = Cel::$default_referentiel;
Line 351... Line 352...
351
			if ($parametres['nom_sel'] && !$parametres['nom_sel_nn']) {
352
			if ($parametres['nom_sel'] && !$parametres['nom_sel_nn']) {
352
				$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config, $code_referentiel);
353
				$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config, $code_referentiel);
353
				// Utilisation d'un nom sans numéro nomenclatural, recherche d'une correspondance sur le nom
354
				// Utilisation d'un nom sans numéro nomenclatural, recherche d'une correspondance sur le nom
Line 354... Line 355...
354
 
355
 
355
				$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNom($parametres['nom_sel']);
-
 
356
 
356
				$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNom($parametres['nom_sel']);
357
				// Si l'on a trouvé un résultat sur la recherche, il s'agit vraisemblablement d'un copié-collé
357
				// Si l'on a trouvé un résultat sur la recherche, il s'agit vraisemblablement d'un copié-collé
358
				// de nom de taxon qui n'a pas été validé par la selection
358
				// de nom de taxon qui n'a pas été validé par la selection
359
				if(count($complement) > 0) {
359
				if($complement) {
360
					$parametres['nom_sel_nn'] = $complement[0][0];
360
					$parametres['nom_sel_nn'] = $complement->{"nom_retenu.id"};
361
				}
361
				}
362
				else {
362
				else {
363
					// pas de résultat de recherche sur le référentiel demandé, le webservice doit peut-être être corrigé
363
					// pas de résultat de recherche sur le référentiel demandé, le webservice doit peut-être être corrigé
364
					// mais en tout état de cause nous n'insérerons PAS de données incertaines associé à un référentiel !
364
					// mais en tout état de cause nous n'insérerons PAS de données incertaines associé à un référentiel !
Line 368... Line 368...
368
			}
368
			}
Line 369... Line 369...
369
 
369
 
370
			if ($parametres['nom_sel_nn']) {
370
			if ($parametres['nom_sel_nn']) {
371
				// Utilisation d'un nom faisant parti du referentiel : recherche du nom valide correspondant
371
				// Utilisation d'un nom faisant parti du referentiel : recherche du nom valide correspondant
372
				$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config , $code_referentiel);
372
				$chercheur_infos_complementaires = new RechercheInfosTaxonBeta($this->config , $code_referentiel);
373
				$complement = $chercheur_infos_complementaires->rechercherInformationsComplementairesSurNumNom($parametres['nom_sel_nn']);
-
 
374
			
373
				$complement = $chercheur_infos_complementaires->effectuerRequeteInfosComplementairesSurNumNom($parametres['nom_sel_nn']);
375
				$parametres['nom_ret']=$complement['Nom_Retenu'];
374
				$parametres['nom_ret'] = RechercheInfosTaxonBeta::supprimerBiblio($complement->nom_retenu_complet);
376
				$parametres['nom_ret_nn']=$complement['Num_Nom_Retenu'];
375
				$parametres['nom_ret_nn'] = $complement->{"nom_retenu.id"};
377
				$parametres['nt']=$complement['Num_Taxon'];
376
				$parametres['nt'] = $complement->num_taxonomique;
378
				$parametres['famille']=$complement['Famille'];
377
				$parametres['famille'] = $complement->famille;
379
			}
378
			}
Line 380... Line 379...
380
		}
379
		}
381
 
380
 
-
 
381
		// mise à jour du référentiel utilisé, sans n° de version
382
		// mise à jour du référentiel utilisé, sans n° de version
382
		$parametres['nom_referentiel'] = $code_referentiel;
-
 
383
	}
-
 
384
 
-
 
385
	/**
-
 
386
	* Formate les paramètres fournis en ajoutant des infos complementaires 
-
 
387
	* 
-
 
388
	* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
-
 
389
	* 
-
 
390
	* @return $parametres le tableau modifié selon ce qu'il contenait
383
		$parametres['nom_referentiel'] = $code_referentiel;
391
	*/
Line 384... Line 392...
384
		
392
	private function formaterParametresObservation(&$parametres) {		
Line 385... Line 393...
385
		if(isset($parametres['ce_utilisateur'])) {
393
		if(isset($parametres['ce_utilisateur'])) {
Line 416... Line 424...
416
        	if(count(explode("/",$parametres['date_observation'])) >= 3) {
424
        	if(count(explode("/",$parametres['date_observation'])) >= 3) {
417
        		list($jour,$mois,$annee)=explode("/",$parametres['date_observation']);
425
        		list($jour,$mois,$annee)=explode("/",$parametres['date_observation']);
418
        		$parametres['date_observation']=$annee."-".$mois."-".$jour." 0:0:0";
426
        		$parametres['date_observation']=$annee."-".$mois."-".$jour." 0:0:0";
419
        	}
427
        	}
420
        }
428
        }
421
 
-
 
422
        return $parametres;
-
 
423
	}
429
	}
Line 424... Line 430...
424
	
430
	
425
	
431
	
Line 430... Line 436...
430
	* @param array $parametres un tableau avec les index correspondant aux champs de la bdd 
436
	* @param array $parametres un tableau avec les index correspondant aux champs de la bdd 
431
	* 
437
	* 
432
	* @return string une sous requete utilisable pour l'ajout d'une observation
438
	* @return string une sous requete utilisable pour l'ajout d'une observation
433
	*/	
439
	*/	
434
	private function traiterParametresObservationEtConstruireSousRequeteAjout($parametres) {
440
	private function traiterParametresObservationEtConstruireSousRequeteAjout($parametres) {
435
		
-
 
436
		$sous_requete = '';
441
		$sous_requete = '';
Line 437... Line -...
437
 
-
 
438
		$parametres = $this->formaterParametresObservation($parametres);
-
 
439
 
442
 
440
		$champs = '';
443
		$champs = '';
Line 441... Line 444...
441
		$valeurs = '';
444
		$valeurs = '';
442
		
445
		
Line 471... Line 474...
471
	 * 
474
	 * 
472
	 * @return string une sous requete utilisable pour la modification d'une observation
475
	 * @return string une sous requete utilisable pour la modification d'une observation
473
	 * selon la syntaxe UPDATE table SET colonne1 = valeur1, colonne2 = valeur2 WHERE condition 
476
	 * selon la syntaxe UPDATE table SET colonne1 = valeur1, colonne2 = valeur2 WHERE condition 
474
	 */	
477
	 */	
475
	private function traiterParametresObservationEtConstruireSousRequeteMaj($parametres) {
478
	private function traiterParametresObservationEtConstruireSousRequeteMaj($parametres) {
476
		
-
 
477
		$sous_requete = '';
479
		$sous_requete = '';
478
 
-
 
479
		$parametres = $this->formaterParametresObservation($parametres);
-
 
Line 480... Line 480...
480
		
480
		
481
		// Nullifiage ...
481
		// Nullifiage ...
482
		// TODO: code dupliqué, en faire une fonction à mettre à la place appropriée
482
		// TODO: code dupliqué, en faire une fonction à mettre à la place appropriée
Line 483... Line 483...
483
		foreach($parametres as $cle => $valeur) {
483
		foreach($parametres as $cle => $valeur) {
484
			
484
			
485
			// Pour apparaitre le premier dans les tris ...
485
			// Pour apparaitre le premier dans les tris ...
486
			if (trim($valeur) == "" || trim($valeur) == "null") {
486
			if (trim($valeur) == "" || trim($valeur) == "null" || trim($valeur) == "000null") {
487
				$valeur = "NULL";
487
				$valeur = "NULL";
488
			} else {
488
			} else {