Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2458 Rev 2461
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Service recherche et ajout d'image a partir de divers critères.
4
 * Service recherche et ajout d'image a partir de divers critères.
5
 *
5
 *
6
 * @internal   Mininum PHP version : 5.2
6
 * @internal   Mininum PHP version : 5.2
7
 * @category   CEL
7
 * @category   CEL
8
 * @package    Services
8
 * @package    Services
9
 * @subpackage Images
9
 * @subpackage Images
10
 * @version    0.1
10
 * @version    0.1
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
14
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
17
 */
17
 */
18
class InventoryImage extends Cel {
18
class InventoryImage extends Cel {
19
 
19
 
20
	/**
20
	/**
21
	* Méthode appelée avec une requête de type GET.
21
	* Méthode appelée avec une requête de type GET.
22
	* Renvoie les infos sur l'image correspondant à l'id passé en parametre
22
	* Renvoie les infos sur l'image correspondant à l'id passé en parametre
23
	* @param int uid[0] : utilisateur obligatoire
23
	* @param int uid[0] : utilisateur obligatoire
24
	* @param int uid[1] : identifiant image obligatoire
24
	* @param int uid[1] : identifiant image obligatoire
25
	*/
25
	*/
26
	public function getElement($uid) {
26
	public function getElement($uid) {
27
		// Controle detournement utilisateur
27
		// Controle detournement utilisateur
28
		$this->controleUtilisateur($uid[0]);
28
		$this->controleUtilisateur($uid[0]);
29
 
29
 
30
		if (!isset($uid[0]) || !isset($uid[1])) {
30
		if (!isset($uid[0]) || !isset($uid[1])) {
31
			return;
31
			return;
32
		}
32
		}
33
		$parametres = array('ordre' => $uid[1]);
33
		$parametres = array('ordre' => $uid[1]);
34
		$retour = null;
34
		$retour = null;
35
		$chercheurImage = new RechercheImage($this->config);
35
		$chercheurImage = new RechercheImage($this->config);
36
		$image_recherchee = $chercheurImage->rechercherImages($uid[0], $parametres, 0, 1);
36
		$image_recherchee = $chercheurImage->rechercherImages($uid[0], $parametres, 0, 1);
37
		if (count($image_recherchee) > 0) {
37
		if (count($image_recherchee) > 0) {
38
			$retour = $image_recherchee[0];
38
			$retour = $image_recherchee[0];
39
		}
39
		}
40
 
40
 
41
		$this->envoyerJson($retour);
41
		$this->envoyerJson($retour);
42
		return true;
42
		return true;
43
	}
43
	}
44
 
44
 
45
	/**
45
	/**
46
	* Méthode appelée avec une requête de type POST avec un identifiant d'image.
46
	* Méthode appelée avec une requête de type POST avec un identifiant d'image.
47
	* Met a jour l'image correspondant à l'id passé en paramètre avec les valeurs passées dans le post
47
	* Met a jour l'image correspondant à l'id passé en paramètre avec les valeurs passées dans le post
48
	*
48
	*
49
	* @param int $uid[0] identifiant utilisateur
49
	* @param int $uid[0] identifiant utilisateur
50
	* @param int $uid[1] ordre de l'image relatif à l'utilisateur
50
	* @param int $uid[1] ordre de l'image relatif à l'utilisateur
51
	* @param pairs array tableau contenant les valeurs de metadonnées à modifier
51
	* @param pairs array tableau contenant les valeurs de metadonnées à modifier
52
	*/
52
	*/
53
	public function updateElement($uid,$pairs) {
53
	public function updateElement($uid,$pairs) {
54
		// Controle detournement utilisateur
54
		// Controle detournement utilisateur
55
		$this->controleUtilisateur($uid[0]);
55
		$this->controleUtilisateur($uid[0]);
56
 
-
 
57
		if (count($pairs) == 0 || !isset($uid[1])) {
56
		if (count($pairs) == 0 || !isset($uid[1])) {
58
			return false;
57
			return false;
59
		}
58
		}
60
 
59
 
61
		$gestionnaireImage = new GestionImage($this->config);
60
		$gestionnaireImage = new GestionImage($this->config);
62
		$resultat_mise_a_jour = $gestionnaireImage->modifierImage($uid[0],$uid[1],$pairs);
61
		$resultat_mise_a_jour = $gestionnaireImage->modifierImage($uid[0], $uid[1], $pairs);
63
 
62
 
64
		$retour = false;
63
		$retour = false;
65
		$ok = false;
64
		$ok = false;
66
		if ($resultat_mise_a_jour) {
65
		if ($resultat_mise_a_jour) {
67
			$retour = 'OK';
66
			$retour = 'OK';
68
			$ok = true;
67
			$ok = true;
69
		}
68
		}
70
 
-
 
71
		$this->envoyer($retour);
69
		$this->envoyer($retour);
72
		return $ok;
70
		return $ok;
73
	}
71
	}
74
 
72
 
75
	/**
73
	/**
76
	* Méthode appelée avec une requête de type PUT.
74
	* Méthode appelée avec une requête de type PUT.
77
	* Stocke une image, crée ses miniatures et enregistre ses informations
75
	* Stocke une image, crée ses miniatures et enregistre ses informations
78
	* Renvoie l'identifiant d'image nouvellement crée en cas de succès
76
	* Renvoie l'identifiant d'image nouvellement crée en cas de succès
79
	*
77
	*
80
	* @param $pairs array tableau contenant les valeurs de metadonnées à ajouter
78
	* @param $pairs array tableau contenant les valeurs de metadonnées à ajouter
81
	*/
79
	*/
82
	public function createElement($pairs) {
80
	public function createElement($pairs) {
83
		if (self::ARRET_SERVICE) {
81
		if (self::ARRET_SERVICE) {
84
			header('Status: 503 Service Temporarily Unavailable');
82
			header('Status: 503 Service Temporarily Unavailable');
85
			echo "L'envoi d'images au cel est temporairement désactivé";
83
			echo "L'envoi d'images au cel est temporairement désactivé";
86
			exit;
84
			exit;
87
		}
85
		}
88
		// Controle detournement utilisateur
86
		// Controle detournement utilisateur
89
		$this->controleUtilisateur($pairs['ce_utilisateur']);
87
		$this->controleUtilisateur($pairs['ce_utilisateur']);
90
 
88
 
91
		foreach ($_FILES as $file) {
89
		foreach ($_FILES as $file) {
92
			$infos_fichier = $file ;
90
			$infos_fichier = $file ;
93
		}
91
		}
94
 
92
 
95
		$gestionnaireImage = new GestionImage($this->config);
93
		$gestionnaireImage = new GestionImage($this->config);
96
		$id_utilisateur = $pairs['ce_utilisateur'];
94
		$id_utilisateur = $pairs['ce_utilisateur'];
97
 
95
 
98
		if ($gestionnaireImage->ajouterImage($id_utilisateur, $infos_fichier)) {
96
		if ($gestionnaireImage->ajouterImage($id_utilisateur, $infos_fichier)) {
99
			// l'upload demande de court-circuiter le fonctionnement normal de JREST
97
			// l'upload demande de court-circuiter le fonctionnement normal de JREST
100
			// en quittant directement après l'envoi
98
			// en quittant directement après l'envoi
101
			$this->envoyerMessageCreationEffectuee();
99
			$this->envoyerMessageCreationEffectuee();
102
			exit();
100
			exit();
103
		}
101
		}
104
	}
102
	}
105
 
103
 
106
	private function envoyerMessageCreationEffectuee() {
104
	private function envoyerMessageCreationEffectuee() {
107
		header('HTTP/1.0 200 Created');
105
		header('HTTP/1.0 200 Created');
108
		echo 'OK';
106
		echo 'OK';
109
		exit();
107
		exit();
110
	}
108
	}
111
 
109
 
112
	/**
110
	/**
113
	 * Méthode appelée avec une requête de type DELETE.
111
	 * Méthode appelée avec une requête de type DELETE.
114
	 * Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre
112
	 * Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre
115
	 * Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules
113
	 * Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules
116
	 *
114
	 *
117
	 * @param int uid[0] id utilisateur
115
	 * @param int uid[0] id utilisateur
118
	 * @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules
116
	 * @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules
119
	 *
117
	 *
120
	 */
118
	 */
121
	public function deleteElement($uid){
119
	public function deleteElement($uid){
122
		if (self::ARRET_SERVICE) {
120
		if (self::ARRET_SERVICE) {
123
			header('Status: 503 Service Temporarily Unavailable');
121
			header('Status: 503 Service Temporarily Unavailable');
124
			echo "L'envoi d'images au cel est temporairement désactivé";
122
			echo "L'envoi d'images au cel est temporairement désactivé";
125
			exit;
123
			exit;
126
		}
124
		}
127
	 	// Controle detournement utilisateur
125
	 	// Controle detournement utilisateur
128
		$this->controleUtilisateur($uid[0]);
126
		$this->controleUtilisateur($uid[0]);
129
		if (!isset($uid[1]) || !$this->estUneSuiteIdentifiantsImage($uid[1])) {
127
		if (!isset($uid[1]) || !$this->estUneSuiteIdentifiantsImage($uid[1])) {
130
			return;
128
			return;
131
		}
129
		}
132
		$ids_images = explode(',',$uid[1]);
130
		$ids_images = explode(',',$uid[1]);
133
		$gestionnaireImage = new GestionImage($this->config);
131
		$gestionnaireImage = new GestionImage($this->config);
134
		$gestionnaireImage->supprimerImage($ids_images);
132
		$gestionnaireImage->supprimerImage($ids_images);
135
		$this->envoyer('OK');
133
		$this->envoyer('OK');
136
	}
134
	}
137
 
135
 
138
	/** Un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
136
	/** Un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
139
	 * sans virgule terminale
137
	 * sans virgule terminale
140
	 */
138
	 */
141
	private function estUneSuiteIdentifiantsImage($chaine) {
139
	private function estUneSuiteIdentifiantsImage($chaine) {
142
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
140
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
143
		return preg_match($reg_exp, $chaine);
141
		return preg_match($reg_exp, $chaine);
144
	}
142
	}
145
}
143
}