New file |
0,0 → 1,76 |
<?php |
/** |
* @category PHP |
* @package jrest |
* @author Aurélien PERONNET <aurelien@tela-botania.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botania.org> |
* @copyright 2014 Tela-Botanica |
* @license Licence CECILL <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* |
*/ |
class CelSuppressionObservation extends Cel { |
|
/** |
* Méthode appelée avec une requête de type DELETE. |
* Dépublie l'obs correspondant à l'id passé en parametre (dans le futur une suppression sera possible) |
* Supporte l'appel multiple en passant plusieurs numéros séparés par des virgules |
* |
* @param string uid[0] : id(s) observation(s) obligatoire(s) séparés par des virgules |
* |
*/ |
public function deleteElement($uid){ |
if ($this->controlerAccessibiliteWs()) { |
if ($this->controleAppelIpAutorisee()) { |
// Initialisation des paramètres |
$idObs = isset($uid[0]) ? $uid[0] : ''; |
|
// Vérifier les paramètres |
$this->verifierIdentifiantObs($idObs); |
$idObs = explode(',', $idObs); |
|
$gestionnaireObs = new GestionObservation($this->config); |
|
// par défaut on ne fait que dépublier les obs à moins que la suppression ne soit demandée |
// expréssement par le paramètre mode |
if(isset($_GET['mode']) && $_GET['mode'] == "supprimer") { |
// TODO: suppression réelle des obs par ce mode, et réorganiser le code de suppression |
// des obs à travers tous les web services et dans gestion observation |
header('HTTP/1.0 501 Not Implemented'); |
die("La suppression réelle des observations n'est pas encore implémentée."); |
} else { |
$detransmissionObs = $gestionnaireObs->modifierTransmissionObservation($idObs, false); |
} |
|
if ($detransmissionObs) { |
$this->envoyer('OK'); |
} else { |
$this->envoyer("Les observations n'ont pas pu être dépubliées."); |
} |
} 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); |
} |
} |
} |
|
public function controlerAccessibiliteWs() { |
if (self::ARRET_SERVICE) { |
header('Status: 503 Service Temporarily Unavailable'); |
die("La suppression d'images du CEL est temporairement désactivée."); |
} |
return true; |
} |
|
private function verifierIdentifiantObs($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'obs séparés par des virgules."); |
} |
return $ok; |
} |
} |
?> |