Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 722 → Rev 723

/trunk/services/bibliotheque/GestionBdd.php
New file
0,0 → 1,91
<?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);
}
}
?>