Rev 2461 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Service recherche et ajout d'image a partir de divers critères.** @internal Mininum PHP version : 5.2* @category CEL* @package Services* @subpackage Images* @version 0.1* @author Mathias CHOUET <mathias@tela-botanica.org>* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @author Aurelien PERONNET <aurelien@tela-botanica.org>* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>*/class InventoryImage extends Cel {/*** Méthode appelée avec une requête de type GET.* Renvoie les infos sur l'image correspondant à l'id passé en parametre* @param int uid[0] : utilisateur obligatoire* @param int uid[1] : identifiant image obligatoire*/public function getElement($uid) {// Controle detournement utilisateur$this->controleUtilisateur($uid[0]);if (!isset($uid[0]) || !isset($uid[1])) {return;}$parametres = array('ordre' => $uid[1]);$retour = null;$chercheurImage = new RechercheImage($this->config);$image_recherchee = $chercheurImage->rechercherImages($uid[0], $parametres, 0, 1);if (count($image_recherchee) > 0) {$retour = $image_recherchee[0];}$this->envoyerJson($retour);return true;}/*** Méthode appelée avec une requête de type POST avec un identifiant d'image.* Met a jour l'image correspondant à l'id passé en paramètre avec les valeurs passées dans le post** @param int $uid[0] identifiant utilisateur* @param int $uid[1] ordre de l'image relatif à l'utilisateur* @param pairs array tableau contenant les valeurs de metadonnées à modifier*/public function updateElement($uid,$pairs) {// Controle detournement utilisateur$this->controleUtilisateur($uid[0]);if (count($pairs) == 0 || !isset($uid[1])) {return false;}$gestionnaireImage = new GestionImage($this->config);$resultat_mise_a_jour = $gestionnaireImage->modifierImage($uid[0], $uid[1], $pairs);$retour = false;$ok = false;if ($resultat_mise_a_jour) {$retour = 'OK';$ok = true;}$this->envoyer($retour);return $ok;}/*** Méthode appelée avec une requête de type PUT.* Stocke une image, crée ses miniatures et enregistre ses informations* Renvoie l'identifiant d'image nouvellement crée en cas de succès** @param $pairs array tableau contenant les valeurs de metadonnées à ajouter*/public function createElement($pairs) {if (self::ARRET_SERVICE) {header('Status: 503 Service Temporarily Unavailable');echo "L'envoi d'images au cel est temporairement désactivé";exit;}// Controle detournement utilisateur$this->controleUtilisateur($pairs['ce_utilisateur']);foreach ($_FILES as $file) {$infos_fichier = $file ;}$gestionnaireImage = new GestionImage($this->config);$id_utilisateur = $pairs['ce_utilisateur'];if ($gestionnaireImage->ajouterImage($id_utilisateur, $infos_fichier)) {// l'upload demande de court-circuiter le fonctionnement normal de JREST// en quittant directement après l'envoi$this->envoyerMessageCreationEffectuee();exit();} else {header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);echo "Erreur lors du stockage de l'image";exit();}}private function envoyerMessageCreationEffectuee() {header('HTTP/1.0 200 Created');echo 'OK';exit();}/*** Méthode appelée avec une requête de type DELETE.* Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre* Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules** @param int uid[0] id utilisateur* @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules**/public function deleteElement($uid){if (self::ARRET_SERVICE) {header('Status: 503 Service Temporarily Unavailable');echo "L'envoi d'images au cel est temporairement désactivé";exit;}// Controle detournement utilisateur$this->controleUtilisateur($uid[0]);if (!isset($uid[1]) || !$this->estUneSuiteIdentifiantsImage($uid[1])) {return;}$ids_images = explode(',',$uid[1]);$gestionnaireImage = new GestionImage($this->config);$gestionnaireImage->supprimerImage($ids_images);$this->envoyer('OK');}/** Un ensemble d'identifiants est une suite d'identifiants séparés par des virgules* sans virgule terminale*/private function estUneSuiteIdentifiantsImage($chaine) {$reg_exp = "/^(([0-9])+,)*([0-9])+$/";return preg_match($reg_exp, $chaine);}}