Subversion Repositories Applications.referentiel

Rev

Rev 344 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// declare(encoding='UTF-8');
/**
 * Modèle d'accès à la base de données des Référentiels.
 * Permet d'accèder au données des référentiels.
 *
 * @package             Referentiel
 * @category    Php 5.2
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @copyright   2010 Tela-Botanica
 * @license             http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
 * @license             http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
 * @version             SVN: $Id$
 *
 */
class ReferentielDao extends Dao {
        const SERVICE = 'Referentiel';
        const SERVICE_ARCHIVAGE = 'ArchiverReferentiel';

        /**
         * Retourne des infos sur l'ensemble des référentiels disponibles.
         * 
         * @return array un tableau contenant les informations sur les référentiels disponibles.
         */
        public function getReferentielsDispo() {
                $url = $this->url_jrest.self::SERVICE."/Dispo";
                $json = $this->envoyerRequeteConsultation($url);
                $noms = json_decode($json, true);
                return $noms;
        }
        
        /**
         * Retourne l'ensemble des information sur les noms d'un référentiel.
         * 
         * @param string le code du référentiel.
         * @return array un tableau contenant les informations sur les noms du référentiel.
         */
        public function getTout($code_projet) {
                $url = $this->url_jrest.self::SERVICE."/Tout/$code_projet";
                $nbre = $this->getNombre($code_projet);
                $noms = array();
                $pas = 5000;
                for ($i = 0; $i < $nbre ; $i += $pas) {
                        $this->setLimitation($i, $pas);
                        $json = $this->envoyerRequeteConsultation($url);
                        $noms_partiel = json_decode($json, true);
                        Tableau::etendre($noms, $noms_partiel);
                }
                return $noms;
        }
        
        /**
         * Retourne le nombre de noms présents dans la table de travail du référentiel.
         * 
         * @param string le code du référentiel.
         * @return int le nombre de noms.
         */
        public function getNombre($code_projet) {
                $url = $this->url_jrest.self::SERVICE."/Nombre/$code_projet";
                $json = $this->envoyerRequeteConsultation($url);
                $nbre = json_decode($json, true);
                return $nbre;
        }
        
        /**
         * Retourne le titre du projet dans la table des meta-données du référentiel.
         * 
         * @param string le code du référentiel.
         * @return int le nombre de noms.
         */
        public function getNom($code_projet) {
                $url = $this->url_jrest.self::SERVICE."/Nom/$code_projet";
                $json = $this->envoyerRequeteConsultation($url);
                $nbre = json_decode($json, true);
                return $nbre;
        }
        
        /**
         * Retourne la date de mise à jour dans la table des meta-données du référentiel.
         *
         * @param string le code du référentiel.
         * @return int le nombre de noms.
         */
        public function getDateMiseAJour($code_projet) {
                $url = $this->url_jrest.self::SERVICE."/DateMiseAJour/$code_projet";
                $json = $this->envoyerRequeteConsultation($url);
                $nbre = json_decode($json, true);
                return $nbre;
        }
        
        /**
         * Copie la table de travail du référentiel pour l'archiver avec une numéro de version.
         * 
         * @param string le code du référentiel.
         * @param string la version du référentiel.
         * @return bool true en cas de succé ou false en cas d'échec.
         */
        public function archiver($code_projet, $version) {
                $url = $this->url_jrest.self::SERVICE_ARCHIVAGE;
                // Préparation des données à passer par POST
                $donnees['code'] = $code_projet;
                $donnees['version'] = $version;
                
                // Envoie des données et récupération du retour
                $json = $this->envoyerRequeteAjout($url, $donnees);
                $ok = json_decode($json, true);
                return $ok;
        }
        
        /**
        * Créer un fichier csv d'export d'une version d'un ref en sélectionnant les champs et filtrant en fonction de paramètres
        * @return l'url de stockage
        */
        public function exporter($parametres) {
                $this->ordre['nom_sci'] = 'ASC';
                $url = $this->construireUrlExport($parametres);
                $json = $this->envoyerRequeteConsultation($url);
                $donnees = json_decode($json, true);
                return $donnees;
        }
        
        private function construireUrlExport($parametres) {
                $url = $this->url_jrest.self::SERVICE.'/Export';
        
                $params_a_passer = array('ref', 'version', 'champs', 'filtres', 'encodage');
                foreach ($params_a_passer as $param_cle) {
                        if (isset($parametres[$param_cle]) && $parametres[$param_cle] != '') {
                                $valeur = urlencode(trim($parametres[$param_cle]));
                                $url .= '/'.$valeur;
                        } else {
                                $url .= '/*';
                        }
                }
                return $url;
        }
        
        /**
        * Modifie un référentiel pour ajouter une colonne famille
        * @param integer l'id du traitement
        * @return boolean true en cas de succés sinon false.
        */
        public function preparerTablePrChpFamille($referentiel) {
                $url = $this->url_jrest.self::SERVICE.'/TablePrChpFamille/'.$referentiel;
                $json = $this->envoyerRequeteConsultation($url);
                $donnees = json_decode($json, true);
                return $donnees;
                /*$donnees['referentiel'] = $referentiel;
                $donnees['action'] = 'TablePrChpFamille';
        
                // Envoie des données et récupération du retour
                $json = $this->envoyerRequeteModif($url, $donnees);
                $ok = json_decode($json, true);
                return $ok;*/
        }
        
        public function remplirChpFamille($referentiel, $noms) {
                $url = $this->url_jrest.self::SERVICE.'/ChpFamille/';
                $donnees['referentiel'] = $referentiel;
                $donnees['noms'] = $noms;
        
                // Envoie des données et récupération du retour
                $json = $this->envoyerRequeteModif($url, $donnees);
                $ok = json_decode($json, true);
                return $ok;
        }
        
        
}
?>