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