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);
|