Rev 2470 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Cas d'utilisation :* GET : Service recherche d'observations a partir de divers critères* a: Le service recherche les observations correspondant aux critères demandés* b: Le service renvoie la liste des observations correspondantes** POST : Service modification en masse d'observations* a: Le service recherche les observations correspondant aux identifiants donnés* b: Le service modifie les observations correspondantes avec les infos données en paramètres** DELETE : Service de suppression d'observations en masse* a: Le service recherche les observations correspondant aux critères demandés* b: Le service supprime la liste des observations correspondantes** @internal Mininum PHP version : 5.2* @category CEL* @package Services* @subpackage Mots-clés* @version 0.1* @author Mathias CHOUET <mathias@tela-botanica.org>* @author Raphaël Droz <raphael@tela-botanica.org>* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @author Aurelien PERONNET <aurelien@tela-botanica.org>* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>*/class InventoryObservationList extends Cel {/*** Renvoie les observations correspondant au critères de filtrage** uid[0] : utilisateur obligatoire* uid[1] : criteres de filtrage de la forme critere1=valeur1&critere2=valeur2*/public function getElement($uid) {// Controle detournement utilisateur$this->controleUtilisateur($uid[0]);$chercheur_observations = new RechercheObservation($this->config);$numero_page = 0;$taille_page = 50;$criteres = array();$criteres = $_GET ;if (isset($criteres['numero_page']) && isset($criteres['limite'])) {$numero_page = $criteres['numero_page'];unset($criteres['numero_page']);$taille_page = $criteres['limite'];unset($criteres['limite']);}$debut = $taille_page*$numero_page ;$retour = $chercheur_observations->rechercherObservations($uid[0], $criteres, $debut, $taille_page)->get();$retour_formate = $chercheur_observations->formaterPourEnvoiCel($retour);$this->envoyerJson($retour_formate);return true;}/*** met à jour les métadonnées d'une liste d'observations** uid[0] : utilisateur obligatoire* uid[1] : ordres des observations à modifier séparés par des virgules* pairs : données à mettre à jour sous la forme de clés => valeurs*/public function updateElement($uid,$pairs) {// Controle detournement utilisateur$this->controleUtilisateur($uid[0]);if (!isset($uid[1])) {//TODO: envoyer un message d'erreurreturn;}$obs = array_filter(explode(',', $uid[1]), 'is_numeric');if (count($obs) == 0) {return;}$gestionnaire_observation = new GestionObservation($this->config);if (count($obs) == 1) {return $gestionnaire_observation->modifierObservation($uid[0], $obs[0], $pairs);}// cas de mise à jour de multiples observations:$ret = GestionObservation::modifierMultiplesObservation($uid[0], $obs, $pairs);if ($ret === false) {return false; // JRest::badRequest();}if ($ret === 0) {header('HTTP/1.0 304 Not Modified');} else {header('HTTP/1.0 200 OK'); // et non pas une 201 !}die();}/*** Supprime une liste d'observations** uid[0] : utilisateur obligatoire* uid[1] : ordres des observations à supprimer séparés par des virgules*/public function deleteElement($uid) {// Controle detournement utilisateur$this->controleUtilisateur($uid[0]);if (!isset($uid[1])) {//TODO: envoyer un message d'erreurreturn;}$uid[1] = rtrim($uid[1], ',');$gestionnaireObs = new GestionObservation($this->config);$tableau_ordres = explode(',', $uid[1]);foreach ($tableau_ordres as $ordre) {$ids_obs[] = $gestionnaireObs->renvoyerIdPourOrdre($uid[0], $ordre);}$suppression_observations = $gestionnaireObs->supprimerObservation($uid[0], $uid[1]);$gestionnaireChampsEtendus = new GestionChampsEtendus($this->config, 'obs');$gestionnaireChampsEtendus->viderParLots($ids_obs);$gestionnaire_images = new GestionImage($this->config);$gestionnaire_images->modifierTransmissionParObs($ids_obs, false);if ($suppression_observations) {echo 'OK';}exit() ;}}