Subversion Repositories eFlore/Applications.cel

Rev

Rev 1840 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1840 Rev 1914
1
<?php
1
<?php
2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
-
 
3
/**
2
/**
4
* PHP Version 5
3
 * PHP Version 5.2
5
*
4
 *
6
* @category  PHP
5
 * @category  PHP
7
* @package   jrest
6
 * @package   jrest
-
 
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 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
* @version   SVN: <svn_id>
11
 * @license  GPL v3 <http://www.gnu.org/licenses/gpl.txt>
12
* @link      /doc/jrest/
12
 * @link      /doc/jrest/
13
*/
-
 
14
 
-
 
15
/**
13
 *
16
* InventoryObservationList.php
14
 * InventoryObservationList.php
17
* 
-
 
18
* in=utf8
-
 
19
* out=utf8
-
 
20
*
-
 
21
* Cas d'utilisation :
15
 * Cas d'utilisation :
22
* 1: Service recherche d'observations a partir de divers critères
16
 * 1: Service recherche d'observations a partir de divers critères
23
*  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
24
*  b: Le service renvoie la liste des observations correspondantes
18
 *  b: Le service renvoie la liste des observations correspondantes
25
* 
19
 * 
26
* 2: Service modification en masse d'observations
20
 * 2: Service modification en masse d'observations
27
*  a: Le service recherche les observations correspondant aux identifiants donnés
21
 *  a: Le service recherche les observations correspondant aux identifiants donnés
28
*  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
29
* 
23
 * 
30
* 3: Service de suppression d'observations en masse
24
 * 3: Service de suppression d'observations en masse
31
*  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
32
*  b: Le service supprime la liste des observations correspondantes
26
 *  b: Le service supprime la liste des observations correspondantes
33
*/
27
 */
