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