1 |
<?php |
2 |
//$Id$ |
3 |
//gen openMairie le 03/01/2014 16:53 |
4 |
|
5 |
require_once ("../gen/obj/dossier_contrainte.class.php"); |
6 |
|
7 |
class dossier_contrainte extends dossier_contrainte_gen { |
8 |
|
9 |
/** |
10 |
* Cette variable permet de stocker le résultat de la méthode |
11 |
* getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de |
12 |
* ces appels. |
13 |
* @var string Code de la division du dossier en cours |
14 |
*/ |
15 |
var $_division_from_dossier = NULL; |
16 |
|
17 |
/** |
18 |
* Liste des contraintes |
19 |
* @var array |
20 |
*/ |
21 |
var $listContraintes = array(); |
22 |
|
23 |
/** @var boolean Les nouvelles actions sont activées sur cet objet */ |
24 |
var $activate_class_action; |
25 |
|
26 |
/** |
27 |
* Constructeur de la classe. |
28 |
* @param integer $id Identifiant de l'objet |
29 |
* @param object &$db Objet de la base de données |
30 |
* @param boolean $debug Mode DEBUG |
31 |
*/ |
32 |
function __construct($id, &$db, $debug) { |
33 |
//On active les nouvelles actions |
34 |
$this->activate_class_action = true; |
35 |
$this->constructeur($id, $db, $debug); |
36 |
($this->f->get_submitted_get_value('idxformulaire')!==null ? $idxformulaire = |
37 |
$this->f->get_submitted_get_value('idxformulaire') : $idxformulaire = ""); |
38 |
|
39 |
// Liste des contraintes |
40 |
$getListContraintes = $this->getListContraintes(); |
41 |
|
42 |
// Tant qu'il y a des contraintes |
43 |
while ($rowListContraintes = &$getListContraintes->fetchRow(DB_FETCHMODE_ASSOC)) { |
44 |
// Identifiant du champ |
45 |
$id_champ = 'contrainte_'.$rowListContraintes['contrainte_id']; |
46 |
// Ajoute les informations de la contrainte au tableau |
47 |
$this->listContraintes[$id_champ] = $rowListContraintes; |
48 |
// Ajoute la contrainte en tant que champ |
49 |
$this->setChamp($id_champ); |
50 |
} |
51 |
} |
52 |
|
53 |
/** |
54 |
* Définition des actions disponibles sur la classe. |
55 |
* |
56 |
* @return void |
57 |
*/ |
58 |
function init_class_actions() { |
59 |
|
60 |
parent::init_class_actions(); |
61 |
|
62 |
// ACTION - 001 - modifier |
63 |
// |
64 |
$this->class_actions[1]["condition"] = "is_editable"; |
65 |
|
66 |
// ACTION - 002 - supprimer |
67 |
// |
68 |
$this->class_actions[2]["condition"] = "is_deletable"; |
69 |
|
70 |
// ACTION - 004 - view_tab |
71 |
// Interface spécifique de la liste des contraintes |
72 |
$this->class_actions[4] = array( |
73 |
"identifier" => "view_tab", |
74 |
"view" => "view_tab", |
75 |
"permission_suffix" => "tab", |
76 |
); |
77 |
|
78 |
// ACTION - 005 - view_tab |
79 |
// Interface spécifique de la vue du traitement d'ajout de contraintes |
80 |
$this->class_actions[5] = array( |
81 |
"identifier" => "view_add", |
82 |
"view" => "view_add", |
83 |
"permission_suffix" => "ajouter", |
84 |
); |
85 |
} |
86 |
|
87 |
/** |
88 |
* VIEW - view_tab |
89 |
* |
90 |
* Cette vue permet d'afficher les contraintes rattachées à un dossier |
91 |
* dans un tableau organisé par les groupes et sous-groupes. |
92 |
* |
93 |
* @return void |
94 |
*/ |
95 |
function view_tab() { |
96 |
// Vérification de l'accessibilité sur l'élément |
97 |
$this->checkAccessibility(); |
98 |
// Début affichage tableau |
99 |
printf("\n<div id=\"sousform-dossier_contrainte\">\n"); |
100 |
printf("\n<!-- ########## START FORMULAIRE ########## -->\n"); |
101 |
printf("<div class=\"formEntete ui-corner-all\">\n"); |
102 |
|
103 |
// Récupération des variables GET |
104 |
($this->f->get_submitted_get_value('idxformulaire')!==null ? $idxformulaire = |
105 |
$this->f->get_submitted_get_value('idxformulaire') : $idxformulaire = ""); |
106 |
($this->f->get_submitted_get_value('retourformulaire')!==null ? $retourformulaire = |
107 |
$this->f->get_submitted_get_value('retourformulaire') : $retourformulaire = ""); |
108 |
|
109 |
// Récupèration du numéro du dossier |
110 |
$dossier = $idxformulaire; |
111 |
|
112 |
// Initialisation des affichages des bouton modifier et supprimer |
113 |
$show_btn_edit = false; |
114 |
$show_btn_delete = false; |
115 |
// Si toutes les conditions pour afficher le bouton modifier sont remplis |
116 |
if ((($this->f->isAccredited('dossier_contrainte') |
117 |
|| $this->f->isAccredited('dossier_contrainte_modifier')) |
118 |
&& ($this->f->isUserInstructeur() |
119 |
&& isset($this->f->om_utilisateur["division"]) |
120 |
&& $this->f->om_utilisateur["division"] == $this->f->getDivisionFromDossier($dossier))) |
121 |
|| $this->f->isUserChef() |
122 |
|| $this->f->isUserAdministrateur() |
123 |
|| $this->f->can_bypass("dossier_contrainte", "modifier")) { |
124 |
// Affiche le bouton |
125 |
$show_btn_edit = true; |
126 |
} |
127 |
// Si toutes les conditions pour afficher le bouton supprimer sont remplis |
128 |
if ((($this->f->isAccredited('dossier_contrainte') |
129 |
|| $this->f->isAccredited('dossier_contrainte_supprimer')) |
130 |
&& ($this->f->isUserInstructeur() |
131 |
&& isset($this->f->om_utilisateur["division"]) |
132 |
&& $this->f->om_utilisateur["division"] == $this->f->getDivisionFromDossier($dossier))) |
133 |
|| $this->f->isUserChef() |
134 |
|| $this->f->isUserAdministrateur() |
135 |
|| $this->f->can_bypass("dossier_contrainte", "supprimer")) { |
136 |
// Affiche le bouton |
137 |
$show_btn_delete = true; |
138 |
} |
139 |
|
140 |
// Champs des contraintes à afficher |
141 |
$select = "SELECT dossier_contrainte.dossier_contrainte as dossier_contrainte_id, |
142 |
dossier_contrainte.texte_complete as dossier_contrainte_texte, |
143 |
dossier_contrainte.reference as dossier_contrainte_reference, |
144 |
contrainte.libelle as contrainte_libelle, |
145 |
contrainte.nature as contrainte_nature, |
146 |
contrainte.texte as contrainte_texte, |
147 |
contrainte.reference as contrainte_reference, |
148 |
lower(contrainte.groupe) as contrainte_groupe, |
149 |
lower(contrainte.sousgroupe) as contrainte_sousgroupe "; |
150 |
|
151 |
// Table pour le select |
152 |
$from = " FROM ".DB_PREFIXE."contrainte |
153 |
LEFT JOIN ".DB_PREFIXE."dossier_contrainte |
154 |
ON dossier_contrainte.contrainte = contrainte.contrainte "; |
155 |
|
156 |
// Condition de la requête |
157 |
$where = " WHERE dossier_contrainte.dossier = '$dossier' "; |
158 |
|
159 |
// Le tri sur la requête |
160 |
$tri = " ORDER BY contrainte_groupe DESC, contrainte_sousgroupe, contrainte.no_ordre, contrainte.libelle "; |
161 |
|
162 |
// Requête |
163 |
$sql = $select.$from.$where.$tri; |
164 |
$res = $this->f->db->query($sql); |
165 |
$this->f->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE); |
166 |
$this->f->isDatabaseError($res); |
167 |
|
168 |
// bouton pour gérer les contraintes |
169 |
$ajouter = " |
170 |
<p> |
171 |
<a id=\"action-soustab-dossier_contrainte-corner-ajouter\" onclick=\"ajaxIt('dossier_contrainte','../scr/sousform.php?obj=dossier_contrainte&action=0&tri=&objsf=dossier_contrainte&premiersf=0&retourformulaire=".$retourformulaire."&idxformulaire=".$dossier."&trisf=&retour=tab');\" href='#'> |
172 |
<span class=\"om-prev-icon om-icon-16 add-16\" title=\""._("Ajouter des contraintes")."\"> |
173 |
"._("Ajouter des contraintes")." |
174 |
</span> |
175 |
</a> |
176 |
</p> |
177 |
"; |
178 |
|
179 |
// Entête pour le groupe |
180 |
$groupeHeader = " |
181 |
<div class='dossier_contrainte_groupe'> |
182 |
<div class='dossier_contrainte_groupe_header'> |
183 |
<span class='name'> |
184 |
%s |
185 |
</span> |
186 |
</div> |
187 |
"; |
188 |
|
189 |
// Entête pour le sous-groupe |
190 |
$sousgroupeHeader = " |
191 |
<div class='dossier_contrainte_sousgroupe'> |
192 |
<div class='dossier_contrainte_sousgroupe_header'> |
193 |
<span class='name'> |
194 |
%s |
195 |
</span> |
196 |
</div> |
197 |
"; |
198 |
// Titres des colonnes |
199 |
$tableHeader = " |
200 |
<thead> |
201 |
<tr class='ui-tabs-nav ui-accordion ui-state-default tab-title'> |
202 |
<th class='icons actions-max-1'> |
203 |
<span class='name'> |
204 |
%s |
205 |
</span> |
206 |
</th>"; |
207 |
// Si le retour formulaire est bon |
208 |
if (($retourformulaire == 'dossier' |
209 |
|| $retourformulaire == 'dossier_instruction' |
210 |
|| $retourformulaire == 'dossier_instruction_mes_encours' |
211 |
|| $retourformulaire == 'dossier_instruction_tous_encours' |
212 |
|| $retourformulaire == 'dossier_instruction_mes_clotures' |
213 |
|| $retourformulaire == 'dossier_instruction_tous_clotures')) { |
214 |
// |
215 |
if ($show_btn_edit == true) { |
216 |
// Affiche le header de la colonne pour le bouton |
217 |
$tableHeader .= " |
218 |
<th class='icons actions-max-1'> |
219 |
<span class='name'> |
220 |
%s |
221 |
</span> |
222 |
</th>"; |
223 |
} |
224 |
// |
225 |
if ($show_btn_delete == true) { |
226 |
// Affiche le header de la colonne pour le bouton |
227 |
$tableHeader .= " |
228 |
<th class='icons actions-max-1'> |
229 |
<span class='name'> |
230 |
%s |
231 |
</span> |
232 |
</th>"; |
233 |
} |
234 |
} |
235 |
$tableHeader .= " |
236 |
<th class='title col-0 firstcol'> |
237 |
<span class='name'> |
238 |
"._('libelle')." |
239 |
</span> |
240 |
</th> |
241 |
<th class='title col-1'> |
242 |
<span class='name'> |
243 |
"._('texte_complete')." |
244 |
</span> |
245 |
</th> |
246 |
<th class='title col-2'> |
247 |
<span class='name'> |
248 |
"._('reference')." |
249 |
</span> |
250 |
</th> |
251 |
<th class='title col-3'> |
252 |
<span class='name'> |
253 |
"._('nature')." |
254 |
</span> |
255 |
</th> |
256 |
</tr> |
257 |
</thead> |
258 |
"; |
259 |
|
260 |
// Ligne de données |
261 |
$line = " |
262 |
<tr class='tab-data %s'> |
263 |
<td class='icons'> |
264 |
%s |
265 |
</td>"; |
266 |
// |
267 |
if (($retourformulaire == 'dossier' |
268 |
|| $retourformulaire == 'dossier_instruction' |
269 |
|| $retourformulaire == 'dossier_instruction_mes_encours' |
270 |
|| $retourformulaire == 'dossier_instruction_tous_encours' |
271 |
|| $retourformulaire == 'dossier_instruction_mes_clotures' |
272 |
|| $retourformulaire == 'dossier_instruction_tous_clotures')) { |
273 |
// |
274 |
if ($show_btn_edit == true) { |
275 |
// Affiche la cellule pour le bouton |
276 |
$line .= " |
277 |
<td class='icons'> |
278 |
%s |
279 |
</td>"; |
280 |
} |
281 |
// |
282 |
if ($show_btn_delete == true) { |
283 |
// Affiche la cellule pour le bouton |
284 |
$line .= " |
285 |
<td class='icons'> |
286 |
%s |
287 |
</td>"; |
288 |
} |
289 |
} |
290 |
$line .= " |
291 |
<td class='col-0 firstcol'> |
292 |
%s |
293 |
</td> |
294 |
<td class='col-1'> |
295 |
%s |
296 |
</td> |
297 |
<td class='col-2'> |
298 |
%s |
299 |
</td> |
300 |
<td class='col-3'> |
301 |
%s |
302 |
</td> |
303 |
</tr> |
304 |
"; |
305 |
|
306 |
// Lien des données |
307 |
$link = " |
308 |
<a class='lienTable' onclick=\"ajaxIt('dossier_contrainte','../scr/sousform.php?obj=dossier_contrainte&action=3&idx=%s&tri=&premier=0&recherche=&objsf=dossier_contrainte&premiersf=0&retourformulaire=%s&idxformulaire=%s&trisf=&retour=tab');\" href='#'> |
309 |
%s |
310 |
</a> |
311 |
"; |
312 |
|
313 |
// |
314 |
$button = ' |
315 |
<a onclick=\'ajaxIt("dossier_contrainte","../scr/sousform.php?obj=dossier_contrainte&action=%1$s&idx=%2$s&tri=&premier=0&recherche=&objsf=dossier_contrainte&premiersf=0&retourformulaire=%3$s&idxformulaire=%4$s&trisf=&retour=tab");\' id="action-soustab-dossier_contrainte-corner-left-%5$s-%2$s" href="#"> |
316 |
<span title="%5$s" class="om-icon om-icon-16 om-icon-fix %6$s-16"> |
317 |
%5$s |
318 |
</span> |
319 |
</a> |
320 |
'; |
321 |
|
322 |
//Vérification des droits sur l'ajout |
323 |
// et que l'instructeur est de la bonne division |
324 |
if ((($retourformulaire == 'dossier' |
325 |
|| $retourformulaire == 'dossier_instruction' |
326 |
|| $retourformulaire == 'dossier_instruction_mes_encours' |
327 |
|| $retourformulaire == 'dossier_instruction_tous_encours' |
328 |
|| $retourformulaire == 'dossier_instruction_mes_clotures' |
329 |
|| $retourformulaire == 'dossier_instruction_tous_clotures') |
330 |
&& ($this->f->isAccredited('dossier_contrainte') |
331 |
|| $this->f->isAccredited('dossier_contrainte_ajouter')) |
332 |
&& ($this->f->isUserInstructeur() |
333 |
&& isset($this->f->om_utilisateur["division"]) |
334 |
&& $this->f->om_utilisateur["division"] == $this->f->getDivisionFromDossier($dossier))) |
335 |
|| $this->f->isUserQualificateur() |
336 |
|| $this->f->isUserChef() |
337 |
|| $this->f->isUserAdministrateur() |
338 |
|| $this->f->can_bypass("dossier_contrainte", "ajouter")) { |
339 |
|
340 |
// Affiche le bouton pour gérer les contraintes |
341 |
printf($ajouter); |
342 |
} |
343 |
|
344 |
// Sauvegarde des données pour les comparer |
345 |
$lastRow = array(); |
346 |
$lastRow['contrainte_groupe'] = 'empty'; |
347 |
$lastRow['contrainte_sousgroupe'] = 'empty'; |
348 |
|
349 |
// Tant qu'il y a des résultats |
350 |
while($row = &$res->fetchRow(DB_FETCHMODE_ASSOC)) { |
351 |
|
352 |
// Si l'identifiant du groupe de la contrainte présente et |
353 |
// celle d'avant est différent |
354 |
if ($row['contrainte_groupe'] != $lastRow['contrainte_groupe']) { |
355 |
|
356 |
// Si l'identifiant du groupe d'avant est vide |
357 |
if ($lastRow['contrainte_groupe'] != 'empty') { |
358 |
// Ferme le tableau |
359 |
printf("</table>"); |
360 |
// |
361 |
printf("</div>"); |
362 |
// |
363 |
printf("</div>"); |
364 |
} |
365 |
|
366 |
// Affiche le header du groupe |
367 |
printf($groupeHeader, $row['contrainte_groupe']); |
368 |
} |
369 |
|
370 |
// Si l'identifiant du sous-groupe de la contrainte présente et |
371 |
// celle d'avant est différent |
372 |
// Ou qu'ils soient identique mais n'appartiennent pas au même groupe |
373 |
if ($row['contrainte_sousgroupe'] != $lastRow['contrainte_sousgroupe'] |
374 |
|| ($row['contrainte_sousgroupe'] == $lastRow['contrainte_sousgroupe'] |
375 |
&& $row['contrainte_groupe'] != $lastRow['contrainte_groupe'])) { |
376 |
|
377 |
// |
378 |
if($row['contrainte_groupe'] == $lastRow['contrainte_groupe']) { |
379 |
// Si l'identifiant de la sous-groupe d'avant est vide |
380 |
if ($lastRow['contrainte_sousgroupe'] != 'empty') { |
381 |
// Ferme le tableau |
382 |
printf("</table>"); |
383 |
// |
384 |
printf("</div>"); |
385 |
} |
386 |
} |
387 |
|
388 |
// Affiche le header du sous-groupe |
389 |
printf($sousgroupeHeader, $row['contrainte_sousgroupe']); |
390 |
|
391 |
// Ouvre le tableau |
392 |
printf("<table id='sousgroupe_".$row['contrainte_sousgroupe'] |
393 |
."' class='tab-tab dossier_contrainte_view'>"); |
394 |
|
395 |
// Affiche le header des données |
396 |
if ($show_btn_edit == false |
397 |
&& $show_btn_delete == false) { |
398 |
// |
399 |
printf($tableHeader, ''); |
400 |
} |
401 |
// |
402 |
if ($show_btn_edit == true |
403 |
&& $show_btn_delete == false) { |
404 |
// |
405 |
printf($tableHeader, '', ''); |
406 |
} |
407 |
// |
408 |
if ($show_btn_edit == false |
409 |
&& $show_btn_delete == true) { |
410 |
// |
411 |
printf($tableHeader, '', ''); |
412 |
} |
413 |
// |
414 |
if ($show_btn_edit == true |
415 |
&& $show_btn_delete == true) { |
416 |
// |
417 |
printf($tableHeader, '', '', ''); |
418 |
} |
419 |
|
420 |
// Définis le style des lignes |
421 |
$style = 'odd'; |
422 |
} |
423 |
|
424 |
// Si toujours dans la même groupe et même sous-groupe, |
425 |
// on change le style de la ligne |
426 |
if ($row['contrainte_groupe'] == $lastRow['contrainte_groupe'] |
427 |
&& $row['contrainte_sousgroupe'] == $lastRow['contrainte_sousgroupe']) { |
428 |
// |
429 |
$style = ($style=='even')?'odd':'even'; |
430 |
} |
431 |
|
432 |
// Affiche "Oui" ou "Non" pour le bouléen |
433 |
if ($row['dossier_contrainte_reference'] == 1 |
434 |
|| $row['dossier_contrainte_reference'] == "t" |
435 |
|| $row['dossier_contrainte_reference'] == "Oui") { |
436 |
// |
437 |
$contrainte_reference = "Oui"; |
438 |
} else { |
439 |
// |
440 |
$contrainte_reference = "Non"; |
441 |
} |
442 |
|
443 |
// Affiche les données |
444 |
if (($retourformulaire == 'dossier' |
445 |
|| $retourformulaire == 'dossier_instruction' |
446 |
|| $retourformulaire == 'dossier_instruction_mes_encours' |
447 |
|| $retourformulaire == 'dossier_instruction_tous_encours' |
448 |
|| $retourformulaire == 'dossier_instruction_mes_clotures' |
449 |
|| $retourformulaire == 'dossier_instruction_tous_clotures')) { |
450 |
// |
451 |
if ($show_btn_edit == false |
452 |
&& $show_btn_delete == false) { |
453 |
// |
454 |
printf($line, $style, |
455 |
sprintf($button, '3', $row['dossier_contrainte_id'], $retourformulaire, |
456 |
$idxformulaire, _('Consulter'), 'consult'), |
457 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
458 |
$idxformulaire, $row['contrainte_libelle']), |
459 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
460 |
$idxformulaire, $row['dossier_contrainte_texte']), |
461 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
462 |
$idxformulaire, $contrainte_reference), |
463 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
464 |
$idxformulaire, $row['contrainte_nature'])); |
465 |
} |
466 |
// |
467 |
if ($show_btn_edit == true |
468 |
&& $show_btn_delete == false) { |
469 |
// |
470 |
printf($line, $style, |
471 |
sprintf($button, '3', $row['dossier_contrainte_id'], $retourformulaire, |
472 |
$idxformulaire, _('Consulter'), 'consult'), |
473 |
sprintf($button, '1', $row['dossier_contrainte_id'], $retourformulaire, |
474 |
$idxformulaire, _('Modifier'), 'edit'), |
475 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
476 |
$idxformulaire, $row['contrainte_libelle']), |
477 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
478 |
$idxformulaire, $row['dossier_contrainte_texte']), |
479 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
480 |
$idxformulaire, $contrainte_reference), |
481 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
482 |
$idxformulaire, $row['contrainte_nature'])); |
483 |
} |
484 |
// |
485 |
if ($show_btn_edit == false |
486 |
&& $show_btn_delete == true) { |
487 |
// |
488 |
printf($line, $style, |
489 |
sprintf($button, '3', $row['dossier_contrainte_id'], $retourformulaire, |
490 |
$idxformulaire, _('Consulter'), 'consult'), |
491 |
sprintf($button, '2', $row['dossier_contrainte_id'], $retourformulaire, |
492 |
$idxformulaire, _('Supprimer'), 'delete'), |
493 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
494 |
$idxformulaire, $row['contrainte_libelle']), |
495 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
496 |
$idxformulaire, $row['dossier_contrainte_texte']), |
497 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
498 |
$idxformulaire, $contrainte_reference), |
499 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
500 |
$idxformulaire, $row['contrainte_nature'])); |
501 |
} |
502 |
// |
503 |
if ($show_btn_edit == true |
504 |
&& $show_btn_delete == true) { |
505 |
// |
506 |
printf($line, $style, |
507 |
sprintf($button, '3', $row['dossier_contrainte_id'], $retourformulaire, |
508 |
$idxformulaire, _('Consulter'), 'consult'), |
509 |
sprintf($button, '1', $row['dossier_contrainte_id'], $retourformulaire, |
510 |
$idxformulaire, _('Modifier'), 'edit'), |
511 |
sprintf($button, '2', $row['dossier_contrainte_id'], $retourformulaire, |
512 |
$idxformulaire, _('Supprimer'), 'delete'), |
513 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
514 |
$idxformulaire, $row['contrainte_libelle']), |
515 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
516 |
$idxformulaire, $row['dossier_contrainte_texte']), |
517 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
518 |
$idxformulaire, $contrainte_reference), |
519 |
sprintf($link, $row['dossier_contrainte_id'], $retourformulaire, |
520 |
$idxformulaire, $row['contrainte_nature'])); |
521 |
} |
522 |
} |
523 |
|
524 |
// Sauvegarde les données |
525 |
$lastRow['contrainte_groupe'] = $row['contrainte_groupe']; |
526 |
$lastRow['contrainte_sousgroupe'] = $row['contrainte_sousgroupe']; |
527 |
|
528 |
} |
529 |
// |
530 |
if ($res->numrows() != 0) { |
531 |
// Ferme le tableau |
532 |
printf("</table>"); |
533 |
// Ferme le sous-groupe |
534 |
printf("</div>"); |
535 |
// Ferme le groupe |
536 |
printf("</div>"); |
537 |
} |
538 |
|
539 |
// Si il n'y a pas de résultat on affiche "Aucun enregistrements" |
540 |
if ($res->numrows() == 0) { |
541 |
// |
542 |
printf ("<p class='noData'>"._("Aucun enregistrement")."<p>"); |
543 |
} |
544 |
|
545 |
// Ferme la div |
546 |
printf("</div>"); |
547 |
// Ferme la div |
548 |
printf("</div>"); |
549 |
} |
550 |
|
551 |
/** |
552 |
* Permet d'ajouter des champs au formulaire. |
553 |
* @param string $champ Nom du champ |
554 |
*/ |
555 |
function setChamp($champ) { |
556 |
// Ajoute un champ |
557 |
$this->champs[] = $champ; |
558 |
} |
559 |
|
560 |
/** |
561 |
* Permet de définir le type des champs. |
562 |
* @param object &$form Objet du formulaire |
563 |
* @param integer $maj Mode du formulaire |
564 |
*/ |
565 |
function setType(&$form,$maj) { |
566 |
parent::setType($form, $maj); |
567 |
|
568 |
// Les champs à cacher |
569 |
$form->setType('dossier_contrainte', 'hidden'); |
570 |
$form->setType('dossier', 'hidden'); |
571 |
$form->setType('contrainte', 'hidden'); |
572 |
$form->setType('reference', 'hidden'); |
573 |
|
574 |
// En mode ajouté |
575 |
if ($maj == 0) { |
576 |
// |
577 |
$form->setType('texte_complete', 'hidden'); |
578 |
// Pour chaque champ |
579 |
foreach ($this->champs as $key => $value) { |
580 |
// |
581 |
$search_field = 'contrainte_'; |
582 |
// Qui contient le mot 'contrainte_' |
583 |
if (strpos($value, $search_field) !== false) { |
584 |
// |
585 |
$form->setType($value, 'checkbox'); |
586 |
} |
587 |
} |
588 |
} |
589 |
} |
590 |
|
591 |
/** |
592 |
* Permet de définir la taille des champs. |
593 |
* @param object &$form Objet du formulaire |
594 |
* @param integer $maj Mode du formulaire |
595 |
*/ |
596 |
function setTaille(&$form, $maj) { |
597 |
parent::setTaille($form, $maj); |
598 |
|
599 |
// En mode ajouté |
600 |
if ($maj == 0) { |
601 |
// Pour chaque champ |
602 |
foreach ($this->champs as $key => $value) { |
603 |
// |
604 |
$search_field = 'contrainte_'; |
605 |
// Qui contient le mot 'contrainte_' |
606 |
if (strpos($value, $search_field) !== false) { |
607 |
// |
608 |
$form->setTaille($value, 1); |
609 |
} |
610 |
} |
611 |
} |
612 |
} |
613 |
|
614 |
/** |
615 |
* Permet de définir le nombre de caractères maximum des champs. |
616 |
* @param object &$form Objet du formulaire |
617 |
* @param integer $maj Mode du formulaire |
618 |
*/ |
619 |
function setMax(&$form, $maj) { |
620 |
// |
621 |
parent::setMax($form, $maj); |
622 |
// En mode ajouté |
623 |
if ($maj == 0) { |
624 |
// Pour chaque champ |
625 |
foreach ($this->champs as $key => $value) { |
626 |
// |
627 |
$search_field = 'contrainte_'; |
628 |
// Qui contient le mot 'contrainte_' |
629 |
if (strpos($value, $search_field) !== false) { |
630 |
// |
631 |
$form->setMax($value, 1); |
632 |
} |
633 |
} |
634 |
} |
635 |
} |
636 |
|
637 |
/** |
638 |
* Permet de définir le libellé des champs. |
639 |
* @param object &$form Objet du formulaire |
640 |
* @param integer $maj Mode du formulaire |
641 |
*/ |
642 |
function setLib(&$form,$maj) { |
643 |
// |
644 |
parent::setLib($form, $maj); |
645 |
// En mode ajouté |
646 |
if ($maj == 0) { |
647 |
// Pour chaque champ |
648 |
foreach ($this->champs as $key => $value) { |
649 |
// |
650 |
$search_field = 'contrainte_'; |
651 |
// Qui contient le mot 'contrainte_' |
652 |
if (strpos($value, $search_field) !== false) { |
653 |
// |
654 |
$form->setLib($value, |
655 |
$this->listContraintes[$value]['contrainte_lib']); |
656 |
} |
657 |
} |
658 |
} |
659 |
} |
660 |
|
661 |
/** |
662 |
* Permet de définir les valeurs des champs. |
663 |
* @param object &$form Objet du formulaire |
664 |
* @param integer $maj Mode du formulaire |
665 |
* @param integer $validation Validation du formulaire |
666 |
* @param mixed $idxformulaire Identifiant du formulaire parent |
667 |
* @param string $retourformulaire Formulaire parent |
668 |
* @param string $typeformulaire ??? |
669 |
* @param object &$db Objet de la base de données |
670 |
* @param boolean $DEBUG Mode DEBUG |
671 |
*/ |
672 |
function setValsousformulaire(&$form, $maj, $validation, $idxformulaire, |
673 |
$retourformulaire, $typeformulaire, &$db, $DEBUG=null) { |
674 |
parent::setValsousformulaire($form, $maj, $validation, $idxformulaire, |
675 |
$retourformulaire, $typeformulaire, $db, $DEBUG); |
676 |
|
677 |
// En mode ajout |
678 |
if ($maj == 0) { |
679 |
// Si le formulaire principal est 'dossier_instruction' |
680 |
if($retourformulaire === "dossier_instruction" |
681 |
|| $retourformulaire==='dossier_instruction_tous_clotures' |
682 |
|| $retourformulaire==='dossier_instruction_mes_clotures' |
683 |
|| $retourformulaire==='dossier_instruction_tous_encours' |
684 |
|| $retourformulaire==='dossier_instruction_mes_encours') { |
685 |
// Valeur du dossier en cours |
686 |
$form->setVal("dossier", $idxformulaire); |
687 |
} |
688 |
} |
689 |
// Pas en mode ajout |
690 |
if ($maj != 0) { |
691 |
// Pour chaque champ |
692 |
foreach ($this->champs as $key => $value) { |
693 |
// |
694 |
$search_field = 'contrainte_'; |
695 |
// Qui contient le mot 'contrainte_' |
696 |
if (strpos($value, $search_field) !== false) { |
697 |
// |
698 |
unset($this->champs[$key]); |
699 |
} |
700 |
} |
701 |
} |
702 |
} |
703 |
|
704 |
/** |
705 |
* Récupère la liste des contraintes. |
706 |
* @return object Résultat de la requête |
707 |
*/ |
708 |
function getListContraintes() { |
709 |
|
710 |
// Requête SQL |
711 |
$sql = "SELECT |
712 |
contrainte.contrainte as contrainte_id, |
713 |
lower(contrainte.groupe) as contrainte_groupe, |
714 |
lower(contrainte.sousgroupe) as contrainte_sousgroupe, |
715 |
contrainte.libelle as contrainte_lib, |
716 |
contrainte.no_ordre as contrainte_ordre |
717 |
FROM ".DB_PREFIXE."contrainte |
718 |
WHERE om_validite_fin IS NULL |
719 |
OR om_validite_fin > CURRENT_DATE |
720 |
ORDER BY contrainte_groupe DESC, contrainte_sousgroupe, |
721 |
contrainte.no_ordre, contrainte.libelle"; |
722 |
$this->f->addToLog("getListContraintes() : db->query(\"".$sql."\")", |
723 |
VERBOSE_MODE); |
724 |
$res = $this->db->query($sql); |
725 |
$this->f->isDatabaseError($res); |
726 |
|
727 |
// Résultat retourné |
728 |
return $res; |
729 |
} |
730 |
|
731 |
/** |
732 |
* Méthode de mise en page. |
733 |
* @param object &$form Objet du formulaire |
734 |
* @param integer $maj Mode du formulaire |
735 |
*/ |
736 |
function setLayout(&$form, $maj) { |
737 |
|
738 |
// En mode ajouté |
739 |
if ($maj == 0 ) { |
740 |
|
741 |
// Si la liste des contraintes n'est pas vide |
742 |
if (!empty($this->listContraintes)) { |
743 |
|
744 |
// Sauvegarde des données des contraintes pour les comparer |
745 |
$contrainte_before = array(); |
746 |
$contrainte_before['contrainte_groupe'] = ''; |
747 |
$contrainte_before['contrainte_sousgroupe'] = ''; |
748 |
$contrainte_before['key'] = ''; |
749 |
|
750 |
// Pour chaque contrainte |
751 |
foreach ($this->listContraintes as $key => $contrainte) { |
752 |
|
753 |
// Si l'identifiant du groupe de la contrainte présente et |
754 |
// celle d'avant est différent |
755 |
if ($contrainte['contrainte_groupe'] |
756 |
!= $contrainte_before['contrainte_groupe']) { |
757 |
// Si l'identifiant du groupe d'avant est vide |
758 |
if ($contrainte_before['contrainte_groupe'] != '') { |
759 |
// Ferme le fieldset |
760 |
$form->setFieldset($contrainte_before['key'], 'F'); |
761 |
} |
762 |
// Ouvre le fieldset |
763 |
$form->setFieldset($key, 'D', $contrainte['contrainte_groupe'], |
764 |
"startClosed text_capitalize"); |
765 |
} |
766 |
|
767 |
// Si l'identifiant de la sous-catégorie de la contrainte présente |
768 |
// et celle d'avant est différent |
769 |
if ($contrainte['contrainte_sousgroupe'] |
770 |
!= $contrainte_before['contrainte_sousgroupe']) { |
771 |
// Si l'identifiant de la sous-catégorie d'avant est vide |
772 |
if ($contrainte_before['contrainte_sousgroupe'] != '') { |
773 |
// Ferme le fieldset |
774 |
$form->setFieldset($contrainte_before['key'], 'F'); |
775 |
} |
776 |
|
777 |
// Si la contrainte a un sous-groupe |
778 |
if ($contrainte['contrainte_sousgroupe'] != null) { |
779 |
// Ouvre le fieldset |
780 |
$form->setFieldset($key, 'D', |
781 |
$contrainte['contrainte_sousgroupe'], |
782 |
"startClosed text_capitalize"); |
783 |
} |
784 |
} |
785 |
// |
786 |
$form->setBloc($key, 'DF', "", ""); |
787 |
|
788 |
// Sauvegarde les données de la contrainte |
789 |
$contrainte_before['contrainte_groupe'] = |
790 |
$contrainte['contrainte_groupe']; |
791 |
$contrainte_before['contrainte_sousgroupe'] = |
792 |
$contrainte['contrainte_sousgroupe']; |
793 |
$contrainte_before['key'] = $key; |
794 |
} |
795 |
// Ferme le dernier fieldset |
796 |
$form->setFieldset($contrainte_before['key'], 'F'); |
797 |
|
798 |
} |
799 |
|
800 |
// Si la liste des contraintes est vide |
801 |
if (empty($this->listContraintes)) { |
802 |
// On affiche un message |
803 |
$form->setBloc('dossier_contrainte', 'D', _("Aucune contraintes."), |
804 |
"noDataForm"); |
805 |
} |
806 |
|
807 |
} |
808 |
|
809 |
// Pas en mode ajout |
810 |
if ($maj != 0) { |
811 |
// Ouvre le fieldset |
812 |
$form->setFieldset('texte_complete', 'DF', _("dossier_contrainte"), ""); |
813 |
} |
814 |
|
815 |
} |
816 |
|
817 |
/** |
818 |
* Permet de modifier l'affichage des boutons dans le sousformulaire. |
819 |
* @param string $datasubmit Données a transmettre |
820 |
* @param integer $maj Mode du formulaire |
821 |
* @param array $val Valeur du formulaire |
822 |
*/ |
823 |
function boutonsousformulaire($datasubmit, $maj, $val) { |
824 |
|
825 |
// |
826 |
if (!$this->correct) { |
827 |
// Action par défaut |
828 |
$onclick = "affichersform('".get_class($this)."', |
829 |
'$datasubmit', this.form);return false;"; |
830 |
// |
831 |
switch ($maj) { |
832 |
case 0: |
833 |
$bouton = _("Appliquer les changements"); |
834 |
// Action en mode ajouter |
835 |
$onclick = "dossierContrainteValidationForm(".get_class($this).", |
836 |
'../scr/form.php?obj=dossier_contrainte&action=5&idx=0', |
837 |
this.form);return false;"; |
838 |
break; |
839 |
case 1: |
840 |
$bouton = _("Modifier"); |
841 |
break; |
842 |
case 2: |
843 |
$bouton = _("Supprimer"); |
844 |
break; |
845 |
} |
846 |
// |
847 |
$params = array( |
848 |
"value" => $bouton, |
849 |
"onclick" => $onclick, |
850 |
); |
851 |
// |
852 |
$this->f->layout->display_form_button($params); |
853 |
} |
854 |
} |
855 |
|
856 |
/** |
857 |
* Permet de modifier le bouton retour du sousformulaire. |
858 |
* @param mixed $idxformulaire Identifiant du formulaire parent |
859 |
* @param string $retourformulaire Formulaire parent |
860 |
* @param array $val Valeurs du formulaire |
861 |
* @param string $objsf Objet du sousformulaire |
862 |
* @param integer $premiersf Premier enregistrement affiché |
863 |
* @param string $tricolsf Colonne triée |
864 |
* @param integer $validation Validation du formulaire |
865 |
* @param mixed $idx Identifiant de l'enregistrement |
866 |
* @param integer $maj Mode du formulaire |
867 |
* @param srting $retour Retour du formulaire |
868 |
*/ |
869 |
function retoursousformulaire($idxformulaire, $retourformulaire, $val, |
870 |
$objsf, $premiersf, $tricolsf, $validation, |
871 |
$idx, $maj, $retour) { |
872 |
|
873 |
// Si le formulaire parent est dossier |
874 |
if($retourformulaire === "dossier_instruction" |
875 |
|| $retourformulaire==='dossier_instruction_tous_clotures' |
876 |
|| $retourformulaire==='dossier_instruction_mes_clotures' |
877 |
|| $retourformulaire==='dossier_instruction_tous_encours' |
878 |
|| $retourformulaire==='dossier_instruction_mes_encours') { |
879 |
|
880 |
// |
881 |
echo "\n<a class=\"retour\" "; |
882 |
echo "href=\"#\" "; |
883 |
|
884 |
echo "onclick=\"ajaxIt('".$objsf."', '"; |
885 |
echo "../scr/sousform.php" |
886 |
."?obj=dossier_contrainte" |
887 |
."&action=4" |
888 |
."&idx=$idxformulaire" |
889 |
."&retourformulaire=$retourformulaire" |
890 |
."&idxformulaire=$idxformulaire');\""; |
891 |
echo "\" "; |
892 |
echo ">"; |
893 |
// |
894 |
echo _("Retour"); |
895 |
// |
896 |
echo "</a>\n"; |
897 |
|
898 |
} else { |
899 |
// |
900 |
parent::retoursousformulaire($idxformulaire, $retourformulaire, $val, |
901 |
$objsf, $premiersf, $tricolsf, $validation, |
902 |
$idx, $maj, $retour); |
903 |
} |
904 |
} |
905 |
|
906 |
/** |
907 |
* Permet d’effectuer des actions avant la modification des données dans la base. |
908 |
* @param mixed $id Identifiant de l'enregistrement |
909 |
* @param object &$db Objet de la base de données |
910 |
* @param array $val Valeurs du formulaire |
911 |
* @param boolean $DEBUG Mode DEBUG |
912 |
*/ |
913 |
function triggermodifier($id, &$db, $val, $DEBUG) { |
914 |
// Si le texte complété de la liaison venait du SIG et qu'il a été |
915 |
// modifié |
916 |
if ($this->valF['reference'] == 't' |
917 |
&& $this->getVal('texte_complete') != $this->valF['texte_complete']) { |
918 |
// Indique que ce n'est pas le texte complété du SIG |
919 |
$this->valF['reference'] = 'f'; |
920 |
} |
921 |
} |
922 |
|
923 |
/** |
924 |
* Recupère le libellé de la contrainte. |
925 |
* @param integer $contrainte Identifiant de la contrainte |
926 |
* |
927 |
* @return string Libellé de la contrainte |
928 |
*/ |
929 |
function getLibelleFromContrainte($contrainte) { |
930 |
|
931 |
// Initialisation résultat |
932 |
$libelle = ''; |
933 |
|
934 |
// Si la condition n'est pas vide |
935 |
if ($contrainte != "" |
936 |
&& $contrainte != null |
937 |
&& is_numeric($contrainte)) { |
938 |
|
939 |
// Requête SQL |
940 |
$sql = "SELECT libelle |
941 |
FROM ".DB_PREFIXE."contrainte |
942 |
WHERE contrainte = ".$contrainte; |
943 |
$this->f->addToLog(__METHOD__."(".$contrainte.") : db->getOne(\"".$sql."\")", |
944 |
VERBOSE_MODE); |
945 |
$libelle = $this->f->db->getOne($sql); |
946 |
$this->f->isDatabaseError($libelle); |
947 |
} |
948 |
|
949 |
// Retourne résultat |
950 |
return $libelle; |
951 |
} |
952 |
|
953 |
/** |
954 |
* Récupère le texte de la contrainte. |
955 |
* @param integer $contrainte Identifiant de la contrainte |
956 |
* |
957 |
* @return string Texte de la contrainte |
958 |
*/ |
959 |
function getTexteFromContrainte($contrainte) { |
960 |
|
961 |
// Initialisation résultat |
962 |
$texte = ''; |
963 |
|
964 |
// Si la condition n'est pas vide |
965 |
if ($contrainte != "" |
966 |
&& $contrainte != null |
967 |
&& is_numeric($contrainte)) { |
968 |
|
969 |
// Requête SQL |
970 |
$sql = "SELECT texte |
971 |
FROM ".DB_PREFIXE."contrainte |
972 |
WHERE contrainte = ".$contrainte; |
973 |
$this->f->addToLog(__METHOD__."(".$contrainte.") : db->getOne(\"".$sql."\")", VERBOSE_MODE); |
974 |
$texte = $this->f->db->getOne($sql); |
975 |
$this->f->isDatabaseError($texte); |
976 |
} |
977 |
|
978 |
// Retourne résultat |
979 |
return $texte; |
980 |
} |
981 |
|
982 |
/** |
983 |
* Récupère l'identifiant de la liaison. |
984 |
* @param string $dossier Identifiant du dossier |
985 |
* @param integer $contrainte Identifiant de la contrainte |
986 |
* @param object $f Objet de la classe utils |
987 |
* |
988 |
* @return object Résultat de la requête |
989 |
*/ |
990 |
function getDossierContrainte($dossier, $contrainte, $f) { |
991 |
|
992 |
// Requête SQL |
993 |
$sql = "SELECT dossier_contrainte |
994 |
FROM ".DB_PREFIXE."dossier_contrainte |
995 |
WHERE dossier = '".$dossier."' |
996 |
AND contrainte = ".$contrainte; |
997 |
$f->addToLog("getDossierContrainte() : db->getOne(\"".$sql."\")", VERBOSE_MODE); |
998 |
$res = $f->db->getOne($sql); |
999 |
$f->isDatabaseError($res); |
1000 |
|
1001 |
// Retourne résultat |
1002 |
return $res; |
1003 |
} |
1004 |
|
1005 |
/** |
1006 |
* VIEW - view_add |
1007 |
* |
1008 |
* Cette vue permet de traiter les contraintes postées et d'afficher |
1009 |
* le résultat de ce traitement en AJAX. |
1010 |
* |
1011 |
* @return void |
1012 |
*/ |
1013 |
function view_add() { |
1014 |
// Vérification de l'accessibilité sur l'élément |
1015 |
$this->checkAccessibility(); |
1016 |
// Désactivation des logs cause AJAX |
1017 |
$this->f->disableLog(); |
1018 |
// Récupération des POST |
1019 |
$postedValue = $this->f->get_submitted_post_value(); |
1020 |
$decodedPost = array(); |
1021 |
foreach ($postedValue as $key => $value) { |
1022 |
$decodedPost[$key] = utf8_decode($value); |
1023 |
} |
1024 |
|
1025 |
// Identifiant du dossier |
1026 |
$dossier = $decodedPost['dossier']; |
1027 |
|
1028 |
// Définition des variables pour le message retourné |
1029 |
$listAddContrainte = array(); |
1030 |
// $listDeleteContrainte = array(); |
1031 |
$message = ""; |
1032 |
// Message pour les ajouts |
1033 |
$messageAdd = _("La contrainte %s a ete ajoutee au dossier."); |
1034 |
|
1035 |
// Pour chaque champ récupéré |
1036 |
foreach ($decodedPost as $key => $value) { |
1037 |
// Mot-clés à rechercher |
1038 |
$search_field = 'contrainte_'; |
1039 |
// Si le mot-clés est présent dans l'identifiant du champ |
1040 |
if (strpos($key, $search_field) !== false) { |
1041 |
// Récupération de l'identifiant de la contrainte |
1042 |
$id_contrainte = str_replace('contrainte_', '', $key); |
1043 |
// Si la valeur du champ est 'Oui' |
1044 |
if ($value === 'Oui') { |
1045 |
// Instancie la classe dossier_contrainte |
1046 |
$dossier_contrainte = new dossier_contrainte("]", $this->f->db, DEBUG); |
1047 |
// Définit les valeurs |
1048 |
$val = array( |
1049 |
'dossier_contrainte' => ']', |
1050 |
'dossier' => $dossier, |
1051 |
'contrainte' => $id_contrainte, |
1052 |
'texte_complete' => $this->getTexteFromContrainte($id_contrainte), |
1053 |
'reference' => false |
1054 |
); |
1055 |
// Ajoute l'enregistrement |
1056 |
$ajouter = $dossier_contrainte->ajouter($val, $this->f->db, DEBUG); |
1057 |
// Si la contrainte est ajouté |
1058 |
if ($ajouter == true) { |
1059 |
// Ajoute le libellé de la contrainte au tableau |
1060 |
$listAddContrainte[] = $this->getLibelleFromContrainte($id_contrainte); |
1061 |
} |
1062 |
} |
1063 |
} |
1064 |
} |
1065 |
|
1066 |
// Pour chaque libellé sauvegardé dans les tableaux on compose un message |
1067 |
foreach ($listAddContrainte as $key => $value) { |
1068 |
$message .= sprintf($messageAdd, "<b>".$value."</b>")."<br/>"; |
1069 |
} |
1070 |
|
1071 |
// Si le message à retourner est vide |
1072 |
if ($message == "") { |
1073 |
// Message par défaut |
1074 |
$message = _("Aucune action effectuee."); |
1075 |
} |
1076 |
|
1077 |
// Retourne le message |
1078 |
echo json_encode($message); |
1079 |
} |
1080 |
|
1081 |
/** |
1082 |
* Si le dossier d'instruction auquel est rattachée la consultation est |
1083 |
* cloturé, on affiche pas les liens du portlet. |
1084 |
* |
1085 |
* @return boolean true si non cloturé false sinon |
1086 |
*/ |
1087 |
function is_dossier_instruction_not_closed() { |
1088 |
$idxformulaire = $this->getParameter("idxformulaire"); |
1089 |
$retourformulaire = $this->getParameter("retourformulaire"); |
1090 |
//Si le dossier d'instruction auquel est rattachée la consultation est |
1091 |
//cloturé, on affiche pas les liens du portlet |
1092 |
if ( $idxformulaire != '' && |
1093 |
( |
1094 |
$retourformulaire == 'dossier' || |
1095 |
$retourformulaire == 'dossier_instruction' || |
1096 |
$retourformulaire == 'dossier_instruction_mes_encours' || |
1097 |
$retourformulaire == 'dossier_instruction_tous_encours' || |
1098 |
$retourformulaire == 'dossier_instruction_mes_clotures' || |
1099 |
$retourformulaire == 'dossier_instruction_tous_clotures' |
1100 |
)){ |
1101 |
|
1102 |
//On récuppère le statut du dossier d'instruction |
1103 |
$statut = $this->f->getStatutDossier($idxformulaire); |
1104 |
if ( $this->f->isUserInstructeur() && $statut == "cloture" ){ |
1105 |
return false; |
1106 |
} |
1107 |
} |
1108 |
return true; |
1109 |
} |
1110 |
|
1111 |
/** |
1112 |
* Défini si l'utilisateur est un intructeur qui en correspond à la division |
1113 |
* du dossier. |
1114 |
* |
1115 |
* @return boolean true si correspond false sinon |
1116 |
*/ |
1117 |
function is_instructeur_from_division() { |
1118 |
|
1119 |
if ($this->f->isUserInstructeur() |
1120 |
&& isset($this->f->om_utilisateur["division"]) |
1121 |
&& $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) { |
1122 |
// |
1123 |
return false; |
1124 |
} |
1125 |
return true; |
1126 |
} |
1127 |
|
1128 |
/** |
1129 |
* Cette méthode permet de récupérer le code de division correspondant |
1130 |
* au dossier sur lequel on se trouve. |
1131 |
* |
1132 |
* @return string Code de la division du dossier en cours |
1133 |
*/ |
1134 |
function getDivisionFromDossier() { |
1135 |
|
1136 |
// Cette méthode peut être appelée plusieurs fois lors d'une requête. |
1137 |
// Pour éviter de refaire le traitement de recherche de la division |
1138 |
// alors on vérifie si nous ne l'avons pas déjà calculé. |
1139 |
if ($this->_division_from_dossier != NULL) { |
1140 |
// Logger |
1141 |
$this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE); |
1142 |
// On retourne la valeur déjà calculée |
1143 |
return $this->_division_from_dossier; |
1144 |
} |
1145 |
|
1146 |
// Par défaut, on définit la valeur du dossier à NULL |
1147 |
$dossier = NULL; |
1148 |
// Test sur le mode et le contexte du formulaire |
1149 |
if (($this->getParameter("maj") == 0 or $this->getParameter("maj") == 40) |
1150 |
&& ($this->getParameter("retourformulaire") == "dossier" |
1151 |
|| $this->getParameter("retourformulaire") == "dossier_instruction" |
1152 |
|| $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours" |
1153 |
|| $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours" |
1154 |
|| $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures" |
1155 |
|| $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) { |
1156 |
// Si on se trouve en mode AJOUT (seul mode où l'enregistrement |
1157 |
// n'existe pas en base de données) ET que nous nous trouvons |
1158 |
// dans le contexte d'un dossier d'instruction alors on récupère |
1159 |
// le numéro de dossier depuis le paramètre 'idxformulaire' |
1160 |
$dossier = $this->getParameter("idxformulaire"); |
1161 |
} else { |
1162 |
// Sinon on récupère le numéro de dossier dans le champs dossier de |
1163 |
// l'enregistrement (en base de données) |
1164 |
$dossier = $this->getVal("dossier"); |
1165 |
} |
1166 |
|
1167 |
// On appelle la méthode de la classe utils qui renvoi le code de la |
1168 |
// division d'un dossier, on la stocke pour ne pas refaire le calcul au |
1169 |
// prochain appel de cette méthode |
1170 |
$this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier); |
1171 |
// Logger |
1172 |
$this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE); |
1173 |
// On retourne la valeur retournée |
1174 |
return $this->_division_from_dossier; |
1175 |
|
1176 |
} |
1177 |
|
1178 |
function is_editable(){ |
1179 |
|
1180 |
if ($this->f->can_bypass("dossier_contrainte", "modifier")){ |
1181 |
return true; |
1182 |
} |
1183 |
|
1184 |
if ($this->is_dossier_instruction_not_closed()&&$this->is_instructeur_from_division()){ |
1185 |
return true; |
1186 |
} |
1187 |
return false; |
1188 |
} |
1189 |
|
1190 |
function is_deletable(){ |
1191 |
|
1192 |
if ($this->f->can_bypass("dossier_contrainte", "supprimer")){ |
1193 |
return true; |
1194 |
} |
1195 |
|
1196 |
if ($this->is_dossier_instruction_not_closed()&&$this->is_instructeur_from_division()){ |
1197 |
return true; |
1198 |
} |
1199 |
return false; |
1200 |
} |
1201 |
}// fin classe |
1202 |
|
1203 |
?> |