Rev 2462 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Service générique permettant de manipuler les Images.** Cas d'utilisation GET :* /CelImage/liste-ids?obsId=[0-9]+ : ids des images liées à l'observation possédant l'identifiant 'obsId'.** Cas d'utilisation DELETE :** Sortie :* Type de sortie : json (par défaut), HTML en cas d'erreur.** @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 CelImage extends Cel {/*** Méthode appelée avec une requête de type GET.*/public function getElement($params) {$parametres = $this->traiterParametres(array('mode'), $params, false);extract($parametres);$contenu = '';$retour = null;if (isset($mode)) {$methode = $this->traiterNomMethodeGet($mode);if (method_exists($this, $methode)) {$this->parametres = array_shift($params);$retour = $this->$methode();} else {$service = get_class($this);$this->messages[] = "Ce type de mode '$mode' pour le service '$service' n'est pas disponible.";}} else {$this->messages[] = "Vous devez indiquer un type de mode d'interrogation.";}if (is_null($retour)) {$this->messages[] = "Un problème est survenu lors de l'appel au service CelImage";}$this->envoyerJson($retour);}private function getImage() {$image = null;if (isset($_GET['imgId'])) {$recherche = new RechercheImage($this->config);$params = array('id_image' => $_GET['imgId'], 'transmission' => "1");$image = $recherche->rechercherImages(null, $params, 0, 1);if(!empty($image)) {$image = $image[0];}}return $image;}/*** Service fournissant la liste des ids des images liées à une observation.* Format de l'url du WS :* /CelImage/liste-ids?obsId=[0-9]+ : ids des images liées à l'observation possédant l'identifiant 'obsId'.*/private function getListeIds() {$ids = array();if (isset($_GET['obsId'])) {$observations = $this->traiterValeursMultiples($_GET['obsId']);if (! is_null($observations)) {$requete = 'SELECT ce_observation, id_image '.'FROM cel_images '."WHERE ce_observation IN ($observations) ";$resultats = Cel::db()->requeter($requete);$infos = array();if (is_array($resultats)) {$infos = $resultats;}foreach ($infos as $info) {if (is_numeric($info['id_image'])) {$ids[$info['ce_observation']][] = (int) $info['id_image'];}}}}return $ids;}/*** 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){$this->controlerAccessibiliteWs();$this->controleAppelIpAutorisee();$idImage = isset($uid[0]) ? $uid[0] : '';$this->verifierIdentifiantImage($idImage);$idsImages = explode(',', $idImage);$gestionnaireImage = new GestionImage($this->config);$suppressionImage = $gestionnaireImage->supprimerImage($idsImages);if ($suppressionImage) {$this->envoyer('OK');} else {$this->envoyer("Au moins une image « $idImage » n'a pu être supprimé.");}}private function verifierIdentifiantImage($chaine) {$ok = preg_match('/^(?:[0-9]+,)*[0-9]+$/', $chaine);if ($ok == false) {$msg = "Indiquer un ou plusieurs identifiants d'image séparés par des virgules.";$this->envoyerMessageErreur(412, $msg);// Precondition Failed}return $ok;}}