* @author Raphaël Droz * @author Jean-Pascal MILCENT * @author Aurelien PERONNET * @license GPL v3 * @license CECILL v2 * @copyright 1999-2014 Tela Botanica */ 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'erreur return; } $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'erreur return; } $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() ; } }