Subversion Repositories eFlore/Applications.cel

Rev

Rev 1502 | Go to most recent revision | Blame | 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)));
                }
        }
}