Rev 1502 | Rev 1873 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
class CelValidationObservation extends Cel {
/**
* Méthode appelée avec une requête de type POST avec un identifiant d'obs.
* Modifie le taxon associé à une observation avec les informations envoyées
* Utilisé par:
* - del/services/modules/0.1/determinations/ValiderDetermination.php::modifierObservationParDetermination()
*
* @param int $uid[0] identifiant observation
* @param pairs array tableau contenant les valeurs à modifier
*/
public function updateElement($uid, $pairs) {
// ce service est uniquement destiné à être appelé en local,
// depuis le serveur lui même
// en particulier par l'application identiplante
$this->controleAppelIpAutorisee();
self::verifierParametresObligatoires($uid, $pairs);
$id = $uid[0];
$gestion_observation = new GestionObservation($this->config);
$utilisateur = $pairs['ce_utilisateur'];
unset($pairs['ce_utilisateur'], $pairs['id_observation']);
$modification = $gestion_observation->modifierObservationPublique($utilisateur, $id, $pairs);
if($modification) {
header("Content-Type: text/plain; charset=utf-8");
die("OK"); // attention, compatibilité avec ValiderDetermination.php de DEL !
}
elseif($modification === 0) {
http_response_code(304); // Not Modified
header("Content-Type: text/plain; charset=utf-8");
die("Not Modified");
}
else {
http_response_code(500); // Internal Server Error
header("Content-Type: text/plain; charset=utf-8");
die("Impossible de modifier l'observation associée à cet identifiant " . mysql_error());
}
}
static function verifierParametresObligatoires($uid, $params) {
if(!@intval($uid[0]) || !@intval($params['id_observation'])) {
header("Content-Type: text/plain; charset=utf-8");
die("L'identifiant d'observation doit être un entier");
}
// TODO: check sur 'id_observation' en tant que param est superflu ?
$params_obligatoires = array('id_observation', 'ce_utilisateur', 'nom_sel');
foreach($params_obligatoires as $param) {
if(@trim($params[$param])) continue;
http_response_code(412); // Precondition Failed
header("Content-Type: text/plain; charset=utf-8");
die(sprintf("Paramètre %s manquant (parmi %s)", $param, implode(', ', $params_obligatoires)));
}
}
}