1 |
<?php |
2 |
/** |
3 |
* DBFORM - 'etat' - Surcharge gen. |
4 |
* |
5 |
* Ce script permet de définir la classe 'etat'. |
6 |
* |
7 |
* @package openads |
8 |
* @version SVN : $Id$ |
9 |
*/ |
10 |
|
11 |
require_once "../gen/obj/etat.class.php"; |
12 |
|
13 |
class etat extends etat_gen { |
14 |
|
15 |
/** |
16 |
* Clause select pour la requête de sélection des données de l'enregistrement. |
17 |
* |
18 |
* @return array |
19 |
*/ |
20 |
function get_var_sql_forminc__champs() { |
21 |
return array( |
22 |
"etat.etat", |
23 |
"etat.libelle", |
24 |
"etat.statut", |
25 |
"array_to_string(array_agg(transition.evenement ORDER BY transition.evenement), ';') as evenement", |
26 |
); |
27 |
} |
28 |
|
29 |
/** |
30 |
* Clause from pour la requête de sélection des données de l'enregistrement. |
31 |
* |
32 |
* @return string |
33 |
*/ |
34 |
function get_var_sql_forminc__tableSelect() { |
35 |
return sprintf( |
36 |
'%1$s%2$s |
37 |
LEFT JOIN %1$stransition |
38 |
ON transition.etat=etat.etat', |
39 |
DB_PREFIXE, |
40 |
$this->table |
41 |
); |
42 |
} |
43 |
|
44 |
/** |
45 |
* Clause where pour la requête de sélection des données de l'enregistrement. |
46 |
* |
47 |
* @return string |
48 |
*/ |
49 |
function get_var_sql_forminc__selection() { |
50 |
return " GROUP BY etat.etat, libelle "; |
51 |
} |
52 |
|
53 |
/** |
54 |
* |
55 |
* @return string |
56 |
*/ |
57 |
function get_var_sql_forminc__sql_evenement() { |
58 |
return "SELECT evenement.evenement, evenement.libelle FROM ".DB_PREFIXE."evenement ORDER BY evenement.libelle"; |
59 |
} |
60 |
|
61 |
/** |
62 |
* |
63 |
* @return string |
64 |
*/ |
65 |
function get_var_sql_forminc__sql_evenement_by_id() { |
66 |
return "SELECT evenement.evenement, evenement.libelle FROM ".DB_PREFIXE."evenement WHERE evenement IN (<idx>) ORDER BY evenement.libelle"; |
67 |
} |
68 |
|
69 |
function setType(&$form, $maj) { |
70 |
// |
71 |
parent::setType($form, $maj); |
72 |
//type |
73 |
if ($maj==0){ //ajout |
74 |
$form->setType('statut', 'select'); |
75 |
$form->setType('evenement','select_multiple'); |
76 |
}// fin ajout |
77 |
if ($maj==1){ //modifier |
78 |
$form->setType('statut', 'select'); |
79 |
$form->setType('evenement','select_multiple'); |
80 |
}// fin modifier |
81 |
if ($maj==2){ //supprimer |
82 |
$form->setType('statut', 'selectstatic'); |
83 |
$form->setType('evenement','select_multiple_static'); |
84 |
}//fin supprimer |
85 |
if ($maj==3){ //consulter |
86 |
$form->setType('statut', 'selectstatic'); |
87 |
$form->setType('evenement','select_multiple_static'); |
88 |
}//fin consulter |
89 |
} |
90 |
|
91 |
/** |
92 |
* SETTER_FORM - setSelect. |
93 |
* |
94 |
* @return void |
95 |
*/ |
96 |
function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) { |
97 |
parent::setSelect($form, $maj); |
98 |
// evenement |
99 |
$this->init_select( |
100 |
$form, |
101 |
$this->f->db, |
102 |
$maj, |
103 |
null, |
104 |
"evenement", |
105 |
$this->get_var_sql_forminc__sql("evenement"), |
106 |
$this->get_var_sql_forminc__sql("evenement_by_id"), |
107 |
false, |
108 |
true |
109 |
); |
110 |
// Statut |
111 |
$contenu = array( |
112 |
0 => array('cloture', 'encours',), |
113 |
1 => array(_('Cloture'), _('En cours'),) |
114 |
); |
115 |
$form->setSelect("statut",$contenu); |
116 |
} |
117 |
|
118 |
//Nombre de evenement affiché |
119 |
function setTaille(&$form, $maj) { |
120 |
|
121 |
parent::setTaille($form, $maj); |
122 |
$form->setTaille("evenement", 5); |
123 |
} |
124 |
|
125 |
//Nombre de evenement maximum |
126 |
function setMax(&$form, $maj) { |
127 |
|
128 |
parent::setMax($form, $maj); |
129 |
$form->setMax("evenement", 5); |
130 |
} |
131 |
|
132 |
/** |
133 |
* TRIGGER - triggerajouterapres. |
134 |
* |
135 |
* @return boolean |
136 |
*/ |
137 |
function triggerajouterapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) { |
138 |
$this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE); |
139 |
parent::triggerajouterapres($id, $dnu1, $val); |
140 |
// Ajoute autant de transitions que d'événements |
141 |
// Récupère les données du select multiple |
142 |
$evenements = $this->getPostedValues('evenement'); |
143 |
// Ne traite les données que s'il y en a et qu'elles sont correctes |
144 |
if (is_array($evenements) && count($evenements) > 0) { |
145 |
$nb_tr = 0; |
146 |
// Va créer autant de transition que d'événements choisis |
147 |
foreach ($evenements as $value) { |
148 |
// Test si la valeur par défaut est sélectionnée |
149 |
if ($value != "") { |
150 |
//Données |
151 |
$donnees = array( |
152 |
'etat' => $this->valF['etat'], |
153 |
'evenement' => $value |
154 |
); |
155 |
//Ajoute une nouvelle transition |
156 |
$this->addTransition($donnees); |
157 |
$nb_tr++; |
158 |
} |
159 |
} |
160 |
// Message de confirmation de création de(s) transition(s). |
161 |
if ($nb_tr > 0) { |
162 |
if ($nb_tr == 1) { |
163 |
$this->addToMessage(_("Creation de ").$nb_tr._(" nouvelle transition |
164 |
realisee avec succes.")); |
165 |
} else { |
166 |
$this->addToMessage(_("Creation de ").$nb_tr._(" nouvelles transitions |
167 |
realisee avec succes.")); |
168 |
} |
169 |
} |
170 |
} |
171 |
} |
172 |
|
173 |
//Fonction générique permettant de récupérer les données d'un champ postées |
174 |
function getPostedValues($champ) { |
175 |
|
176 |
// Récupération des demandeurs dans POST |
177 |
if ($this->f->get_submitted_post_value($champ) !== null) { |
178 |
|
179 |
return $this->f->get_submitted_post_value($champ); |
180 |
} |
181 |
} |
182 |
|
183 |
/** |
184 |
* TRIGGER - triggermodifierapres. |
185 |
* |
186 |
* @return boolean |
187 |
*/ |
188 |
function triggermodifierapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) { |
189 |
$this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE); |
190 |
parent::triggermodifierapres($id, $dnu1, $val); |
191 |
// Supprime toutes les transitions liées à l'état |
192 |
$this->deleteAllTransitionEtat($this->valF['etat']); |
193 |
// Récupère les données du select multiple |
194 |
$evenements = $this->getPostedValues('evenement'); |
195 |
// Ne traite les données que s'il y en a et qu'elles sont correctes |
196 |
if (is_array($evenements) && count($evenements) > 0) { |
197 |
$nb_tr = 0; |
198 |
// Va créer autant de transition que d'événements choisis |
199 |
foreach ($evenements as $value) { |
200 |
// Test si la valeur par défaut est sélectionnée |
201 |
if ($value != "") { |
202 |
//Données |
203 |
$donnees = array( |
204 |
'etat' => $this->valF['etat'], |
205 |
'evenement' => $value |
206 |
); |
207 |
//Ajoute une nouvelle transition |
208 |
$this->addTransition($donnees); |
209 |
$nb_tr++; |
210 |
} |
211 |
} |
212 |
//Message de confirmation de création de(s) transition(s). |
213 |
if ($nb_tr > 0) { |
214 |
$this->addToMessage(_("Mise a jour des liaisons avec transition realisee avec succes.")); |
215 |
} |
216 |
} |
217 |
} |
218 |
|
219 |
//Ajoute une nouvelle transition |
220 |
// $data array de données |
221 |
function addTransition($data) { |
222 |
$transition = $this->f->get_inst__om_dbform(array( |
223 |
"obj" => "transition", |
224 |
"idx" => "]", |
225 |
)); |
226 |
$transition->valF = array(); |
227 |
|
228 |
//Données |
229 |
$valTransi['transition']=NULL; |
230 |
|
231 |
if ( is_array($data) ){ |
232 |
|
233 |
foreach ($data as $key => $value) { |
234 |
|
235 |
$valTransi[$key]=$value; |
236 |
} |
237 |
} |
238 |
|
239 |
$transition->ajouter($valTransi); |
240 |
} |
241 |
|
242 |
//Supprime toutes les transitions liées à un état |
243 |
function deleteAllTransitionEtat($id) { |
244 |
|
245 |
//Création de la requête |
246 |
$sql = "DELETE FROM ".DB_PREFIXE."transition WHERE etat like '$id'"; |
247 |
|
248 |
//Exécution de la requête |
249 |
$res = $this->f->db->query($sql); |
250 |
|
251 |
//Ajout au log |
252 |
$this->f->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE); |
253 |
if ( database::isError($res)){ |
254 |
die(); |
255 |
} |
256 |
} |
257 |
|
258 |
/** |
259 |
* TRIGGER - triggersupprimer. |
260 |
* |
261 |
* @return boolean |
262 |
*/ |
263 |
function triggersupprimer($id, &$dnu1 = null, $val = array(), $dnu2 = null) { |
264 |
$this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE); |
265 |
// Supprime toutes les transitions liées à l'état |
266 |
$this->deleteAllTransitionEtat($id); |
267 |
} |
268 |
|
269 |
/* Surcharge de la fonction cleSecondaire pour qu'elle ne vérifie pas le lien avec |
270 |
* transition qui sera supprimé juste après*/ |
271 |
function cleSecondaire($id, &$dnu1 = null, $val = array(), $dnu2 = null) { |
272 |
|
273 |
// Verification de la cle secondaire : dossier |
274 |
$this->rechercheTable($dnu1, "dossier", "etat", $id); |
275 |
// Verification de la cle secondaire : evenement |
276 |
$this->rechercheTable($dnu1, "evenement", "etat", $id); |
277 |
// Verification de la cle secondaire : instruction |
278 |
$this->rechercheTable($dnu1, "instruction", "etat", $id); |
279 |
} |
280 |
|
281 |
/** |
282 |
* SETTER_FORM - setVal (setVal). |
283 |
* |
284 |
* @return void |
285 |
*/ |
286 |
function setVal(&$form, $maj, $validation, &$dnu1 = null, $dnu2 = null) { |
287 |
parent::setVal($form, $maj, $validation); |
288 |
// |
289 |
if ($maj == 2 && $validation == 1) { |
290 |
// Affichage des evenement anciennement liés |
291 |
$form->setVal("evenement", $this->val[3]); |
292 |
} |
293 |
} |
294 |
} |
295 |
|
296 |
|