Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2394 Rev 2461
Line 1... Line 1...
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Service permettant de récupérer toutes les informations d'une observation publique.
4
 * Service générique de modification des observations.
5
 * Encodage en entrée : utf8
-
 
6
 * Encodage en sortie : utf8
-
 
7
 *
5
 *
8
 * Cas d'utilisation :
6
 * Cas d'utilisation :
9
 * GET /CelObs/[id] : oû id est l'identifiant d'une observation publique
7
 * GET /CelObs/[id] : oû id est l'identifiant d'une observation publique
-
 
8
 * POST /CelObs/[id] : oû id est l'identifiant d'une observation publique
-
 
9
 * si les data du POST contienent :
-
 
10
 *   - 1 données :
-
 
11
 *     - 'transmission' : publier ou dépublier une obs
-
 
12
 *   - 3 données :
-
 
13
 *     - 'id_observation', 'nom_sel_nn', 'nom_referentiel' : permet d'accepter une proposition (DEL)
10
 *
14
 *
-
 
15
 * @internal   Mininum PHP version : 5.2
-
 
16
 * @category   CEL
-
 
17
 * @package    Services
-
 
18
 * @subpackage Observations
-
 
19
 * @version    0.1
-
 
20
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
11
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
21
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
-
 
22
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
12
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
23
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
13
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
24
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
14
 * @version $Id$
-
 
15
 * @copyright © 2013, Jean-Pascal MILCENT
25
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
16
 */
26
 */
17
class CelObs extends Cel {
27
class CelObs extends Cel {
18
	private $rechercheObs = null;
28
	private $rechercheObs = null;
19
	private $chpsEtendus = null;
29
	private $chpsEtendus = null;
20
	private $donnees = null;
30
	private $donnees = null;
Line 32... Line 42...
32
		foreach ( $this->config['referentiels'] as $referentiel => $table) {
42
		foreach ( $this->config['referentiels'] as $referentiel => $table) {
33
			$this->$referentiel = $table;
43
			$this->$referentiel = $table;
34
		}
44
		}
35
	}
45
	}
Line 36... Line 46...
36
 
46
 
37
	function getElement($ressources){
47
	public function getElement($ressources){
38
		$retour = false;
48
		$retour = false;
39
		$idObs = $ressources[0];
49
		$idObs = $ressources[0];
Line 40... Line 50...
40
		if (isset($idObs) && preg_match('/^[0-9]+$/', $idObs)) {
50
		if (isset($idObs) && preg_match('/^[0-9]+$/', $idObs)) {
Line 125... Line 135...
125
 
135
 
126
				if (count($this->donnees) == 1) {
136
				if (count($this->donnees) == 1) {
127
					$donneesObligatoires = array('transmission');
137
					$donneesObligatoires = array('transmission');
128
					if ($this->verifierDonneesObligatoires($donneesObligatoires)) {
138
					if ($this->verifierDonneesObligatoires($donneesObligatoires)) {
-
 
139
						$this->depublierObs($idObs);
129
						$this->depublierObs($idObs);
140
						$this->depublierImg($idObs);
130
					}
141
					}
131
				} else if (count($this->donnees) == 3) {
142
				} else if (count($this->donnees) == 3) {
132
					$donneesObligatoires = array('id_observation', 'nom_sel_nn', 'nom_referentiel');
143
					$donneesObligatoires = array('id_observation', 'nom_sel_nn', 'nom_referentiel');
133
					if ($this->verifierDonneesObligatoires($donneesObligatoires)) {
144
					if ($this->verifierDonneesObligatoires($donneesObligatoires)) {
Line 165... Line 176...
165
 
176
 
166
	private function depublierObs($idObs) {
177
	private function depublierObs($idObs) {
167
		$gestionnaireObs = new GestionObservation($this->config);
178
		$gestionnaireObs = new GestionObservation($this->config);
168
		$depublication = $gestionnaireObs->modifierTransmissionObservation($idObs, false);
179
		$depublication = $gestionnaireObs->modifierTransmissionObservation($idObs, false);
169
		if ($depublication === false) {
180
		if ($depublication === false) {
-
 
181
			$msg = "Un problème est survenu (voir log). L'observation « $idObs » n'a pas pu être dépubliée.";
-
 
182
			$this->envoyerMessageErreur(304, $msg);
-
 
183
		}
-
 
184
	}
-
 
185
 
-
 
186
	private function depublierImg($idObs) {
-
 
187
		$gestionnaireImg = new GestionImage($this->config);
-
 
188
		$depublication = $gestionnaireImg->modifierTransmissionParObs($idObs, false);
-
 
189
		if ($depublication === false) {
170
			$msg = "Un problème est survenu (voir log). Les observations n'ont pas pu être dépubliées.";
190
			$msg = "Un problème est survenu (voir log). Les images liées à l'obs « $idObs » n'ont pas pu être dépubliées.";
171
			$this->envoyerMessageErreur(304, $msg);
191
			$this->envoyerMessageErreur(304, $msg);
172
		}
192
		}
Line 173... Line 193...
173
	}
193
	}
Line 194... Line 214...
194
 
214
 
Line 195... Line 215...
195
		$modification = $gestion_observation->modifierObservationPublique($idObs, $donneesAModifier);
215
		$modification = $gestion_observation->modifierObservationPublique($idObs, $donneesAModifier);
196
 
216
 
197
		if ($modification) {
217
		if ($modification) {
198
			// TODO: en modifiant bien la classe de gestion mots clés, on aurait peut être pas besoin de l'id
218
			// TODO: en modifiant bien la classe de gestion mots clés, on aurait peut être pas besoin de l'id
199
			// utilisateur (car l'id de l'obs est déjà sans ambiguité)
219
			// utilisateur (car l'id de l'obs est déjà sans ambiguité)
200
			$idUtilisateur = $this->rechercheObs->obtenirIdUtilisateurPourIdObs($idObs);
220
			$idUtilisateur = $this->rechercheObs->obtenirIdUtilisateurPourIdObs($idObs);
201
			
221
 
202
			// supression des éventuelles liaison de l'obs avec le mot clé contenu dans obsKeywordDelete
222
			// supression des éventuelles liaison de l'obs avec le mot clé contenu dans obsKeywordDelete
203
			$gestionMotsClesObs = new GestionMotsClesChemin($this->config, 'obs');
223
			$gestionMotsClesObs = new GestionMotsClesChemin($this->config, 'obs');
204
			$supp_liaison_mot_cle = $gestionMotsClesObs->supprimerLiaisonPourMotCleEtIdElementLie('aDeterminer', $idObs, $idUtilisateur);
224
			$supp_liaison_mot_cle = $gestionMotsClesObs->supprimerLiaisonPourMotCleEtIdElementLie('aDeterminer', $idObs, $idUtilisateur);