Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1914 Rev 1936
1
<?php
1
<?php
2
/**
2
/**
3
 * PHP Version 5.2
3
 * PHP Version 5.2
4
 *
4
 *
5
 * @category  PHP
5
 * @category  PHP
6
 * @package   jrest
6
 * @package   jrest
7
 * @author    Raphaël Droz <raphael@tela-botanica.org>
7
 * @author    Raphaël Droz <raphael@tela-botanica.org>
8
 * @author    Aurelien Peronnet <aurelien@tela-botanica.org>
8
 * @author    Aurelien Peronnet <aurelien@tela-botanica.org>
9
 * @copyright 2010, 2013 Tela-Botanica
9
 * @copyright 2010, 2013 Tela-Botanica
10
 * @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
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>
11
 * @license  GPL v3 <http://www.gnu.org/licenses/gpl.txt>
12
 * @link      /doc/jrest/
12
 * @link      /doc/jrest/
13
 *
13
 *
14
 * InventoryObservationList.php
14
 * InventoryObservationList.php
15
 * Cas d'utilisation :
15
 * Cas d'utilisation :
16
 * 1: Service recherche d'observations a partir de divers critères
16
 * 1: Service recherche d'observations a partir de divers critères
17
 *  a: Le service recherche les observations correspondant aux critères demandés
17
 *  a: Le service recherche les observations correspondant aux critères demandés
18
 *  b: Le service renvoie la liste des observations correspondantes
18
 *  b: Le service renvoie la liste des observations correspondantes
19
 * 
19
 * 
20
 * 2: Service modification en masse d'observations
20
 * 2: Service modification en masse d'observations
21
 *  a: Le service recherche les observations correspondant aux identifiants donnés
21
 *  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
22
 *  b: Le service modifie les observations correspondantes avec les infos données en paramètres
23
 * 
23
 * 
24
 * 3: Service de suppression d'observations en masse
24
 * 3: Service de suppression d'observations en masse
25
 *  a: Le service recherche les observations correspondant aux critères demandés
25
 *  a: Le service recherche les observations correspondant aux critères demandés
26
 *  b: Le service supprime la liste des observations correspondantes
26
 *  b: Le service supprime la liste des observations correspondantes
27
 */
27
 */
