Rev 1870 | Rev 1877 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** @category PHP* @package jrest* @author Aurélien Peronnet <aurelien@tela-botania.org>* @author Raphaël Droz <raphael@tela-botania.org>* @copyright 2013 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 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* @param pairs['obsKeywordDelete'] optional string: mot-clef à délier à cette observation*/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);$pairs = array_map('trim', $pairs);$utilisateur = $pairs['ce_utilisateur'];unset($pairs['ce_utilisateur'], $pairs['id_observation']);// mise à jour des mots-clefs suite à une validation:// typiquement, DEL modifierObservationParDetermination()// nous enverra obsKeywordDelete=aDeterminer en plus de certitude=Certaine$obsKeywordDelete = @trim($pairs['obsKeywordDelete']);// $imgKeywordDelete = @trim($pairs['imgKeywordDelete']);unset($pairs['obsKeywordDelete']); // , $pairs['imgKeywordDelete']);$modification = $gestion_observation->modifierObservationPublique($utilisateur, $id, $pairs);if($modification) {// quel impact de ces valeurs de retour ?if($kid = InventoryKeyWordList::getMotsClefId($utilisateur, 'obs', $obsKeywordDelete))InventoryKeyWordObsLink::unlinkKeyword($this->config, 'obs', explode(',', $id), $utilisateur, $kid);/* if($kid = InventoryKeyWordList::getMotsClefId($utilisateur, 'images', $imgKeywordDelete))InventoryKeyWordObsLink::unlinkKeyword($this->config, 'obs', explode(',', $id), $utilisateur, $kid); */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 Modifiedheader("Content-Type: text/plain; charset=utf-8");die("Not Modified");}else {http_response_code(500); // Internal Server Errorheader("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 Failedheader("Content-Type: text/plain; charset=utf-8");die(sprintf("Paramètre %s manquant (parmi %s)", $param, implode(', ', $params_obligatoires)));}}}