Subversion Repositories eFlore/Applications.cel

Rev

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