28
class InventoryObservationList extends Cel {
28
class InventoryObservationList extends Cel {
29
 	
29
 	
30
	/**
30
	/**
31
	 * renvoie les observations correspondant au critères de filtrage
31
	 * renvoie les observations correspondant au critères de filtrage
32
	 * 
32
	 * 
33
	 * uid[0] : utilisateur obligatoire
33
	 * uid[0] : utilisateur obligatoire
34
	 * uid[1] : criteres de filtrage de la forme critere1=valeur1&critere2=valeur2
34
	 * uid[1] : criteres de filtrage de la forme critere1=valeur1&critere2=valeur2
35
	 */ 
35
	 */ 
36
	function getElement($uid)
36
	function getElement($uid)
37
	{
37
	{
38
		// Controle detournement utilisateur
38
		// Controle detournement utilisateur
39
	    $this->controleUtilisateur($uid[0]);
39
	    $this->controleUtilisateur($uid[0]);
40
 
40
 
41
		$chercheur_observations = new RechercheObservation($this->config);
41
		$chercheur_observations = new RechercheObservation($this->config);
42
 
42
 
43
		$numero_page = 0;
43
		$numero_page = 0;
44
		$taille_page = 50;
44
		$taille_page = 50;
45
		$criteres = array();
45
		$criteres = array();
46
 
46
 
47
		$criteres = $_GET ;
47
		$criteres = $_GET ;
48
		if (isset($criteres['numero_page']) && isset($criteres['limite'])) {
48
		if (isset($criteres['numero_page']) && isset($criteres['limite'])) {
49
			$numero_page = $criteres['numero_page'];
49
			$numero_page = $criteres['numero_page'];
50
			unset($criteres['numero_page']);
50
			unset($criteres['numero_page']);
51
			$taille_page = $criteres['limite'];
51
			$taille_page = $criteres['limite'];
52
			unset($criteres['limite']);	
52
			unset($criteres['limite']);	
53
		}
53
		}
54
		
54
		
55
		$debut = $taille_page*$numero_page ;
55
		$debut = $taille_page*$numero_page ;
56
 
56
 
57
		$retour = $chercheur_observations->rechercherObservations($uid[0], $criteres, $debut, $taille_page)->get();
57
		$retour = $chercheur_observations->rechercherObservations($uid[0], $criteres, $debut, $taille_page)->get();
58
		$retour_formate = $chercheur_observations->formaterPourEnvoiCel($retour);
58
		$retour_formate = $chercheur_observations->formaterPourEnvoiCel($retour);
59
 
59
 
60
		$this->envoyerJson($retour_formate);			
60
		$this->envoyerJson($retour_formate);			
61
		return true;	
61
		return true;	
62
	}
62
	}
63
 
63
 
64
	/**
64
	/**
65
	 * met à jour les métadonnées d'une liste d'observations
65
	 * met à jour les métadonnées d'une liste d'observations
66
	 * 
66
	 * 
67
	 * uid[0] : utilisateur obligatoire
67
	 * uid[0] : utilisateur obligatoire
68
	 * uid[1] : ordres des observations à modifier séparés par des virgules
68
	 * 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
69
	 * pairs : données à mettre à jour sous la forme de clés => valeurs
70
	 */ 
70
	 */ 
71
	function updateElement($uid,$pairs) {
71
	function updateElement($uid,$pairs) {
72
 
72
 
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(array_map('intval', explode(',', $uid[1])));
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 = GestionObservation::modifierMultiplesObservation($uid[0], $obs, $pairs);
93
        if($ret === FALSE) return FALSE; // JRest::badRequest();
93
        if($ret === FALSE) return FALSE; // JRest::badRequest();
94
        if($ret === 0) {
94
        if($ret === 0) {
95
            header('HTTP/1.0 304 Not Modified');
95
            header('HTTP/1.0 304 Not Modified');
96
            die;
96
            die;
97
        }
97
        }
98
 
98
 
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
        // die(); // non, car incompatible avec PHPUnit
100
        // die(); // non, car incompatible avec PHPUnit
101
        // throw(new Exception()); // non, lance une 400 (cf JRest::updateElement())
101
        // throw(new Exception()); // non, lance une 400 (cf JRest::updateElement())
102
        // return TRUE; // non, lance une 201
102
        // return TRUE; // non, lance une 201
103
        // return FALSE; // non, lance une 400
103
        // return FALSE; // non, lance une 400
104
 
104
 
105
        die; // tant pis
105
        die; // tant pis
106
	}
106
	}
107
 
107
 
108
	/**
108
	/**
109
	* Supprime une liste d'observations
109
	* Supprime une liste d'observations
110
	* 
110
	* 
111
	* uid[0] : utilisateur obligatoire
111
	* uid[0] : utilisateur obligatoire
112
	* uid[1] : ordres des observations à supprimer séparés par des virgules
112
	* uid[1] : ordres des observations à supprimer séparés par des virgules
113
	*/ 
113
	*/ 
114
	function deleteElement($uid)
114
	function deleteElement($uid)
115
	{
115
	{
116
	 	// Controle detournement utilisateur
116
	 	// Controle detournement utilisateur
117
		$this->controleUtilisateur($uid[0]);
117
		$this->controleUtilisateur($uid[0]);
118
		
118
		
119
		if (!isset($uid[1])) {
119
		if (!isset($uid[1])) {
120
			//TODO: envoyer un message d'erreur
120
			//TODO: envoyer un message d'erreur
121
			return;	
121
			return;	
122
		}
122
		}
123
		
123
		
124
		$uid[1] = rtrim($uid[1],',');
124
		$uid[1] = rtrim($uid[1],',');
125
		
125
		
126
		$gestionnaire_observation = new GestionObservation($this->config);
126
		$gestionnaire_observation = new GestionObservation($this->config);
127
		$tableau_ordres = explode(',', $uid[1]);
127
		$tableau_ordres = explode(',', $uid[1]);
128
		foreach($tableau_ordres as $ordre) {
128
		foreach($tableau_ordres as $ordre) {
129
			$ids_obs[] = $gestionnaire_observation->renvoyerIdPourOrdre($uid[0], $ordre);
129
			$ids_obs[] = $gestionnaire_observation->renvoyerIdPourOrdre($uid[0], $ordre);
130
		}
130
		}
131
		
131
		
132
		$suppression_observations = $gestionnaire_observation->supprimerObservation($uid[0],$uid[1]);	
132
		$suppression_observations = $gestionnaire_observation->supprimerObservation($uid[0],$uid[1]);	
133
		
133
		
134
		$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
134
		$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
135
		$champs_supp = $gestion_champs_etendus->viderParLots($ids_obs);
135
		$champs_supp = $gestion_champs_etendus->viderParLots($ids_obs);
136
		
136
		
137
		if ($suppression_observations) {
137
		if ($suppression_observations) {
138
			echo "OK";	
138
			echo "OK";	
139
		}
139
		}
140
		
140
		
141
    	exit() ;
141
    	exit() ;
142
	}
142
	}
143
}
143
}
144
?>
144
?>