/branches/v2.0-betulales/bibliotheque/dao/RechercheDao.php |
---|
New file |
0,0 → 1,58 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Modèle d'accès à la base de données des Référentiels. |
* Permet d'accèder au méta-données des référentiels. |
* |
* @package Referentiel |
* @category Php 5.2 |
* @author Delphine CAUQUIL <delphine@tela-botanica.org> |
* @author aurelien <aurelien@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 RechercheDao extends Dao { |
const SERVICE = 'Recherche'; |
/** |
* Recherche un référentiel en fonction de paramètres |
* @return le nombre de résultats répondant à la requête |
*/ |
public function chercherStructureNbre($type, $parametres) { |
$url = $this->construireUrlRecherche($type, $parametres, false); |
$json = $this->envoyerRequeteConsultation($url); |
$donnees = json_decode($json); |
return $donnees; |
} |
/** |
* Recherche un référentiel en fonction de paramètres |
* @return array un tableau contenant des objets d'informations sur les taxons |
*/ |
public function chercher($type, $parametres) { |
$this->ordre['nom_sci'] = 'ASC'; |
$url = $this->construireUrlRecherche($type, $parametres); |
$json = $this->envoyerRequeteConsultation($url); |
$donnees = json_decode($json, true); |
return $donnees; |
} |
private function construireUrlRecherche($type, $parametres, $limitation = true) { |
$url = $this->url_jrest.self::SERVICE.'/'.$type; |
$params_a_passer = array('ref', 'mots', 'sg', 'gen', 'sp', 'ssp', 'au', 'an', 'nn', 'bib', 'nr', 'tax', 'pre', 'taxref', 'classif', 'rg'); |
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; |
} |
} |
?> |
/branches/v2.0-betulales/bibliotheque/dao/TableStructureDao.php |
---|
New file |
0,0 → 1,45 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Modèle d'accès à la base de données des Référentiels. |
* Service concernant les tests |
* |
* @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 TableStructureDao extends Dao { |
const SERVICE = 'TableStructure'; |
/** |
* Retourne l'ensemble des information sur les colonnes d'une table. |
* |
* @param string le nom de la table. |
* @return array un tableau contenant les informations sur les colonnes de la table. |
*/ |
public function getColonnes($table) { |
$url = $this->url_jrest.self::SERVICE."/colonnes/$table"; |
$json = file_get_contents($url); |
$donnees = json_decode($json, true); |
return $donnees['colonnes']; |
} |
/** |
* Retourne l'ensemble des information d'analyse de la structure d'une table. |
* |
* @param string le nom de la table. |
* @return array un tableau contenant les informations de l'analyse de la table. |
*/ |
public function getAnalyse($table) { |
$url = $this->url_jrest.self::SERVICE."/analyse/$table"; |
$json = file_get_contents($url); |
$donnees = json_decode($json, true); |
return $donnees['analyses']; |
} |
} |
?> |
/branches/v2.0-betulales/bibliotheque/dao/TaxonDao.php |
---|
New file |
0,0 → 1,76 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* DAO des Taxons pour le module Taxons. |
* |
* @package Taxon |
* @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: TaxonDao.php 151 2010-09-06 16:03:09Z jpm $ |
* |
*/ |
class TaxonDao extends Dao { |
const SERVICE = 'FicheTaxon'; |
/** |
* Retourne l'ensemble des information sur un taxon. |
* |
* @param integer le numéro du taxon. |
* @return array un tableau contenant les informations sur la taxon. |
*/ |
public function getTaxon($ref, $id) { |
$url = $this->url_jrest.self::SERVICE."/Taxon/$ref/$id"; |
$json = $this->envoyerRequeteConsultation($url); |
$donnees = json_decode($json, true); |
return $donnees[0]; |
} |
// Nomanclature |
public function getNomenclature($ref, $id) { |
$url = $this->url_jrest.self::SERVICE."/Nomenclature/$ref/$id"; |
$json = $this->envoyerRequeteConsultation($url); |
$resultats = json_decode($json, true); |
return $resultats[0]; |
} |
public function getParentsHybride($ref, $id) { |
$url = $this->url_jrest.self::SERVICE."/ParentsHybride/$ref/$id"; |
$json = $this->envoyerRequeteConsultation($url); |
$parents = json_decode($json, true); |
return $parents[0]; |
} |
//Synonymie |
public function getTaxonAffichage($ref, $id) { |
$url = $this->url_jrest.self::SERVICE."/TaxonAffichage/$ref/$id"; |
$json = $this->envoyerRequeteConsultation($url); |
$donnees = json_decode($json, true); |
return $donnees[0]; |
} |
public function getHomonyme($ref, $nom) { |
$url = $this->url_jrest.self::SERVICE."/Homonyme/$ref/$nom"; |
$json = $this->envoyerRequeteConsultation($url); |
$donnees = json_decode($json, true); |
return $donnees; |
} |
public function getNomsBasionymeCommun($ref, $basionyme) { |
$url = $this->url_jrest.self::SERVICE."/Basionyme/$ref/$basionyme"; |
$json = $this->envoyerRequeteConsultation($url); |
$donnees = json_decode($json, true); |
return $donnees; |
} |
//Classification |
public function getClassification($type, $ref, $id) { |
$url = $this->url_jrest.self::SERVICE."/Taxon$type/$ref/$id"; |
$json = $this->envoyerRequeteConsultation($url); |
$donnees = json_decode($json, true); |
return $donnees; |
} |
} |
?> |
/branches/v2.0-betulales/bibliotheque/dao/TraitementDao.php |
---|
New file |
0,0 → 1,193 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* DAO des traitements à réaliser sur les 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 $Id$ |
* |
*/ |
class TraitementDao extends Dao { |
const SERVICE = 'Traitement'; |
private $url = null; |
public function __construct() { |
parent::__construct(); |
$this->url = $this->url_jrest.self::SERVICE; |
} |
/** |
* Retourne les infos d'un traitement enregistré dans la bdd pour un id donné. |
* |
* @param integer l'id du traitement. |
* @return array le tableau d'infos ou false en cas d'échec. |
*/ |
public function getInfos($id_traitement) { |
$url = $this->url."/Info/$id_traitement"; |
$json = $this->envoyerRequeteConsultation($url); |
$infos = json_decode($json, true); |
return $infos; |
} |
/** |
* Retourne l'ensemble des traitements en attente. |
* |
* @param string le code du projet de référentiel. |
* @param string le nom du script à lancer en minuscule. |
* @return mixed un tableau contenant les informations sur les traitements en attente ou false en cas d'échec. |
*/ |
public function getTraitementsEnAttente($code_projet, $script) { |
$url = $this->url."/EnAttente/$code_projet/$script"; |
$json = $this->envoyerRequeteConsultation($url); |
$traitements = json_decode($json, true); |
return $traitements; |
} |
/** |
* Retourne l'ensemble des traitements en cours. |
* |
* @param string le code du projet de référentiel. |
* @param string le nom du script à lancer en minuscule. |
* @return mixed un tableau contenant les informations sur les traitements en cours ou false en cas d'échec. |
*/ |
public function getTraitementsEnCours($code_projet, $script) { |
$url = $this->url."/EnCours/$code_projet/$script"; |
$json = $this->envoyerRequeteConsultation($url); |
$traitements = json_decode($json, true); |
return $traitements; |
} |
/** |
* Retourne les ids de l'ensemble des traitements obsolètes. |
* |
* @param string le code du projet de référentiel. |
* @param string le nom du script à lancer en minuscule. |
* @return mixed un tableau contenant les ids des traitements obsolètes ou false en cas d'échec. |
*/ |
public function getTraitementsObsoletes($code_projet, $script) { |
$url = $this->url."/Obsolete/$code_projet/$script"; |
$json = $this->envoyerRequeteConsultation($url); |
$traitements = json_decode($json, true); |
return $traitements; |
} |
/** |
* Retourne le dernier traitement demandé et non traité pour un projet donné. |
* |
* @param string le code du projet de référentiel. |
* @param string le nom du script à lancer en minuscule. |
* @return mixed un tableau contenant les informations sur le dernier traitement demandé et non traité ou false en cas d'échec. |
*/ |
public function getDernierTraitement($code_projet, $script) { |
$url = $this->url."/DerniereDemande/$code_projet/$script"; |
$json = $this->envoyerRequeteConsultation($url); |
$traitements = json_decode($json, true); |
return $traitements; |
} |
/** |
* Retourne l'ensemble des traitements terminés. |
* |
* @param string le code du projet de référentiel. |
* @param string le nom du script à lancer en minuscule. |
* @return mixed un tableau contenant les informations sur les traitements terminés ou false en cas d'échec. |
*/ |
public function getTraitementsTermines($code_projet, $script) { |
$url = $this->url."/Termines/$code_projet/$script"; |
$json = $this->envoyerRequeteConsultation($url); |
$traitements = json_decode($json, true); |
return $traitements; |
} |
/** |
* Ajoute une demande de traitement pour une référentiel donné. |
* |
* @param string le code du référentiel. |
* @param string le nom du script à lancer en minuscule. |
* @return mixed l'id du traitement ou false en cas d'échec. |
*/ |
public function ajouterTraitement($code_projet, $script) { |
return $this->ajouterTraitementParametre($code_projet, null, $script); |
} |
/** |
* Ajoute une demande de traitement pour une référentiel donné |
* en passant des paramêtres au script. |
* |
* @param string le code du référentiel. |
* @param string les données serialisées. |
* @param string le nom du script à lancer en minuscule. |
* @return mixed l'id du traitement ou false en cas d'échec. |
*/ |
public function ajouterTraitementParametre($code_projet, $parametres, $script) { |
// Préparation des données à passer par POST |
$donnees['referentiel_code'] = $code_projet; |
$donnees['script'] = $script; |
$donnees['script_parametres'] = (isset($parametres)) ? $parametres : null; |
// Envoie des données et récupération du retour |
$json = $this->envoyerRequeteAjout($this->url, $donnees); |
$id = json_decode($json, true); |
return $id; |
} |
/** |
* Modifie un traitement pour indiquer qu'il est débuté. |
* |
* @param integer l'id du traitement |
* @return boolean true en cas de succés sinon false. |
*/ |
public function debuterTraitement($id_traitement) { |
$url = $this->url."/$id_traitement"; |
$donnees['action'] = 'Debuter'; |
// Envoie des données et récupération du retour |
$json = $this->envoyerRequeteModif($url, $donnees); |
$ok = json_decode($json, true); |
return $ok; |
} |
/** |
* Modifie un traitement pour indiquer qu'il est terminé. |
* |
* @param integer l'id du traitement |
* @return boolean true en cas de succés sinon false. |
*/ |
public function terminerTraitement($id_traitement) { |
$url = $this->url."/$id_traitement"; |
$donnees['action'] = 'Terminer'; |
// Envoie des données et récupération du retour |
$json = $this->envoyerRequeteModif($url, $donnees); |
$ok = json_decode($json, true); |
return $ok; |
} |
/** |
* Supprime des traitments en fonction de leur id. |
* |
* @param array le tableau des id des traitements à supprimer |
* @return boolean true en cas de succès ou false en cas d'échec. |
*/ |
public function supprimer(Array $ids) { |
// Préparation de l'url |
$url = $this->url.'/'.implode(',', $ids); |
// Envoie des données et récupération du retour |
$json = $this->envoyerRequeteSuppression($url); |
$ok = json_decode($json, true); |
return $ok; |
} |
} |
?> |
/branches/v2.0-betulales/bibliotheque/dao/Dao.php |
---|
New file |
0,0 → 1,217 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe modèle spécifique à l'application, donc d'accés au données, elle ne devrait pas être appelée de l'extérieur. |
* Elle est abstraite donc doit obligatoirement être étendue. |
* |
* @category Php5 |
* @package Referentiel |
* @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$ |
*/ |
abstract class Dao { |
const ORDRE_ASCENDANT = 'ASC'; |
const ORDRE_DESCENDANT = 'DESC'; |
const HTTP_REQUETE_SEPARATEUR = '&'; |
protected $distinction = '0'; |
protected $limite_debut = null; |
protected $limite_nbre = null; |
protected $ordre = null; |
protected $url_jrest = null; |
public function __construct() { |
$this->url_jrest = Config::get('url_jrest'); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// ACCESSEURS |
public function setDistinction($distinct) { |
$this->distinction = $distinct; |
} |
public function getDistinction() { |
return $this->distinction; |
} |
public function viderDistinction() { |
$this->distinction = null; |
} |
public function avoirLimitation() { |
$limitation = false; |
if (!is_null($this->limite_debut) && !is_null($this->limite_nbre)) { |
$limitation = true; |
} |
return $limitation; |
} |
public function setLimitation($limite_debut, $limite_nbre) { |
$this->limite_debut = $limite_debut; |
$this->limite_nbre = $limite_nbre; |
} |
public function getLimiteDebut() { |
return $this->limite_debut; |
} |
public function getLimiteNbre() { |
return $this->limite_nbre; |
} |
public function viderLimite() { |
$this->limite_debut = null; |
$this->limite_nbre = null; |
} |
public function addOrdre($champ, $trie = self::ORDRE_ASCENDANT) { |
if (!isset($this->ordre[$champ])) { |
if (self::ORDRE_ASCENDANT == $trie || self::ORDRE_DESCENDANT == $trie) { |
$this->ordre[$champ] = $trie; |
} else { |
$e = "La valeur pour le trie doit être : {self::ORDRE_ASCENDANT} ou {self::ORDRE_DESCENDANT}."; |
trigger_error($e, E_USER_WARNING); |
} |
} else { |
$e = "Le champ $champ existe déjà dans le tableau des ordres."; |
trigger_error($e, E_USER_WARNING); |
} |
} |
public function getOrdre() { |
$champs = array(); |
foreach ($this->ordre as $champ => $trie) { |
$champs[] = "$champ $trie"; |
} |
return implode(', ', $champs); |
} |
public function viderOrdre() { |
$this->ordre = null; |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// MÉTHODES |
protected function envoyerRequeteConsultation($url) { |
$url = $this->traiterUrlParametres($url); |
$retour = $this->envoyerRequete($url, 'GET'); |
return $retour; |
} |
protected function envoyerRequeteAjout($url, Array $donnees) { |
$retour = $this->envoyerRequete($url, 'PUT', $donnees); |
return $retour; |
} |
protected function envoyerRequeteModif($url, Array $donnees) { |
$retour = $this->envoyerRequete($url, 'POST', $donnees); |
return $retour; |
} |
protected function envoyerRequeteSuppression($url) { |
$retour = $this->envoyerRequete($url, 'DELETE'); |
return $retour; |
} |
private function envoyerRequete($url, $mode, Array $donnees = array()) { |
$contenu = false; |
if ($mode != 'GET' && $mode != 'PUT' && $mode != 'POST' && $mode != 'DELETE') { |
$e = "Le mode de requête '$mode' n'est pas accepté!"; |
trigger_error($e, E_USER_WARNING); |
} else { |
$contexte = stream_context_create(array( |
'http' => array( |
'method' => $mode, |
'header' => "Content-type: application/x-www-form-urlencoded\r\n", |
'content' => http_build_query($donnees, null, self::HTTP_REQUETE_SEPARATEUR)))); |
$flux = @fopen($url, 'r', false, $contexte); |
if (!$flux) { |
$this->traiterEntete($http_response_header, $url); |
$e = "L'ouverture de l'url '$url' par la méthode HTTP '$mode' a échoué!"; |
trigger_error($e, E_USER_WARNING); |
} else { |
// Informations sur les en-têtes et métadonnées du flux |
$entetes = stream_get_meta_data($flux); |
$this->traiterEntete($entetes, $url); |
// Contenu actuel de $url |
$contenu = stream_get_contents($flux); |
fclose($flux); |
} |
} |
$this->reinitialiser(); |
return $contenu; |
} |
private function traiterUrlParametres($url) { |
$parametres = array(); |
if (! is_null($this->getLimiteDebut())) { |
$parametres[] = 'start='.$this->getLimiteDebut(); |
} |
if (! is_null($this->getLimiteNbre())) { |
$parametres[] = 'limit='.$this->getLimiteNbre(); |
} |
if (! is_null($this->ordre)) { |
$parametres[] = 'orderby='.urlencode($this->getOrdre()); |
} |
if ($this->getDistinction() != 0) { |
$parametres[] = 'distinct='.$this->getDistinction(); |
} |
if (count($parametres) > 0) { |
$url_parametres = implode('&', $parametres); |
$url = $url.'?'.$url_parametres; |
} |
return $url; |
} |
private function traiterEntete($entetes, $uri) { |
$infos = $this->analyserEntete($entetes, $uri); |
$this->traiterEnteteDebug($infos); |
$this->traiterEnteteMessage($infos); |
} |
private function analyserEntete($entetes, $uri) { |
$infos = array('date' => null, 'uri' => $uri, 'debugs' => null, 'messages' => null); |
if (isset($entetes['wrapper_data'])) { |
$entetes = $entetes['wrapper_data']; |
} |
foreach ($entetes as $entete) { |
if (preg_match('/^X-DebugJrest-Data: (.+)$/', $entete, $match)) { |
$infos['debugs'] = json_decode($match[1]); |
} |
if (preg_match('/^X-MessageJrest-Data: (.+)$/', $entete, $match)) { |
$infos['messages'] = json_decode($match[1]); |
} |
if (preg_match('/^Date: .+ ([012][0-9]:[012345][0-9]:[012345][0-9]) .*$/', $entete, $match)) { |
$infos['date'] = $match[1]; |
} |
} |
return $infos; |
} |
private function traiterEnteteDebug($entetes) { |
if (isset($entetes['debugs'])) { |
$date = $entetes['date']; |
$uri = $entetes['uri']; |
$debugs = $entetes['debugs']; |
foreach ($debugs as $debug) { |
Debug::printr("DEBUG : $date - $uri :\n$debug"); |
} |
} |
} |
private function traiterEnteteMessage($entetes) { |
if (isset($entetes['messages'])) { |
$date = $entetes['date']; |
$uri = $entetes['uri']; |
$messages = $entetes['messages']; |
foreach ($messages as $message) { |
Debug::printr("MESSAGE : $date - $uri :\n$message"); |
} |
} |
} |
private function reinitialiser() { |
$this->viderDistinction(); |
$this->viderLimite(); |
$this->viderOrdre(); |
} |
} |
/branches/v2.0-betulales/bibliotheque/dao/ResultatDao.php |
---|
New file |
0,0 → 1,88 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* DAO des résultats des traitements. |
* |
* @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 $Id$ |
* |
*/ |
class ResultatDao extends Dao { |
const SERVICE = 'Resultat'; |
private $url = null; |
public function __construct() { |
parent::__construct(); |
$this->url = $this->url_jrest.self::SERVICE; |
} |
/** |
* Retourne les infos d'un résultat enregistré dans la bdd pour un traitement donné. |
* |
* @param integer l'id du résultat. |
* @return array le tableau d'infos ou false en cas d'échec. |
*/ |
public function getInfos($id_resultat) { |
$url = $this->url."/Info/$id_resultat"; |
$json = $this->envoyerRequeteConsultation($url); |
$infos = json_decode($json, true); |
return $infos; |
} |
/** |
* Retourne des infos partielles des résultats (id, nom, resultat) d'un traitement donné. |
* |
* @param integer l'id du traitement. |
* @return mixed le tableau de tableau d'infos ou false en cas d'échec. |
*/ |
public function getResultatsTraitement($id_traitement) { |
$url = $this->url."/Traitement/$id_traitement"; |
$json = $this->envoyerRequeteConsultation($url); |
$infos = json_decode($json, true); |
return $infos; |
} |
/** |
* Retourne le nombre de résultat enregistré dans la bdd pour un traitement donné. |
* |
* @param integer l'id du traitement. |
* @return mixed le nombre de résultat ou false en cas d'échec. |
*/ |
public function getNombre($id_traitement) { |
$url = $this->url."/Nombre/$id_traitement"; |
$json = $this->envoyerRequeteConsultation($url); |
$traitements = json_decode($json, true); |
return $traitements; |
} |
/** |
* Ajoute un résultat de traitement pour une référentiel donné. |
* |
* @param integer l'id du traitement en cours. |
* @param array un tableau contenant les clés 'nom', 'message', 'description' et 'resultat'. |
* |
* @return mixed l'id du résultat ou false en cas d'échec. |
*/ |
public function ajouter($id_traitement, Array $resultat) { |
// Préparation des données à passer par POST |
$donnees = $resultat; |
$donnees['id_traitement'] = $id_traitement; |
// Envoie des données et récupération du retour |
$json = $this->envoyerRequeteAjout($this->url, $donnees); |
$id = json_decode($json, true); |
return $id; |
} |
} |
?> |
/branches/v2.0-betulales/bibliotheque/dao/ReferentielDao.php |
---|
New file |
0,0 → 1,169 |
<?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'); |
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; |
} |
} |
?> |
/branches/v2.0-betulales/bibliotheque/dao/MetaDao.php |
---|
New file |
0,0 → 1,56 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Modèle d'accès à la base de données des Référentiels. |
* Permet d'accèder au méta-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 MetaDao extends Dao { |
const SERVICE = 'Meta'; |
/** |
* Retourne les dernières méta-données pour un projet donné. |
* |
* @param string le code du projet de référentiel. |
* @return mixed un tableau contenant les informations sur les dernières méta-données ou false en cas d'échec. |
*/ |
public function getDerniere($code_projet) { |
$url = $this->url_jrest.self::SERVICE."/Derniere/$code_projet"; |
$json = $this->envoyerRequeteConsultation($url); |
$traitements = json_decode($json, true); |
return $traitements; |
} |
/** |
* Ajoute des méta-données pour une référentiel donné. |
* |
* @param array les méta-données dans un tableau dont les clés correspondent aux champs de la table. |
* @return mixed l'id du traitement ou false en cas d'échec. |
*/ |
public function ajouter($metadonnees) { |
$url = $this->url_jrest.self::SERVICE; |
$json = $this->envoyerRequeteAjout($url, $metadonnees); |
$id = json_decode($json, true); |
return $id; |
} |
/** |
* Créer un fichier csv d'export d'une version de métadonnées |
*/ |
public function exporter($parametres) { |
$url = $this->url_jrest.self::SERVICE.'/Export/'.$parametres["ref"]."/".$parametres["version"]; |
$json = $this->envoyerRequeteConsultation($url); |
$fichier = json_decode($json, true); |
return $fichier; |
} |
} |