Subversion Repositories eFlore/Applications.cel

Rev

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

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