/[openfoncier]/trunk/obj/dossier_contrainte.class.php
ViewVC logotype

Contents of /trunk/obj/dossier_contrainte.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3455 - (show annotations)
Thu Apr 30 17:21:19 2015 UTC (9 years, 9 months ago) by vpihour
File size: 48582 byte(s)
Correction de la gestion des droits dans tous les objets liés au dossier d'instruction.

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&amp;action=%1$s&amp;idx=%2$s&amp;tri=&amp;premier=0&amp;recherche=&amp;objsf=dossier_contrainte&amp;premiersf=0&amp;retourformulaire=%3$s&amp;idxformulaire=%4$s&amp;trisf=&amp;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 ?>

Properties

Name Value
svn:executable *

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26