New file |
0,0 → 1,137 |
<?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; |
} |
} |