* @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; } } ?>