Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2461 Rev 3091
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
		if (count($pairs) == 0 || !isset($uid[1])) {
56
		if (count($pairs) == 0 || !isset($uid[1])) {
57
			return false;
57
			return false;
58
		}
58
		}
59
 
59
 
60
		$gestionnaireImage = new GestionImage($this->config);
60
		$gestionnaireImage = new GestionImage($this->config);
61
		$resultat_mise_a_jour = $gestionnaireImage->modifierImage($uid[0], $uid[1], $pairs);
61
		$resultat_mise_a_jour = $gestionnaireImage->modifierImage($uid[0], $uid[1], $pairs);
62
 
62
 
63
		$retour = false;
63
		$retour = false;
64
		$ok = false;
64
		$ok = false;
65
		if ($resultat_mise_a_jour) {
65
		if ($resultat_mise_a_jour) {
66
			$retour = 'OK';
66
			$retour = 'OK';
67
			$ok = true;
67
			$ok = true;
68
		}
68
		}
69
		$this->envoyer($retour);
69
		$this->envoyer($retour);
70
		return $ok;
70
		return $ok;
71
	}
71
	}
72
 
72
 
73
	/**
73
	/**
74
	* Méthode appelée avec une requête de type PUT.
74
	* Méthode appelée avec une requête de type PUT.
75
	* Stocke une image, crée ses miniatures et enregistre ses informations
75
	* Stocke une image, crée ses miniatures et enregistre ses informations
76
	* 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
77
	*
77
	*
78
	* @param $pairs array tableau contenant les valeurs de metadonnées à ajouter
78
	* @param $pairs array tableau contenant les valeurs de metadonnées à ajouter
79
	*/
79
	*/
80
	public function createElement($pairs) {
80
	public function createElement($pairs) {
81
		if (self::ARRET_SERVICE) {
81
		if (self::ARRET_SERVICE) {
82
			header('Status: 503 Service Temporarily Unavailable');
82
			header('Status: 503 Service Temporarily Unavailable');
83
			echo "L'envoi d'images au cel est temporairement désactivé";
83
			echo "L'envoi d'images au cel est temporairement désactivé";
84
			exit;
84
			exit;
85
		}
85
		}
86
		// Controle detournement utilisateur
86
		// Controle detournement utilisateur
87
		$this->controleUtilisateur($pairs['ce_utilisateur']);
87
		$this->controleUtilisateur($pairs['ce_utilisateur']);
88
 
88
 
89
		foreach ($_FILES as $file) {
89
		foreach ($_FILES as $file) {
90
			$infos_fichier = $file ;
90
			$infos_fichier = $file ;
91
		}
91
		}
92
 
92
 
93
		$gestionnaireImage = new GestionImage($this->config);
93
		$gestionnaireImage = new GestionImage($this->config);
94
		$id_utilisateur = $pairs['ce_utilisateur'];
94
		$id_utilisateur = $pairs['ce_utilisateur'];
95
 
95
 
96
		if ($gestionnaireImage->ajouterImage($id_utilisateur, $infos_fichier)) {
96
		if ($gestionnaireImage->ajouterImage($id_utilisateur, $infos_fichier)) {
97
			// l'upload demande de court-circuiter le fonctionnement normal de JREST
97
			// l'upload demande de court-circuiter le fonctionnement normal de JREST
98
			// en quittant directement après l'envoi
98
			// en quittant directement après l'envoi
99
			$this->envoyerMessageCreationEffectuee();
99
			$this->envoyerMessageCreationEffectuee();
100
			exit();
100
			exit();
-
 
101
		} else {
-
 
102
			header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
-
 
103
			echo "Erreur lors du stockage de l'image";
-
 
104
			exit();
101
		}
105
		}
102
	}
106
	}
103
 
107
 
104
	private function envoyerMessageCreationEffectuee() {
108
	private function envoyerMessageCreationEffectuee() {
105
		header('HTTP/1.0 200 Created');
109
		header('HTTP/1.0 200 Created');
106
		echo 'OK';
110
		echo 'OK';
107
		exit();
111
		exit();
108
	}
112
	}
109
 
113
 
110
	/**
114
	/**
111
	 * Méthode appelée avec une requête de type DELETE.
115
	 * Méthode appelée avec une requête de type DELETE.
112
	 * Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre
116
	 * Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre
113
	 * Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules
117
	 * Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules
114
	 *
118
	 *
115
	 * @param int uid[0] id utilisateur
119
	 * @param int uid[0] id utilisateur
116
	 * @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules
120
	 * @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules
117
	 *
121
	 *
118
	 */
122
	 */
119
	public function deleteElement($uid){
123
	public function deleteElement($uid){
120
		if (self::ARRET_SERVICE) {
124
		if (self::ARRET_SERVICE) {
121
			header('Status: 503 Service Temporarily Unavailable');
125
			header('Status: 503 Service Temporarily Unavailable');
122
			echo "L'envoi d'images au cel est temporairement désactivé";
126
			echo "L'envoi d'images au cel est temporairement désactivé";
123
			exit;
127
			exit;
124
		}
128
		}
125
	 	// Controle detournement utilisateur
129
	 	// Controle detournement utilisateur
126
		$this->controleUtilisateur($uid[0]);
130
		$this->controleUtilisateur($uid[0]);
127
		if (!isset($uid[1]) || !$this->estUneSuiteIdentifiantsImage($uid[1])) {
131
		if (!isset($uid[1]) || !$this->estUneSuiteIdentifiantsImage($uid[1])) {
128
			return;
132
			return;
129
		}
133
		}
130
		$ids_images = explode(',',$uid[1]);
134
		$ids_images = explode(',',$uid[1]);
131
		$gestionnaireImage = new GestionImage($this->config);
135
		$gestionnaireImage = new GestionImage($this->config);
132
		$gestionnaireImage->supprimerImage($ids_images);
136
		$gestionnaireImage->supprimerImage($ids_images);
133
		$this->envoyer('OK');
137
		$this->envoyer('OK');
134
	}
138
	}
135
 
139
 
136
	/** Un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
140
	/** Un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
137
	 * sans virgule terminale
141
	 * sans virgule terminale
138
	 */
142
	 */
139
	private function estUneSuiteIdentifiantsImage($chaine) {
143
	private function estUneSuiteIdentifiantsImage($chaine) {
140
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
144
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
141
		return preg_match($reg_exp, $chaine);
145
		return preg_match($reg_exp, $chaine);
142
	}
146
	}
143
}
-
 
144
147
}
-
 
148