Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Gestion BDD permet l'appel à l'objet BDD du framework,* gère les noms de table en fonction du schéma de la table* ainsi que la limite SQL en fonction de l'objet Navigation* @category php 5.2* @package del* @author Grégoire Duché <gregoire@tela-botanica.org>* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)* @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: Bdd.php 403 2012-02-22 14:35:20Z gduche $*/class GestionBdd {private $bdd;private $schemaBdd;private $navigation;/*** Constructeur de la classe GestionBdd* @param Navigation $navigation l'objet navigation issu du Conteneur, et contenant les informations de départ et limite* @param String $schemaBdd (optionnel) le schéma de la base issu du fichier de config* @param Bdd $bdd (optionnel) un objet Bdd pour la connection à la base de données* */public function __construct($navigation, $schemaBdd = null, $bdd = null) {if ($navigation == null) {$message = 'L\'objet Navigation est nécessaire pour configurer l\'objet GestionBdd';$code = RestServeur::HTTP_CODE_ERREUR;throw new Exception($message, $code);} else {$this->navigation = $navigation;$this->schemaBdd = $schemaBdd;if ($bdd == null) {$this->bdd = new Bdd();} else {$this->bdd = $bdd;}}}/*** Créer la chaine de limite de requête en fonction des paramètres donnés* */public function getLimitSql() {return ' LIMIT '.$this->navigation->getDepart().', '.$this->navigation->getLimite();}/*** Récupérer l'objet Bdd ou le créer s'il n'existe pas* @return Bdd l'objet Bdd* */public function getBdd() {if (!isset($this->bdd)){$this->bdd = new Bdd();}return $this->bdd;}/** Formater un nom de table avec le schéma de la base de données, s'il existe* @param String $table le nom de la table* @param String $as (optionnel) l'alias de la table* @return String la chaine de caractère sous la forme "schema.nomtable as nt"* */public function formaterTable($table, $as = null) {$chaineTable = $table;if ($this->schemaBdd != null) {$chaineTable = $this->schemaBdd.'.'.$table;}if ($as != null && $as != '') {$chaineTable .= ' as '.$as;}return $chaineTable.' ';}/** Formater des noms de table avec le schéma de la base de données, s'il existe* @param Array $tables un tableau à deux dimensions contenant le nom et l'alias de la table* Ex : Array("nom" => "as", "table" => "")* @return String la chaine de caractère sous la forme "schema.nomtable as nt, schema.nomtable2 as nt2"* */public function formaterTables($tables) {$tablesFormatees = array();foreach ($tables as $nom => $as) {$tablesFormatees[] = $this->formaterTable($nom, $as);}return implode(',', $tablesFormatees);}}?>