Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2121 aurelien 1
<?php
2
/**
3
* @category  PHP
4
* @package   jrest
5
* @author    Aurélien PERONNET <aurelien@tela-botania.org>
6
* @author    Jean-Pascal MILCENT <jpm@tela-botania.org>
7
* @copyright 2014 Tela-Botanica
8
* @license   Licence CECILL <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
9
* @license	 GPL v3 <http://www.gnu.org/licenses/gpl.txt>
10
*
11
*/
12
class CelSuppressionObservation extends Cel {
13
 
14
	/**
15
	 * Méthode appelée avec une requête de type DELETE.
16
	 * Dépublie l'obs correspondant à l'id passé en parametre (dans le futur une suppression sera possible)
17
	 * Supporte l'appel multiple en passant plusieurs numéros séparés par des virgules
18
	 *
19
	 * @param string uid[0] : id(s) observation(s) obligatoire(s) séparés par des virgules
20
	 */
21
	public function deleteElement($uid){
22
		if ($this->controlerAccessibiliteWs()) {
23
			if ($this->controleAppelIpAutorisee()) {
24
				// Initialisation des paramètres
25
				$idObs = isset($uid[0]) ? $uid[0] : '';
26
 
27
				// Vérifier les paramètres
28
				$this->verifierIdentifiantObs($idObs);
29
				$idObs = explode(',', $idObs);
30
 
31
				$gestionnaireObs = new GestionObservation($this->config);
2143 jpm 32
 
2121 aurelien 33
				// par défaut on ne fait que dépublier les obs à moins que la suppression ne soit demandée
34
				// expréssement par le paramètre mode
35
				if(isset($_GET['mode']) && $_GET['mode'] == "supprimer") {
36
					// TODO: suppression réelle des obs par ce mode, et réorganiser le code de suppression
37
					// des obs à travers tous les web services et dans gestion observation
38
					header('HTTP/1.0 501 Not Implemented');
39
					die("La suppression réelle des observations n'est pas encore implémentée.");
40
				} else {
41
					$detransmissionObs = $gestionnaireObs->modifierTransmissionObservation($idObs, false);
42
				}
43
 
44
				if ($detransmissionObs) {
45
					$this->envoyer('OK');
46
				} else {
47
					$this->envoyer("Les observations n'ont pas pu être dépubliées.");
48
				}
49
			} else {
50
				header('Status: 401 Unauthorized');
51
				$message = "Accès interdit. \n"."Vous n'êtes pas autorisé à accéder à ce service depuis '{$_SERVER['REMOTE_ADDR']}' !\n";
52
				die($message);
53
			}
54
		}
55
	}
56
 
57
	public function controlerAccessibiliteWs() {
58
		if (self::ARRET_SERVICE) {
59
			header('Status: 503 Service Temporarily Unavailable');
60
			die("La suppression d'images du CEL est temporairement désactivée.");
61
		}
62
		return true;
63
	}
64
 
65
	private function verifierIdentifiantObs($chaine) {
66
		$ok = preg_match('/^(?:[0-9]+,)*[0-9]+$/', $chaine);
67
		if ($ok == false) {
68
			header("HTTP/1.0 412 Precondition Failed"); // TODO: PHP: 5.4 http_response_code(412);
69
			header("Content-Type: text/plain; charset=utf-8");
70
			die("Indiquer un ou plusieurs identifiants d'obs séparés par des virgules.");
71
		}
72
		return $ok;
73
	}
74
}
75
?>