1 |
nhaye |
544 |
<?php |
2 |
|
|
/** |
3 |
|
|
* Ce fichier est destine a permettre la surcharge de certaines methodes de |
4 |
|
|
* la classe om_dbform pour des besoins specifiques de l'application, |
5 |
|
|
* elle permet de requeter pour l'affichage en visualisation sur plusieurs table |
6 |
|
|
* car inclue le script .form.php correspondant a la classe |
7 |
|
|
* |
8 |
|
|
* @package openmairie_exemple |
9 |
|
|
* @version SVN : $Id: om_dbform.class.php 516 2012-10-17 17:13:43Z mlimic $ |
10 |
|
|
*/ |
11 |
|
|
|
12 |
|
|
/** |
13 |
|
|
* |
14 |
|
|
*/ |
15 |
|
|
require_once ("../obj/om_dbform.class.php"); |
16 |
|
|
/** |
17 |
|
|
* |
18 |
|
|
*/ |
19 |
|
|
require_once "om_formulaire.class.php"; |
20 |
|
|
|
21 |
|
|
/** |
22 |
|
|
* |
23 |
|
|
*/ |
24 |
nhaye |
684 |
class virtual_dbform extends om_dbForm { |
25 |
nhaye |
544 |
|
26 |
|
|
/** |
27 |
|
|
* |
28 |
|
|
*/ |
29 |
|
|
var $om_formulaire = "om_formulaire"; |
30 |
|
|
|
31 |
|
|
|
32 |
|
|
|
33 |
|
|
/** |
34 |
|
|
* Constructeur |
35 |
|
|
* |
36 |
|
|
* @param string $id |
37 |
|
|
* @param object $db Objet de connexion DB |
38 |
|
|
* @param boolean $DEBUG Mode debug (@deprecated) |
39 |
|
|
*/ |
40 |
|
|
function constructeur($id, &$db, $DEBUG = false) { |
41 |
|
|
if (isset($GLOBALS["f"])) { |
42 |
|
|
$this->f = $GLOBALS["f"]; |
43 |
|
|
} |
44 |
|
|
// Affectation de l'identifiant de base de donnees dans l'attribut db |
45 |
|
|
// de l'objet |
46 |
|
|
$this->db = $db; |
47 |
|
|
// Inclusion du fichier de parametre de la table pour recuperer les |
48 |
|
|
// trois parametres permettant de construire la requete de selection |
49 |
|
|
// $champs - clause select |
50 |
|
|
// $tableSelect - clause from |
51 |
|
|
// $selection - clause where |
52 |
|
|
$fichier = "../sql/".$this->db->phptype."/".$this->table.".form.inc.php"; |
53 |
|
|
if (file_exists($fichier)) { |
54 |
|
|
include $fichier; |
55 |
|
|
} else { |
56 |
|
|
$fichier = "../sql/".$this->db->phptype."/".$this->table.".form.inc"; |
57 |
|
|
if (file_exists($fichier)) { |
58 |
|
|
include $fichier; |
59 |
|
|
} |
60 |
|
|
} |
61 |
|
|
// Sauvegarde des actions contextuelles supplementaires |
62 |
|
|
if (isset($portlet_actions)) { |
63 |
|
|
$this->actions_sup = $portlet_actions; |
64 |
|
|
} |
65 |
|
|
//Si le flag $archivable est posé |
66 |
|
|
//if(isset($archivable) and $archivable){ |
67 |
|
|
// $this->archivable=TRUE; |
68 |
|
|
//} else { |
69 |
|
|
// $this->archivable=FALSE; |
70 |
|
|
//} |
71 |
|
|
// Concatenation des champs pour constitution de la clause select |
72 |
|
|
$listeChamp = ""; |
73 |
|
|
foreach ($champs as $elem) { |
74 |
|
|
$listeChamp .= $elem.","; |
75 |
|
|
} |
76 |
|
|
// Suppresion de la derniere virgule |
77 |
|
|
$listeChamp = substr($listeChamp, 0, strlen($listeChamp)-1); |
78 |
|
|
// Initialisation de la variable selection |
79 |
|
|
if (!isset($selection)) { |
80 |
|
|
$selection = ""; |
81 |
|
|
} |
82 |
|
|
// Concatenation de la requete de selection |
83 |
|
|
$sql = " select ".$listeChamp." from ".$tableSelect." "; |
84 |
|
|
$sql .= " where ".$this->real_table.".".$this->clePrimaire." = ".$id." "; |
85 |
|
|
$sql .= " ".$selection." "; |
86 |
|
|
//print '$sql:'.$sql.' '; |
87 |
|
|
// Execution de la requete |
88 |
|
|
$res = $db->limitquery($sql, 0, 1); |
89 |
|
|
// Logger |
90 |
|
|
$this->addToLog("constructeur(): db->limitquery(\"".str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE); |
91 |
|
|
// Si une erreur survient |
92 |
|
|
if (database::isError($res, true)) { |
93 |
|
|
// Appel de la methode de recuperation des erreurs |
94 |
|
|
$this->erreur_db($res->getDebugInfo(), $res->getMessage(), $tableSelect); |
95 |
|
|
} else { |
96 |
|
|
// Recuperation des informations sur la structure de la table |
97 |
|
|
// ??? compatibilite POSTGRESQL (len = -1, type vide, flags vide) |
98 |
|
|
$info = $res->tableInfo(); |
99 |
|
|
// Initialisation de la cle a 0 |
100 |
|
|
$i = 0; |
101 |
|
|
// Recuperation du nom de chaque champ dans l'attribut 'champs' |
102 |
|
|
foreach ($info as $elem) { |
103 |
|
|
$this->champs[$i++] = $elem['name']; |
104 |
|
|
} |
105 |
|
|
// ??? Le $i devrait etre initialises a 0 pour chaque attribut suivant |
106 |
|
|
// Recuperation de la taille de chaque champ dans l'attibut 'longueurMax' |
107 |
|
|
foreach ($info as $elem) { |
108 |
|
|
$this->longueurMax[$i++] = $elem['len']; |
109 |
|
|
} |
110 |
|
|
// Recuperation du type de chaque champ dans l'attribut 'type' |
111 |
|
|
// ??? Non utilise |
112 |
|
|
foreach ($info as $elem) { |
113 |
|
|
$this->type[$i++] = $elem['type']; |
114 |
|
|
} |
115 |
|
|
// Recuperation du flag de chaque champ dans l'attribut 'flags' |
116 |
|
|
// ??? Non utilise |
117 |
|
|
foreach ($info as $elem) { |
118 |
|
|
$this->flags[$i++] = $elem['flags']; |
119 |
|
|
} |
120 |
|
|
// Recuperation de l'enregistrement resultat de la requete |
121 |
|
|
while ($row =& $res->fetchRow()) { |
122 |
|
|
// Initialisation de la cle a 0 |
123 |
|
|
$i = 0; |
124 |
|
|
// Recuperation de la valeur de chaque champ dans l'attribut 'val' |
125 |
|
|
foreach ($row as $elem) { |
126 |
|
|
$this->val[$i++] = $elem; |
127 |
|
|
} |
128 |
|
|
} |
129 |
|
|
} |
130 |
|
|
} |
131 |
|
|
} |