723 |
gduche |
1 |
<?php
|
|
|
2 |
/**
|
|
|
3 |
* Gestion BDD permet l'appel à l'objet BDD du framework,
|
|
|
4 |
* gère les noms de table en fonction du schéma de la table
|
|
|
5 |
* ainsi que la limite SQL en fonction de l'objet Navigation
|
|
|
6 |
|
|
|
7 |
* @category php 5.2
|
|
|
8 |
* @package del
|
|
|
9 |
* @author Grégoire Duché <gregoire@tela-botanica.org>
|
|
|
10 |
* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
|
|
|
11 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
|
|
|
12 |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
|
|
|
13 |
* @version $Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
|
|
|
14 |
*/
|
|
|
15 |
class GestionBdd {
|
|
|
16 |
|
|
|
17 |
private $bdd;
|
|
|
18 |
private $schemaBdd;
|
|
|
19 |
private $navigation;
|
|
|
20 |
|
|
|
21 |
/**
|
|
|
22 |
* Constructeur de la classe GestionBdd
|
|
|
23 |
* @param Navigation $navigation l'objet navigation issu du Conteneur, et contenant les informations de départ et limite
|
|
|
24 |
* @param String $schemaBdd (optionnel) le schéma de la base issu du fichier de config
|
|
|
25 |
* @param Bdd $bdd (optionnel) un objet Bdd pour la connection à la base de données
|
|
|
26 |
* */
|
|
|
27 |
public function __construct($navigation, $schemaBdd = null, $bdd = null) {
|
|
|
28 |
if ($navigation == null) {
|
|
|
29 |
$message = 'L\'objet Navigation est nécessaire pour configurer l\'objet GestionBdd';
|
|
|
30 |
$code = RestServeur::HTTP_CODE_ERREUR;
|
|
|
31 |
throw new Exception($message, $code);
|
|
|
32 |
} else {
|
|
|
33 |
$this->navigation = $navigation;
|
|
|
34 |
$this->schemaBdd = $schemaBdd;
|
|
|
35 |
if ($bdd == null) {
|
|
|
36 |
$this->bdd = new Bdd();
|
|
|
37 |
} else {
|
|
|
38 |
$this->bdd = $bdd;
|
|
|
39 |
}
|
|
|
40 |
}
|
|
|
41 |
}
|
|
|
42 |
|
|
|
43 |
/**
|
|
|
44 |
* Créer la chaine de limite de requête en fonction des paramètres donnés
|
|
|
45 |
* */
|
|
|
46 |
public function getLimitSql() {
|
|
|
47 |
return ' LIMIT '.$this->navigation->getDepart().', '.$this->navigation->getLimite();
|
|
|
48 |
}
|
|
|
49 |
|
|
|
50 |
/**
|
|
|
51 |
* Récupérer l'objet Bdd ou le créer s'il n'existe pas
|
|
|
52 |
* @return Bdd l'objet Bdd
|
|
|
53 |
* */
|
|
|
54 |
public function getBdd() {
|
|
|
55 |
if (!isset($this->bdd)){
|
|
|
56 |
$this->bdd = new Bdd();
|
|
|
57 |
}
|
|
|
58 |
return $this->bdd;
|
|
|
59 |
}
|
|
|
60 |
|
|
|
61 |
/** Formater un nom de table avec le schéma de la base de données, s'il existe
|
|
|
62 |
* @param String $table le nom de la table
|
|
|
63 |
* @param String $as (optionnel) l'alias de la table
|
|
|
64 |
* @return String la chaine de caractère sous la forme "schema.nomtable as nt"
|
|
|
65 |
* */
|
|
|
66 |
public function formaterTable($table, $as = null) {
|
|
|
67 |
$chaineTable = $table;
|
|
|
68 |
if ($this->schemaBdd != null) {
|
|
|
69 |
$chaineTable = $this->schemaBdd.'.'.$table;
|
|
|
70 |
}
|
|
|
71 |
if ($as != null && $as != '') {
|
|
|
72 |
$chaineTable .= ' as '.$as;
|
|
|
73 |
}
|
|
|
74 |
return $chaineTable.' ';
|
|
|
75 |
}
|
|
|
76 |
|
|
|
77 |
/** Formater des noms de table avec le schéma de la base de données, s'il existe
|
|
|
78 |
* @param Array $tables un tableau à deux dimensions contenant le nom et l'alias de la table
|
|
|
79 |
* Ex : Array("nom" => "as", "table" => "")
|
|
|
80 |
* @return String la chaine de caractère sous la forme "schema.nomtable as nt, schema.nomtable2 as nt2"
|
|
|
81 |
* */
|
|
|
82 |
public function formaterTables($tables) {
|
|
|
83 |
$tablesFormatees = array();
|
|
|
84 |
foreach ($tables as $nom => $as) {
|
|
|
85 |
$tablesFormatees[] = $this->formaterTable($nom, $as);
|
|
|
86 |
}
|
|
|
87 |
|
|
|
88 |
return implode(',', $tablesFormatees);
|
|
|
89 |
}
|
|
|
90 |
}
|
|
|
91 |
?>
|