1 |
mbroquet |
3730 |
<?php |
2 |
|
|
/** |
3 |
nhaye |
5254 |
* DBFORM - 'etat' - Surcharge gen. |
4 |
mbroquet |
3730 |
* |
5 |
nhaye |
5254 |
* Ce script permet de définir la classe 'etat'. |
6 |
|
|
* |
7 |
|
|
* @package openads |
8 |
|
|
* @version SVN : $Id$ |
9 |
mbroquet |
3730 |
*/ |
10 |
|
|
|
11 |
|
|
require_once "../gen/obj/etat.class.php"; |
12 |
|
|
|
13 |
|
|
class etat extends etat_gen { |
14 |
|
|
|
15 |
softime |
8722 |
/** |
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 |
mbroquet |
3730 |
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 |
softime |
8722 |
/** |
92 |
|
|
* SETTER_FORM - setSelect. |
93 |
|
|
* |
94 |
|
|
* @return void |
95 |
|
|
*/ |
96 |
|
|
function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) { |
97 |
|
|
parent::setSelect($form, $maj); |
98 |
mbroquet |
3730 |
// evenement |
99 |
softime |
8722 |
$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 |
mbroquet |
3730 |
// 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 |
softime |
8722 |
/** |
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 |
mbroquet |
3730 |
$evenements = $this->getPostedValues('evenement'); |
143 |
softime |
8722 |
// 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 |
mbroquet |
3730 |
//Données |
151 |
|
|
$donnees = array( |
152 |
|
|
'etat' => $this->valF['etat'], |
153 |
|
|
'evenement' => $value |
154 |
|
|
); |
155 |
|
|
//Ajoute une nouvelle transition |
156 |
softime |
8722 |
$this->addTransition($donnees); |
157 |
mbroquet |
3730 |
$nb_tr++; |
158 |
|
|
} |
159 |
|
|
} |
160 |
softime |
8722 |
// Message de confirmation de création de(s) transition(s). |
161 |
|
|
if ($nb_tr > 0) { |
162 |
|
|
if ($nb_tr == 1) { |
163 |
mbroquet |
3730 |
$this->addToMessage(_("Creation de ").$nb_tr._(" nouvelle transition |
164 |
|
|
realisee avec succes.")); |
165 |
softime |
8722 |
} else { |
166 |
mbroquet |
3730 |
$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 |
softime |
8722 |
|
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 |
mbroquet |
3730 |
$evenements = $this->getPostedValues('evenement'); |
195 |
softime |
8722 |
// 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 |
mbroquet |
3730 |
//Données |
203 |
|
|
$donnees = array( |
204 |
|
|
'etat' => $this->valF['etat'], |
205 |
|
|
'evenement' => $value |
206 |
|
|
); |
207 |
|
|
//Ajoute une nouvelle transition |
208 |
softime |
8722 |
$this->addTransition($donnees); |
209 |
mbroquet |
3730 |
$nb_tr++; |
210 |
|
|
} |
211 |
|
|
} |
212 |
|
|
//Message de confirmation de création de(s) transition(s). |
213 |
softime |
8722 |
if ($nb_tr > 0) { |
214 |
mbroquet |
3730 |
$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 |
softime |
8722 |
function addTransition($data) { |
222 |
softime |
7996 |
$transition = $this->f->get_inst__om_dbform(array( |
223 |
|
|
"obj" => "transition", |
224 |
|
|
"idx" => "]", |
225 |
|
|
)); |
226 |
mbroquet |
3730 |
$transition->valF = ""; |
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 |
softime |
8722 |
$transition->ajouter($valTransi); |
240 |
mbroquet |
3730 |
} |
241 |
|
|
|
242 |
|
|
//Supprime toutes les transitions liées à un état |
243 |
softime |
8722 |
function deleteAllTransitionEtat($id) { |
244 |
mbroquet |
3730 |
|
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 |
softime |
8722 |
$res = $this->f->db->query($sql); |
250 |
mbroquet |
3730 |
|
251 |
|
|
//Ajout au log |
252 |
softime |
8722 |
$this->f->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE); |
253 |
mbroquet |
3730 |
if ( database::isError($res)){ |
254 |
|
|
die(); |
255 |
|
|
} |
256 |
|
|
} |
257 |
|
|
|
258 |
softime |
8722 |
/** |
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 |
mbroquet |
3730 |
} |
268 |
softime |
8722 |
|
269 |
mbroquet |
3730 |
/* Surcharge de la fonction cleSecondaire pour qu'elle ne vérifie pas le lien avec |
270 |
|
|
* transition qui sera supprimé juste après*/ |
271 |
softime |
8722 |
function cleSecondaire($id, &$dnu1 = null, $val = array(), $dnu2 = null) { |
272 |
mbroquet |
3730 |
|
273 |
|
|
// Verification de la cle secondaire : dossier |
274 |
softime |
8722 |
$this->rechercheTable($dnu1, "dossier", "etat", $id); |
275 |
mbroquet |
3730 |
// Verification de la cle secondaire : evenement |
276 |
softime |
8722 |
$this->rechercheTable($dnu1, "evenement", "etat", $id); |
277 |
mbroquet |
3730 |
// Verification de la cle secondaire : instruction |
278 |
softime |
8722 |
$this->rechercheTable($dnu1, "instruction", "etat", $id); |
279 |
mbroquet |
3730 |
} |
280 |
softime |
8722 |
|
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 |
mbroquet |
3730 |
} |
293 |
|
|
} |
294 |
|
|
} |
295 |
|
|
|
296 |
softime |
7996 |
|