* @author Jean-Pascal MILCENT * @copyright 2014 Tela-Botanica * @license Licence CECILL * @license GPL v3 * */ 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; } } ?>