34
class InventoryObservationList extends Cel {
28
class InventoryObservationList extends Cel {
35
 	
29
 	
36
	/**
30
	/**
37
	 * renvoie les observations correspondant au critères de filtrage
31
	 * renvoie les observations correspondant au critères de filtrage
38
	 * 
32
	 * 
39
	 * uid[0] : utilisateur obligatoire
33
	 * uid[0] : utilisateur obligatoire
40
	 * 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
41
	 */ 
35
	 */ 
42
	function getElement($uid)
36
	function getElement($uid)
43
	{
37
	{
44
		// Controle detournement utilisateur
38
		// Controle detournement utilisateur
45
	    $this->controleUtilisateur($uid[0]);
39
	    $this->controleUtilisateur($uid[0]);
46
 
40
 
47
		$chercheur_observations = new RechercheObservation($this->config);
41
		$chercheur_observations = new RechercheObservation($this->config);
48
 
42
 
49
		$numero_page = 0;
43
		$numero_page = 0;
50
		$taille_page = 50;
44
		$taille_page = 50;
51
		$criteres = array();
45
		$criteres = array();
52
 
46
 
53
		$criteres = $_GET ;
47
		$criteres = $_GET ;
54
		if (isset($criteres['numero_page']) && isset($criteres['limite'])) {
48
		if (isset($criteres['numero_page']) && isset($criteres['limite'])) {
55
			$numero_page = $criteres['numero_page'];
49
			$numero_page = $criteres['numero_page'];
56
			unset($criteres['numero_page']);
50
			unset($criteres['numero_page']);
57
			$taille_page = $criteres['limite'];
51
			$taille_page = $criteres['limite'];
58
			unset($criteres['limite']);	
52
			unset($criteres['limite']);	
59
		}
53
		}
60
		
54
		
61
		$debut = $taille_page*$numero_page ;
55
		$debut = $taille_page*$numero_page ;
62
 
56
 
63
		$retour = $chercheur_observations->rechercherObservations($uid[0], $criteres, $debut, $taille_page)->get();
57
		$retour = $chercheur_observations->rechercherObservations($uid[0], $criteres, $debut, $taille_page)->get();
64
		$retour_formate = $chercheur_observations->formaterPourEnvoiCel($retour);
58
		$retour_formate = $chercheur_observations->formaterPourEnvoiCel($retour);
65
 
59
 
66
		$this->envoyerJson($retour_formate);			
60
		$this->envoyerJson($retour_formate);			
67
		return true;	
61
		return true;	
68
	}
62
	}
69
 
63
 
70
	/**
64
	/**
71
	 * met à jour les métadonnées d'une liste d'observations
65
	 * met à jour les métadonnées d'une liste d'observations
72
	 * 
66
	 * 
73
	 * uid[0] : utilisateur obligatoire
67
	 * uid[0] : utilisateur obligatoire
74
	 * 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
75
	 * 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
76
	 */ 
70
	 */ 
77
	function updateElement($uid,$pairs) {
71
	function updateElement($uid,$pairs) {
78
 
72
 
79
		// Controle detournement utilisateur
73
		// Controle detournement utilisateur
80
		$this->controleUtilisateur($uid[0]);
74
		$this->controleUtilisateur($uid[0]);
81
		
75
		
82
		if (!isset($uid[1])) {
76
		if (!isset($uid[1])) {
83
			//TODO: envoyer un message d'erreur
77
			//TODO: envoyer un message d'erreur
84
			return;	
78
			return;	
85
		}
79
		}
86
		
80
 
-
 
81
        $obs = array_filter(array_map('intval', explode(',', $uid[1])));
87
		$uid[1] = rtrim($uid[1],',');
82
        if(count($obs) == 0) {
-
 
83
            return;
-
 
84
        }
88
		
85
	
89
		$gestionnaire_observation = new GestionObservation($this->config);
86
		$gestionnaire_observation = new GestionObservation($this->config);
-
 
87
        if(count($obs) == 1) {
90
		$modification_observation = $gestionnaire_observation->modifierObservation($uid[0],$uid[1],$pairs);	
88
            return $gestionnaire_observation->modifierObservation($uid[0], $obs[0], $pairs);	
-
 
89
        }
91
       	 
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) {
-
 
95
            header('HTTP/1.0 304 Not Modified');
92
        return true;
96
            die;
-
 
97
        }
-
 
98
 
-
 
99
        header('HTTP/1.0 200 OK'); // et non pas une 201 !
-
 
100
        // die(); // non, car incompatible avec PHPUnit
-
 
101
        // throw(new Exception()); // non, lance une 400 (cf JRest::updateElement())
-
 
102
        // return TRUE; // non, lance une 201
-
 
103
        // return FALSE; // non, lance une 400
-
 
104
 
-
 
105
        die; // tant pis
93
	}
106
	}
94
 
107
 
95
	/**
108
	/**
96
	* Supprime une liste d'observations
109
	* Supprime une liste d'observations
97
	* 
110
	* 
98
	* uid[0] : utilisateur obligatoire
111
	* uid[0] : utilisateur obligatoire
99
	* 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
100
	*/ 
113
	*/ 
101
	function deleteElement($uid)
114
	function deleteElement($uid)
102
	{
115
	{
103
	 	// Controle detournement utilisateur
116
	 	// Controle detournement utilisateur
104
		$this->controleUtilisateur($uid[0]);
117
		$this->controleUtilisateur($uid[0]);
105
		
118
		
106
		if (!isset($uid[1])) {
119
		if (!isset($uid[1])) {
107
			//TODO: envoyer un message d'erreur
120
			//TODO: envoyer un message d'erreur
108
			return;	
121
			return;	
109
		}
122
		}
110
		
123
		
111
		$uid[1] = rtrim($uid[1],',');
124
		$uid[1] = rtrim($uid[1],',');
112
		
125
		
113
		$gestionnaire_observation = new GestionObservation($this->config);
126
		$gestionnaire_observation = new GestionObservation($this->config);
114
		$tableau_ordres = explode(',', $uid[1]);
127
		$tableau_ordres = explode(',', $uid[1]);
115
		foreach($tableau_ordres as $ordre) {
128
		foreach($tableau_ordres as $ordre) {
116
			$ids_obs[] = $gestionnaire_observation->renvoyerIdPourOrdre($uid[0], $ordre);
129
			$ids_obs[] = $gestionnaire_observation->renvoyerIdPourOrdre($uid[0], $ordre);
117
		}
130
		}
118
		
131
		
119
		$suppression_observations = $gestionnaire_observation->supprimerObservation($uid[0],$uid[1]);	
132
		$suppression_observations = $gestionnaire_observation->supprimerObservation($uid[0],$uid[1]);	
120
		
133
		
121
		$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
134
		$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
122
		$champs_supp = $gestion_champs_etendus->viderParLots($ids_obs);
135
		$champs_supp = $gestion_champs_etendus->viderParLots($ids_obs);
123
		
136
		
124
		if ($suppression_observations) {
137
		if ($suppression_observations) {
125
			echo "OK";	
138
			echo "OK";	
126
		}
139
		}
127
		
140
		
128
    	exit() ;
141
    	exit() ;
129
	}
142
	}
130
}
143
}
131
?>
144
?>