Subversion Repositories Applications.referentiel

Rev

Rev 67 | Rev 322 | Go to most recent revision | 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;
        }
        
        /**
         * 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;
        }
}
?>