Subversion Repositories eFlore/Applications.cel

Rev

Rev 1571 | Rev 1631 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
/**
* PHP Version 5
*
* @category  PHP
* @package   jrest
* @author    Aurelien Peronnet <aurelien@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version   SVN: <svn_id>
* @link      /doc/jrest/
*/

/**
* InventoryObservationList.php
* 
* in=utf8
* out=utf8
*
* Cas d'utilisation :
* 1: 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
* 
* 2: 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
* 
* 3: 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
*/
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
         */ 
        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);
                $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
         */ 
        function updateElement($uid,$pairs) {

                // Controle detournement utilisateur
                $this->controleUtilisateur($uid[0]);
                
                if (!isset($uid[1])) {
                        //TODO: envoyer un message d'erreur
                        return; 
                }
                
                $uid[1] = rtrim($uid[1],',');
                
                $gestionnaire_observation = new GestionObservation($this->config);
                $modification_observation = $gestionnaire_observation->modifierObservation($uid[0],$uid[1],$pairs);     
         
        return true;
        }

        /**
        * Supprime une liste d'observations
        * 
        * uid[0] : utilisateur obligatoire
        * uid[1] : ordres des observations à supprimer séparés par des virgules
        */ 
        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],',');
                
                $gestionnaire_observation = new GestionObservation($this->config);
                $tableau_ordres = explode(',', $uid[1]);
                foreach($tableau_ordres as $ordre) {
                        $ids_obs[] = $gestionnaire_observation->renvoyerIdPourOrdre($uid[0], $ordre);
                }
                
                $suppression_observations = $gestionnaire_observation->supprimerObservation($uid[0],$uid[1]);   
                
                $gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
                $champs_supp = $gestion_champs_etendus->viderParLots($ids_obs);
                
                if ($suppression_observations) {
                        echo "OK";      
                }
                
        exit() ;
        }
}
?>