Subversion Repositories eFlore/Applications.cel

Rev

Rev 2461 | Details | Compare with Previous | Last modification | View Log | RSS feed

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