Subversion Repositories eFlore/Applications.cel

Rev

Rev 2492 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2492 Rev 2538
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Cas d'utilisation :
4
 * Cas d'utilisation :
5
 * GET : Service recherche d'observations a partir de divers critères
5
 * GET : Service recherche d'observations a partir de divers critères
6
 *  a: Le service recherche les observations correspondant aux critères demandés
6
 *  a: Le service recherche les observations correspondant aux critères demandés
7
 *  b: Le service renvoie la liste des observations correspondantes
7
 *  b: Le service renvoie la liste des observations correspondantes
8
 *
8
 *
9
 * POST : Service modification en masse d'observations
9
 * POST : Service modification en masse d'observations
10
 *  a: Le service recherche les observations correspondant aux identifiants donnés
10
 *  a: Le service recherche les observations correspondant aux identifiants donnés
11
 *  b: Le service modifie les observations correspondantes avec les infos données en paramètres
11
 *  b: Le service modifie les observations correspondantes avec les infos données en paramètres
12
 *
12
 *
13
 * DELETE : Service de suppression d'observations en masse
13
 * DELETE : Service de suppression d'observations en masse
14
 *  a: Le service recherche les observations correspondant aux critères demandés
14
 *  a: Le service recherche les observations correspondant aux critères demandés
15
 *  b: Le service supprime la liste des observations correspondantes
15
 *  b: Le service supprime la liste des observations correspondantes
16
 *
16
 *
17
 * @internal   Mininum PHP version : 5.2
17
 * @internal   Mininum PHP version : 5.2
18
 * @category   CEL
18
 * @category   CEL
19
 * @package    Services
19
 * @package    Services
20
 * @subpackage Mots-clés
20
 * @subpackage Mots-clés
21
 * @version    0.1
21
 * @version    0.1
22
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
22
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
23
 * @author    Raphaël Droz <raphael@tela-botanica.org>
23
 * @author    Raphaël Droz <raphael@tela-botanica.org>
24
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
24
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
25
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
25
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
26
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
26
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
27
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
27
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
28
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
28
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
29
 */
29
 */
