1,15 → 1,15 |
<?php |
// declare(encoding='UTF-8'); |
|
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
/** |
* Service fournissant la liste des ids des images liées à une observation. |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* |
* Cas d'utilisation : |
* 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. |
* |
28,7 → 28,7 |
$parametres = $this->traiterParametres(array('mode'), $params, false); |
extract($parametres); |
$contenu = ''; |
|
|
$retour = null; |
if (isset($mode)) { |
$methode = $this->traiterNomMethodeGet($mode); |
50,14 → 50,16 |
} |
|
/** |
* Carte par défaut |
* 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 co.id_observation, cim.id_image '. |
'FROM cel_obs AS co '. |
66,14 → 68,14 |
' LEFT JOIN cel_images AS cim '. |
' ON (coi.id_image = cim.id_image) '. |
"WHERE co.id_observation IN ($observations) "; |
|
|
$resultat_requete_images = Cel::db()->requeter($requete); |
|
|
$infos = array(); |
if(is_array($resultat_requete_images)) { |
$infos = $resultat_requete_images; |
} |
|
|
foreach ($infos as $info) { |
if(is_numeric($info['id_image'])) { |
$ids[$info['id_observation']][] = (int) $info['id_image']; |
83,4 → 85,49 |
} |
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){ |
if ($this->controlerAccessibiliteWs()) { |
if ($this->controleAppelIpAutorisee()) { |
// Initialisation des paramètres |
$idImage = isset($uid[0]) ? $uid[0] : ''; |
|
// Vérifier les paramêtres |
$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é."); |
} |
} else { |
header('Status: 401 Unauthorized'); |
$message = "Accès interdit. \n"."Vous n'êtes pas autorisé à accéder à ce service depuis '{$_SERVER['REMOTE_ADDR']}' !\n"; |
die($message); |
} |
} |
} |
|
private function verifierIdentifiantImage($chaine) { |
$ok = preg_match('/^(?:[0-9]+,)*[0-9]+$/', $chaine); |
if ($ok == false) { |
header("HTTP/1.0 412 Precondition Failed"); // TODO: PHP: 5.4 http_response_code(412); |
header("Content-Type: text/plain; charset=utf-8"); |
die("Indiquer un ou plusieurs identifiants d'image séparés par des virgules."); |
} |
return $ok; |
} |
} |