Subversion Repositories eFlore/Applications.cel

Rev

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

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