30
class InventoryObservationList extends Cel {
30
class InventoryObservationList extends Cel {
31
 
31
 
32
	/**
32
	/**
33
	 * Renvoie les observations correspondant au critères de filtrage
33
	 * Renvoie les observations correspondant au critères de filtrage
34
	 *
34
	 *
35
	 * uid[0] : utilisateur obligatoire
35
	 * uid[0] : utilisateur obligatoire
36
	 * uid[1] : criteres de filtrage de la forme critere1=valeur1&critere2=valeur2
36
	 * uid[1] : criteres de filtrage de la forme critere1=valeur1&critere2=valeur2
37
	 */
37
	 */
38
	public function getElement($uid) {
38
	public function getElement($uid) {
39
		// Controle detournement utilisateur
39
		// Controle detournement utilisateur
40
		$this->controleUtilisateur($uid[0]);
40
		$this->controleUtilisateur($uid[0]);
41
 
41
 
42
		$chercheur_observations = new RechercheObservation($this->config);
42
		$chercheur_observations = new RechercheObservation($this->config);
43
 
43
 
44
		$numero_page = 0;
44
		$numero_page = 0;
45
		$taille_page = 50;
45
		$taille_page = 50;
46
		$criteres = array();
46
		$criteres = array();
47
 
47
 
48
		$criteres = $_GET ;
48
		$criteres = $_GET ;
49
		if (isset($criteres['numero_page']) && isset($criteres['limite'])) {
49
		if (isset($criteres['numero_page']) && isset($criteres['limite'])) {
50
			$numero_page = $criteres['numero_page'];
50
			$numero_page = $criteres['numero_page'];
51
			unset($criteres['numero_page']);
51
			unset($criteres['numero_page']);
52
			$taille_page = $criteres['limite'];
52
			$taille_page = $criteres['limite'];
53
			unset($criteres['limite']);
53
			unset($criteres['limite']);
54
		}
54
		}
55
 
55
 
56
		$debut = $taille_page*$numero_page ;
56
		$debut = $taille_page*$numero_page ;
57
 
57
 
58
		$retour = $chercheur_observations->rechercherObservations($uid[0], $criteres, $debut, $taille_page)->get();
58
		$retour = $chercheur_observations->rechercherObservations($uid[0], $criteres, $debut, $taille_page)->get();
59
		$retour_formate = $chercheur_observations->formaterPourEnvoiCel($retour);
59
		$retour_formate = $chercheur_observations->formaterPourEnvoiCel($retour);
60
 
60
 
61
		$this->envoyerJson($retour_formate);
61
		$this->envoyerJson($retour_formate);
62
		return true;
62
		return true;
63
	}
63
	}
64
 
64
 
65
	/**
65
	/**
66
	 * met à jour les métadonnées d'une liste d'observations
66
	 * met à jour les métadonnées d'une liste d'observations
67
	 *
67
	 *
68
	 * uid[0] : utilisateur obligatoire
68
	 * uid[0] : utilisateur obligatoire
69
	 * uid[1] : ordres des observations à modifier séparés par des virgules
69
	 * uid[1] : ordres des observations à modifier séparés par des virgules
70
	 * pairs : données à mettre à jour sous la forme de clés => valeurs
70
	 * pairs : données à mettre à jour sous la forme de clés => valeurs
71
	 */
71
	 */
72
	public function updateElement($uid,$pairs) {
72
	public function updateElement($uid,$pairs) {
73
		// Controle detournement utilisateur
73
		// Controle detournement utilisateur
74
		$this->controleUtilisateur($uid[0]);
74
		$this->controleUtilisateur($uid[0]);
75
 
75
 
76
		if (!isset($uid[1])) {
76
		if (!isset($uid[1])) {
77
			//TODO: envoyer un message d'erreur
77
			//TODO: envoyer un message d'erreur
78
			return;
78
			return;
79
		}
79
		}
80
 
80
 
81
		$obs = array_filter(explode(',', $uid[1]), 'is_numeric');
81
		$obs = array_filter(explode(',', $uid[1]), 'is_numeric');
82
		if (count($obs) == 0) {
82
		if (count($obs) == 0) {
83
			return;
83
			return;
84
		}
84
		}
85
 
85
 
86
		$gestionnaire_observation = new GestionObservation($this->config);
86
		$gestionnaire_observation = new GestionObservation($this->config);
87
		if (count($obs) == 1) {
87
		if (count($obs) == 1) {
88
			return $gestionnaire_observation->modifierObservation($uid[0], $obs[0], $pairs);
88
			return $gestionnaire_observation->modifierObservation($uid[0], $obs[0], $pairs);
89
		}
89
		}
90
 
90
 
91
		// cas de mise à jour de multiples observations:
91
		// cas de mise à jour de multiples observations:
92
		$ret = GestionObservation::modifierMultiplesObservation($uid[0], $obs, $pairs);
92
		$ret = $gestionnaire_observation->modifierMultiplesObservation($uid[0], $obs, $pairs);
93
		if ($ret === false) {
93
		if ($ret === false) {
94
			return false; // JRest::badRequest();
94
			return false; // JRest::badRequest();
95
		}
95
		}
96
		if ($ret === 0) {
96
		if ($ret === 0) {
97
			header('HTTP/1.0 304 Not Modified');
97
			header('HTTP/1.0 304 Not Modified');
98
		} else {
98
		} else {
99
			header('HTTP/1.0 200 OK'); // et non pas une 201 !
99
			header('HTTP/1.0 200 OK'); // et non pas une 201 !
100
		}
100
		}
101
		die();
101
		die();
102
	}
102
	}
103
 
103
 
104
	/**
104
	/**
105
	* Supprime une liste d'observations
105
	* Supprime une liste d'observations
106
	*
106
	*
107
	* uid[0] : utilisateur obligatoire
107
	* uid[0] : utilisateur obligatoire
108
	* uid[1] : ordres des observations à supprimer séparés par des virgules
108
	* uid[1] : ordres des observations à supprimer séparés par des virgules
109
	*/
109
	*/
110
	public function deleteElement($uid) {
110
	public function deleteElement($uid) {
111
	 	// Controle detournement utilisateur
111
	 	// Controle detournement utilisateur
112
		$this->controleUtilisateur($uid[0]);
112
		$this->controleUtilisateur($uid[0]);
113
 
113
 
114
		if (!isset($uid[1])) {
114
		if (!isset($uid[1])) {
115
			//TODO: envoyer un message d'erreur
115
			//TODO: envoyer un message d'erreur
116
			return;
116
			return;
117
		}
117
		}
118
		$uid[1] = rtrim($uid[1], ',');
118
		$uid[1] = rtrim($uid[1], ',');
119
 
119
 
120
		$gestionnaireObs = new GestionObservation($this->config);
120
		$gestionnaireObs = new GestionObservation($this->config);
121
		$tableau_ordres = explode(',', $uid[1]);
121
		$tableau_ordres = explode(',', $uid[1]);
122
		foreach ($tableau_ordres as $ordre) {
122
		foreach ($tableau_ordres as $ordre) {
123
			$ids_obs[] = $gestionnaireObs->renvoyerIdPourOrdre($uid[0], $ordre);
123
			$ids_obs[] = $gestionnaireObs->renvoyerIdPourOrdre($uid[0], $ordre);
124
		}
124
		}
125
 
125
 
126
		$suppression_observations = $gestionnaireObs->supprimerObservation($uid[0], $uid[1]);
126
		$suppression_observations = $gestionnaireObs->supprimerObservation($uid[0], $uid[1]);
127
 
127
 
128
		$gestionnaireChampsEtendus = new GestionChampsEtendus($this->config, 'obs');
128
		$gestionnaireChampsEtendus = new GestionChampsEtendus($this->config, 'obs');
129
		$gestionnaireChampsEtendus->viderParLots($ids_obs);
129
		$gestionnaireChampsEtendus->viderParLots($ids_obs);
130
		
130
		
131
		$gestionnaire_images = new GestionImage($this->config);
131
		$gestionnaire_images = new GestionImage($this->config);
132
		$gestionnaire_images->modifierTransmissionParObs($ids_obs, false);
132
		$gestionnaire_images->modifierTransmissionParObs($ids_obs, false);
133
 
133
 
134
		if ($suppression_observations) {
134
		if ($suppression_observations) {
135
			echo 'OK';
135
			echo 'OK';
136
		}
136
		}
137
		exit() ;
137
		exit() ;
138
	}
138
	}
139
}
139
}