Rev 51 | Rev 322 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Service fournissant des données de la table contenant le référentiel de travail.* Encodage en entrée : utf8* Encodage en sortie : utf8** @category Php 5.2* @package Referentiel* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>* @copyright 2010 Tela-Botanica* @version $Id$*/class Referentiel extends Ref {/*** Méthode principale appelée avec une requête de type GET.*/public function getElement($params_url = array()) {// Initialisation des variables$info = array();// Nour recherchons le type de requête demandé$p = $this->traiterParametresUrl(array('type'), $params_url, false);extract($p);if (!is_null($type)) {$methode = 'getElement'.$type;if (method_exists($this, $methode)) {array_shift($params_url);$info = $this->$methode($params_url);} else {$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";}} else {$this->messages[] = "Veuillez préciser le type de requête.";}// Envoie sur la sortie standard$this->envoyer($info);}/* Méthode pour récupérer les infos sur les référentiels disponibles* Appelée avec les paramêtres d'url suivant :* /RefReferentiel/tout/code_du_referentiel*/public function getElementDispo($params_url) {$requete = 'SHOW TABLES ';$donnees = false;// Récupération des résultatstry {$tables = $this->bdd->query($requete)->fetchAll(PDO::FETCH_COLUMN, 0);if ($tables !== false) {foreach ($tables as $table) {if (preg_match('/^([a-z]+)_meta$/', $table, $match)) {$donnees[] = $match[1];}}} else {$this->messages[] = "La requête a retourné aucun résultat.";}} catch (PDOException $e) {$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());}return $donnees;}/* Méthode pour récupérer les noms d'un référentiel.* Appelée avec les paramêtres d'url suivant :* /Referentiel/tout/code_du_referentiel?start=0&limit=1000*/public function getElementTout($params_url) {$p = $this->traiterParametresUrl(array('projet'), $params_url, false);extract($p);$donnees = false;if (!is_null($projet)) {$requete = ($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '."FROM $projet ".'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'num_nom ASC').' '."LIMIT $this->start, $this->limit ";$this->debug[] = $requete;// Récupération des résultatstry {$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);if ($donnees === false) {$this->messages[] = "La requête a retourné aucun résultat.";} else {$donnees_tmp = $donnees;$donnees = array();foreach ($donnees_tmp as &$nom) {$donnees[$nom['num_nom']] = $nom;unset($nom);}}} catch (PDOException $e) {$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());}} else {$this->messages[] = "Veuillez préciser le nom de code du projet comme second paramêtre (ex. : bdnff).";}return $donnees;}/* Méthode pour récupérer le nombre de noms présents dans un référentiel.* Appelée avec les paramêtres d'url suivant :* /RefReferentiel/nombre/code_du_referentiel*/public function getElementNombre($params_url) {$p = $this->traiterParametresUrl(array('projet'), $params_url, false);extract($p);$nbre = false;if (!is_null($projet)) {$requete = 'SELECT COUNT(*) AS nbre '."FROM $projet ";// Récupération des résultatstry {$nbre = $this->bdd->query($requete)->fetchColumn();if ($nbre === false) {$this->messages[] = "La requête a retourné aucun résultat.";}} catch (PDOException $e) {$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());}} else {$this->messages[] = "Veuillez préciser le nom de code du projet comme second paramêtre (ex. : bdnff).";}return $nbre;}/* Méthode pour récupérer le titre d'un référentiel.* Appelée avec les paramêtres d'url suivant :* /RefReferentiel/nom/code_du_referentiel*/public function getElementNom($params_url) {$p = $this->traiterParametresUrl(array('projet'), $params_url, false);extract($p);$nom = false;if (!is_null($projet)) {$requete = "SELECT titre FROM {$projet}_meta WHERE id_meta = (SELECT MAX(id_meta) FROM {$projet}_meta);";// Récupération des résultatstry {$nom = $this->bdd->query($requete)->fetchColumn();if ($nom === false) {$this->messages[] = "La requête a retourné aucun résultat.";}} catch (PDOException $e) {$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());}} else {$this->messages[] = "Veuillez préciser le nom de code du projet comme second paramêtre (ex. : bdnff).";}return $nom;}}?>