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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9282 - (show annotations)
Fri Apr 10 16:44:23 2020 UTC (4 years, 9 months ago) by softime
File size: 170372 byte(s)
* Merge de la branche de développement compat-php dans le trunk

1 <?php
2 /**
3 * Ce fichier est destine a permettre la surcharge de certaines methodes de
4 * la classe om_application pour des besoins specifiques de l'application
5 *
6 * @package openmairie_exemple
7 * @version SVN : $Id: utils.class.php 6132 2016-03-09 09:18:18Z stimezouaght $
8 */
9
10 /**
11 *
12 */
13 if (file_exists("../dyn/locales.inc.php") === true) {
14 require_once "../dyn/locales.inc.php";
15 }
16
17 /**
18 *
19 */
20 if (file_exists("../dyn/include.inc.php") === true) {
21 require_once "../dyn/include.inc.php";
22 } else {
23 /**
24 * Définition de la constante représentant le chemin d'accès au framework
25 */
26 define("PATH_OPENMAIRIE", getcwd()."/../core/");
27
28 /**
29 * TCPDF specific config
30 */
31 define('K_TCPDF_EXTERNAL_CONFIG', true);
32 define('K_TCPDF_CALLS_IN_HTML', true);
33
34 /**
35 * Dépendances PHP du framework
36 * On modifie la valeur de la directive de configuration include_path en
37 * fonction pour y ajouter les chemins vers les librairies dont le framework
38 * dépend.
39 */
40 set_include_path(
41 get_include_path().PATH_SEPARATOR.implode(
42 PATH_SEPARATOR,
43 array(
44 getcwd()."/../php/pear",
45 getcwd()."/../php/db",
46 getcwd()."/../php/fpdf",
47 getcwd()."/../php/phpmailer",
48 getcwd()."/../php/tcpdf",
49 )
50 )
51 );
52
53 /**
54 * Retourne l'URL de la racine d'openADS.
55 * Exemple : http://localhost/openads/
56 */
57 if (!function_exists("get_base_url")) {
58 function get_base_url() {
59 // Récupération du protocole
60 $protocol = 'http';
61 if (isset($_SERVER['HTTPS'])) {
62 $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http";
63 }
64 // Récupération du domaine
65 $domain = $_SERVER['HTTP_HOST'];
66 // Récupération du port
67 $port = $_SERVER['SERVER_PORT'];
68 $disp_port = ($protocol == 'http' && $port == 80 || $protocol == 'https' && $port == 443) ? '' : ":$port";
69 // Construction du chemin restant
70 $base_url = str_replace('app', '', rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
71 //
72 return $protocol."://".$domain.$disp_port.$base_url;
73 }
74 }
75 define("PATH_BASE_URL", get_base_url());
76 }
77
78 /**
79 *
80 */
81 if (file_exists("../dyn/debug.inc.php") === true) {
82 require_once "../dyn/debug.inc.php";
83 }
84
85 /**
86 *
87 */
88 (defined("PATH_OPENMAIRIE") ? "" : define("PATH_OPENMAIRIE", ""));
89
90 /**
91 *
92 */
93 require_once PATH_OPENMAIRIE."om_application.class.php";
94
95 /**
96 *
97 */
98 class utils extends application {
99
100 /**
101 * Gestion du nom de l'application.
102 *
103 * @var mixed Configuration niveau application.
104 */
105 protected $_application_name = "openADS";
106
107 /**
108 * Titre HTML.
109 *
110 * @var mixed Configuration niveau application.
111 */
112 protected $html_head_title = ":: openMairie :: openADS";
113
114 /**
115 * Gestion du nom de la session.
116 *
117 * @var mixed Configuration niveau application.
118 */
119 protected $_session_name = "openads";
120
121 /**
122 * Gestion du favicon de l'application.
123 *
124 * @var mixed Configuration niveau application.
125 */
126 var $html_head_favicon = '../app/img/favicon.ico';
127
128 /**
129 * Gestion du mode de gestion des permissions.
130 *
131 * @var mixed Configuration niveau application.
132 */
133 protected $config__permission_by_hierarchical_profile = false;
134
135 // {{{
136
137 /**
138 * SURCHARGE DE LA CLASSE OM_APPLICATION.
139 *
140 * @see Documentation sur la méthode parent 'om_application:getCollectivite'.
141 */
142 function getCollectivite($om_collectivite_idx = null) {
143 // On vérifie si une valeur a été passée en paramètre ou non.
144 if ($om_collectivite_idx === null) {
145 // Cas d'utilisation n°1 : nous sommes dans le cas où on
146 // veut récupérer les informations de la collectivité de
147 // l'utilisateur et on stocke l'info dans un flag.
148 $is_get_collectivite_from_user = true;
149 // On initialise l'identifiant de la collectivité
150 // à partir de la variable de session de l'utilisateur.
151 $om_collectivite_idx = $_SESSION['collectivite'];
152 } else {
153 // Cas d'utilisation n°2 : nous sommes dans le cas où on
154 // veut récupérer les informations de la collectivité
155 // passée en paramètre et on stocke l'info dans le flag.
156 $is_get_collectivite_from_user = false;
157 }
158 //
159 $collectivite_parameters = parent::getCollectivite($om_collectivite_idx);
160
161 //// BEGIN - SURCHARGE OPENADS
162
163 // Ajout du paramétrage du sig pour la collectivité
164 if (file_exists("../dyn/var.inc")) {
165 include "../dyn/var.inc";
166 }
167 if (file_exists("../dyn/sig.inc.php")) {
168 include "../dyn/sig.inc.php";
169 }
170 if (!isset($sig_externe)) {
171 $sig_externe = "sig-default";
172 }
173 $idx_multi = $this->get_idx_collectivite_multi();
174
175 if (isset($collectivite_parameters['om_collectivite_idx'])
176 && isset($conf[$sig_externe][$collectivite_parameters['om_collectivite_idx']])
177 && isset($conf[$sig_externe]["sig_treatment_mod"])
178 && isset($collectivite_parameters["option_sig"])
179 && $collectivite_parameters["option_sig"] == "sig_externe"
180 ) {
181
182 // Cas numéro 1 : conf sig définie sur la collectivité et option sig active
183 $collectivite_parameters["sig"] = $conf[$sig_externe][$collectivite_parameters['om_collectivite_idx']];
184 $collectivite_parameters["sig"]["sig_treatment_mod"] = $conf[$sig_externe]["sig_treatment_mod"];
185
186 } elseif($idx_multi != ''
187 && isset($conf[$sig_externe][$idx_multi])
188 && isset($conf[$sig_externe]["sig_treatment_mod"])
189 && isset($collectivite_parameters["option_sig"])
190 && $collectivite_parameters["option_sig"] == "sig_externe") {
191 // Cas numéro : conf sig définie sur la collectivité multi et
192 // option_sig activé pour la collectivité mono
193 $collectivite_parameters["sig"] = $conf[$sig_externe][$idx_multi];
194 $collectivite_parameters["sig"]["sig_treatment_mod"] = $conf[$sig_externe]["sig_treatment_mod"];
195 }
196
197 //// END - SURCHARGE OPENADS
198
199 // Si on se trouve dans le cas d'utilisation n°1
200 if ($is_get_collectivite_from_user === true) {
201 // Alors on stocke dans l'attribut collectivite le tableau de
202 // paramètres pour utilisation depuis la méthode 'getParameter'.
203 $this->collectivite = $collectivite_parameters;
204 }
205 // On retourne le tableau de paramètres.
206 return $collectivite_parameters;
207 }
208
209 /**
210 * Retourne l'identifiant de la collectivité multi ou l'identifiant de la
211 * seule collectivité dans le cas d'une installation mono.
212 *
213 * @return integer Identifiant de la collectivité multi.
214 */
215 public function get_idx_collectivite_multi() {
216 // Récupère l'identifiant de la collectivité de niveau 2
217 $sql = "SELECT om_collectivite FROM ".DB_PREFIXE."om_collectivite WHERE niveau = '2'";
218 $idx = $this->db->getOne($sql);
219 $this->addToLog(__METHOD__.": db->getOne(\"".$sql."\");", VERBOSE_MODE);
220 $this->isDatabaseError($idx);
221
222 // S'il n'y a pas de collectivité de niveau 2
223 if ($idx == null || $idx == '') {
224
225 // Compte le nombre de collectivité
226 $sql = "SELECT count(om_collectivite) FROM ".DB_PREFIXE."om_collectivite";
227 $count = $this->db->getOne($sql);
228 $this->addToLog(__METHOD__.": db->getOne(\"".$sql."\");", VERBOSE_MODE);
229 $this->isDatabaseError($count);
230
231 // S'il y qu'une collectivité
232 if ($count == 1) {
233
234 // Récupère l'identifiant de la seule collectivité
235 $sql = "SELECT om_collectivite FROM ".DB_PREFIXE."om_collectivite WHERE niveau = '1'";
236 $idx = $this->db->getOne($sql);
237 $this->addToLog(__METHOD__.": db->getOne(\"".$sql."\");", VERBOSE_MODE);
238 $this->isDatabaseError($idx);
239 }
240
241 }
242
243 // Retourne l'identifiant
244 return $idx;
245 }
246
247
248 /**
249 * Retourne l'identifiant de la collectivité de l'element de la table passée
250 * en paramètre.
251 *
252 * @param string $table Table de l'element.
253 * @param mixed $id Identifiant de l'element.
254 *
255 * @return string identifiant de la collectivite ou false si l'element n'existe pas.
256 */
257 public function get_collectivite_of_element($table, $id) {
258 $instance = $this->get_inst__om_dbform(array(
259 "obj" => $table,
260 "idx" => $id,
261 ));
262 if($instance->getVal($instance->clePrimaire) != '') {
263 return $instance->getVal('om_collectivite');
264 }
265 return false;
266 }
267
268
269 /**
270 * Retourne vrai si la collectivité passée en paramètre ou la collectivité
271 * de l'utilisateur connecté est mono.
272 *
273 * @param string $id Identifiant de la collectivité.
274 *
275 * @return boolean
276 */
277 public function isCollectiviteMono($id = null) {
278 // Si on ne passe pas de collectivité en argument
279 if ($id == null) {
280 // On vérifie la collectivité stockée en session de l'utilisateur
281 // connecté
282 $res = false;
283 if ($_SESSION['niveau'] === '1') {
284 //
285 $res = true;
286 }
287 //
288 return $res;
289 }
290
291 // Requête SQL
292 $sql = "SELECT niveau FROM ".DB_PREFIXE."om_collectivite WHERE om_collectivite = ".$id;
293 $niveau = $this->db->getOne($sql);
294 $this->addToLog(__METHOD__.": db->getOne(\"".$sql."\");", VERBOSE_MODE);
295 $this->isDatabaseError($niveau);
296
297 //
298 if ($niveau === '1') {
299 //
300 return true;
301 }
302 //
303 return false;
304 }
305
306
307 // }}}
308
309 // {{{
310
311 var $om_utilisateur = array();
312 var $user_is_instr = NULL;
313 var $user_is_service = NULL;
314 var $user_is_admin = NULL;
315 var $user_is_service_ext = NULL;
316 var $user_is_qualificateur = NULL;
317 var $user_is_chef = NULL;
318 var $user_is_divisionnaire = NULL;
319 var $user_is_service_int = NULL;
320
321 /**
322 * Méthode de récupération des informations de l'utilisateur connecté.
323 */
324 function getUserInfos() {
325
326 // Si l'utilisateur est loggé $_SESSION existe
327 if(isset($_SESSION['login']) AND !empty($_SESSION['login'])) {
328
329 // Récupération des infos utilisateur
330 $sqlUser = "SELECT om_utilisateur, nom, email, login, om_collectivite, om_profil ".
331 "FROM ".DB_PREFIXE."om_utilisateur WHERE login = '".$_SESSION['login']."'";
332 $resUser=$this->db->query($sqlUser);
333 $this->addToLog("getUserInfos(): db->query(\"".$sqlUser."\");", VERBOSE_MODE);
334 if ( database::isError($resUser)){
335 die();
336 }
337 $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);
338
339 // Récupère le profil et test si c'est un
340 $sqlProfil = "SELECT libelle FROM ".DB_PREFIXE."om_profil WHERE om_profil = ".$this->om_utilisateur['om_profil'];
341 $resProfil=$this->db->getOne($sqlProfil);
342 $this->addToLog("getUserInfos(): db->getOne(\"".$sqlProfil."\");", VERBOSE_MODE);
343 if (database::isError($resProfil)){
344 die();
345 }
346 // Sauvegarde le libelle du profil
347 $this->om_utilisateur["libelle_profil"] = $resProfil;
348
349 // si c'est un administrateur technique
350 // XXX Mauvaise méthode, il faut utiliser isAccredited
351 if ($resProfil == "ADMINISTRATEUR TECHNIQUE"
352 || $resProfil == "ADMINISTRATEUR FONCTIONNEL") {
353 $this->user_is_admin = true;
354 } else {
355 $this->user_is_admin = false;
356 }
357
358 //si c'est un service externe
359 if ($resProfil == "SERVICE CONSULTÉ") {
360 $this->user_is_service_ext = true;
361 } else {
362 $this->user_is_service_ext = false;
363 }
364
365 //si c'est un service interne
366 if ($resProfil == "SERVICE CONSULTÉ INTERNE") {
367 $this->user_is_service_int = true;
368 } else {
369 $this->user_is_service_int = false;
370 }
371
372 // si c'est un qualificateur
373 if ($resProfil == "QUALIFICATEUR") {
374 $this->user_is_qualificateur = true;
375 } else {
376 $this->user_is_qualificateur = false;
377 }
378
379 // si c'est un chef de service
380 if ($resProfil == "CHEF DE SERVICE") {
381 $this->user_is_chef = true;
382 } else {
383 $this->user_is_chef = false;
384 }
385
386 // si c'est un divisionnaire
387 if ($resProfil == "DIVISIONNAIRE") {
388 $this->user_is_divisionnaire = true;
389 } else {
390 $this->user_is_divisionnaire = false;
391 }
392
393 // Récupération des infos instructeur
394 $sqlInstr = "SELECT instructeur.instructeur, instructeur.nom, instructeur.telephone,
395 division.division, division.code, division.libelle ".
396 "FROM ".DB_PREFIXE."instructeur INNER JOIN ".DB_PREFIXE."division ON division.division=instructeur.division ".
397 "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
398 $resInstr=$this->db->query($sqlInstr);
399 $this->addToLog("getUserInfos(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);
400 if ( database::isError($resInstr)){
401 die();
402 }
403 $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);
404 // Si il y a un resultat c'est un instructeur
405 if (is_array($tempInstr) === true && count($tempInstr) > 0) {
406 $this->user_is_instr=true;
407 $this->om_utilisateur = array_merge($this->om_utilisateur,$tempInstr);
408 } else {
409 $this->user_is_instr=false;
410 }
411
412 // Récupération des infos de services consultés
413 $sqlServ = "SELECT service.service, service.abrege, service.libelle ".
414 "FROM ".DB_PREFIXE."service ".
415 "INNER JOIN ".DB_PREFIXE."lien_service_om_utilisateur ON lien_service_om_utilisateur.service=service.service ".
416 "WHERE lien_service_om_utilisateur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
417 $resServ=$this->db->query($sqlServ);
418 $this->addToLog("getUserInfos(): db->query(\"".$sqlServ."\");", VERBOSE_MODE);
419 if ( database::isError($resServ)){
420 die();
421 }
422
423 while ($tempServ=&$resServ->fetchRow(DB_FETCHMODE_ASSOC)) {
424 $this->om_utilisateur['service'][]=$tempServ;
425 }
426 // Si il y a un resultat c'est un utilisateur de service
427 if(isset($this->om_utilisateur['service'])) {
428 $this->user_is_service=true;
429 } else {
430 $this->user_is_service=false;
431 }
432 }
433 }
434
435 /**
436 * getter user_is_service
437 */
438 function isUserService() {
439 //
440 if (is_null($this->user_is_service)) {
441 //
442 $this->getUserInfos();
443 }
444 //
445 return $this->user_is_service;
446 }
447
448 /**
449 * getter user_is_instr
450 */
451 function isUserInstructeur() {
452 //
453 if (is_null($this->user_is_instr)) {
454 //
455 $this->getUserInfos();
456 }
457 //
458 return $this->user_is_instr;
459 }
460
461 function isUserAdministrateur() {
462 //
463 if (is_null($this->user_is_admin)) {
464 //
465 $this->getUserInfos();
466 }
467 //
468 return $this->user_is_admin;
469 }
470
471 /**
472 * getter user_is_service_ext
473 */
474 function isUserServiceExt() {
475 //
476 if (is_null($this->user_is_service_ext)) {
477 //
478 $this->getUserInfos();
479 }
480 //
481 return $this->user_is_service_ext;
482 }
483
484 /**
485 * getter user_is_service_int
486 */
487 function isUserServiceInt() {
488 //
489 if (is_null($this->user_is_service_int)) {
490 //
491 $this->getUserInfos();
492 }
493 //
494 return $this->user_is_service_int;
495 }
496
497 /**
498 * getter user_is_qualificateur
499 */
500 function isUserQualificateur() {
501 //
502 if (is_null($this->user_is_qualificateur)) {
503 //
504 $this->getUserInfos();
505 }
506 //
507 return $this->user_is_qualificateur;
508 }
509
510 /**
511 * getter user_is_chef
512 */
513 function isUserChef() {
514 //
515 if (is_null($this->user_is_chef)) {
516 //
517 $this->getUserInfos();
518 }
519 //
520 return $this->user_is_chef;
521 }
522
523 /**
524 * getter user_is_divisionnaire
525 */
526 function isUserDivisionnaire() {
527 //
528 if (is_null($this->user_is_divisionnaire)) {
529 //
530 $this->getUserInfos();
531 }
532 //
533 return $this->user_is_divisionnaire;
534 }
535
536 /**
537 * Méthode permettant de définir si l'utilisateur connecté peut ajouter un
538 * événement d'instruction
539 *
540 * @param integer $idx identifiant du dossier
541 * @param string $obj objet
542 *
543 * @return boolean true si il peut false sinon
544 */
545 function isUserCanAddObj($idx, $obj) {
546 // Si il à le droit "bypass" il peut ajouter
547 if($this->isAccredited($obj."_ajouter_bypass") === true) {
548 return true;
549 }
550 if($this->isAccredited(array($obj."_ajouter", $obj), "OR") === false) {
551 return false;
552 }
553 $return = false;
554
555 $object_instance = $this->get_inst__om_dbform(array(
556 "obj" => $obj,
557 "idx" => "]",
558 ));
559 // Si il n'est pas dans la même division on défini le retour comme faux
560 // à moins qu'il ai un droit de changement de decision
561 if($this->isUserInstructeur() === true &&
562 ($object_instance->getDivisionFromDossier($idx) == $_SESSION["division"] or
563 ($obj == "instruction" &&
564 $object_instance->isInstrCanChangeDecision($idx) === true))) {
565
566 $return = true;
567 }
568
569 return $return;
570 }
571
572
573 /**
574 * Ajout de variables de session contenant la division pour permettre une
575 * utilisation plus efficace dans les requetes.
576 *
577 * @param array $utilisateur Tableau d'informations de l'utilisateur.
578 */
579 function triggerAfterLogin($utilisateur = NULL) {
580 // Récupération de la division de l'utilisateur.
581 $sql = "SELECT instructeur.division, division.code
582 FROM ".DB_PREFIXE."instructeur
583 LEFT JOIN ".DB_PREFIXE."division
584 ON instructeur.division = division.division
585 WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";
586 $res = $this->db->query($sql);
587 $this->addToLog(
588 __METHOD__."(): db->query(\"".$sql."\");",
589 VERBOSE_MODE
590 );
591 if (database::isError($res)) {
592 die();
593 }
594 $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
595 // Enregistrement de la division en session
596 if (isset($row["division"]) && $row["division"] != NULL) {
597 $_SESSION["division"] = $row["division"];
598 $_SESSION["division_code"] = $row["code"];
599 } else {
600 $_SESSION["division"] = "0";
601 $_SESSION["division_code"] = "";
602 }
603 // Récupération du paramétrage des groupes de l'utilisateur.
604 $sqlGroupes = "SELECT groupe.code, lien_om_utilisateur_groupe.confidentiel, lien_om_utilisateur_groupe.enregistrement_demande, groupe.libelle
605 FROM ".DB_PREFIXE."groupe
606 RIGHT JOIN ".DB_PREFIXE."lien_om_utilisateur_groupe ON
607 lien_om_utilisateur_groupe.groupe = groupe.groupe
608 WHERE lien_om_utilisateur_groupe.login = '".$utilisateur["login"] ."'
609 ORDER BY libelle";
610 $resGroupes = $this->db->query($sqlGroupes);
611 $this->addToLog(
612 __METHOD__."(): db->query(\"".$sqlGroupes."\");",
613 VERBOSE_MODE
614 );
615 if (database::isError($resGroupes)) {
616 die();
617 }
618 // Si aucun résultat alors récupération du paramétrage des groupes du profil
619 if ($resGroupes->numRows() === 0) {
620 $sqlGroupes = "SELECT groupe.code, lien_om_profil_groupe.confidentiel, lien_om_profil_groupe.enregistrement_demande, groupe.libelle
621 FROM ".DB_PREFIXE."groupe
622 RIGHT JOIN ".DB_PREFIXE."lien_om_profil_groupe ON
623 lien_om_profil_groupe.groupe = groupe.groupe
624 AND om_profil = ".$utilisateur["om_profil"] ."
625 ORDER BY libelle";
626 $resGroupes = $this->db->query($sqlGroupes);
627 $this->addToLog(
628 __METHOD__."(): db->query(\"".$sqlGroupes."\");",
629 VERBOSE_MODE
630 );
631 if (database::isError($resGroupes)) {
632 die();
633 }
634 }
635 $_SESSION["groupe"] = array();
636 // Enregistrement des groupe en session
637 while ($row = $resGroupes->fetchrow(DB_FETCHMODE_ASSOC)) {
638 if ($row["confidentiel"] === 't') {
639 $row["confidentiel"] = true;
640 } else {
641 $row["confidentiel"] = false;
642 }
643 if ($row["enregistrement_demande"] === 't') {
644 $row["enregistrement_demande"] = true;
645 } else {
646 $row["enregistrement_demande"] = false;
647 }
648 $_SESSION["groupe"][$row["code"]] = array(
649 "confidentiel" => $row["confidentiel"],
650 "enregistrement_demande" => $row["enregistrement_demande"],
651 "libelle" => $row["libelle"],
652 );
653 }
654 }
655
656 // Affichage des actions supplémentaires
657 function displayActionExtras() {
658 // Affichage de la division si l'utilisateur en possède une
659 if ($_SESSION["division"] != 0) {
660 echo "\t\t\t<li class=\"action-division\">";
661 echo "(".$_SESSION['division_code'].")";
662 echo "</li>\n";
663 }
664 }
665
666 // }}}
667
668
669 // {{{ GESTION DES FICHIERS
670
671 /**
672 *
673 */
674 function notExistsError ($explanation = NULL) {
675 // message
676 $message_class = "error";
677 $message = _("Cette page n'existe pas.");
678 $this->addToMessage ($message_class, $message);
679 //
680 $this->setFlag(NULL);
681 $this->display();
682
683 //
684 die();
685 }
686
687 // }}}
688 /**
689 * Retourne le statut du dossier d'instruction
690 * @param string $idx Identifiant du dossier d'instruction
691 * @return string Le statut du dossier d'instruction
692 */
693 function getStatutDossier($idx){
694
695 $statut = '';
696
697 //Si l'identifiant du dossier d'instruction fourni est correct
698 if ( $idx != '' ){
699
700 //On récupère le statut de l'état du dossier à partir de l'identifiant du
701 //dossier d'instruction
702 $sql = "SELECT etat.statut
703 FROM ".DB_PREFIXE."dossier
704 LEFT JOIN
705 ".DB_PREFIXE."etat
706 ON
707 dossier.etat = etat.etat
708 WHERE dossier ='".$idx."'";
709 $statut = $this->db->getOne($sql);
710 $this->addToLog("getStatutDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
711 if ( database::isError($statut)){
712 die();
713 }
714 }
715 return $statut;
716 }
717
718 /**
719 * Formate le champ pour le type Timestamp
720 * @param date $date_str Date
721 * @param boolean $show Format pour l'affichage
722 * @return mixed False si le traitement échoue ou la date formatée
723 */
724 function formatTimestamp ($date_str, $show = true) {
725
726 // Sépare la date et l'heure
727 $date = explode(" ", $date_str);
728 if (count($date) != 2) {
729 return false;
730 }
731
732 // Date en BDD
733 $date_db = explode ('-', $date[0]);
734 // Date en affichage
735 $date_show = explode ('/', $date[0]);
736
737 // Contrôle la composition de la date
738 if (count ($date_db) != 3 and count ($date_show) != 3) {
739 return false;
740 }
741
742 if (count ($date_db) == 3) {
743 // Vérifie que c'est une date valide
744 if (!checkdate($date_db[1], $date_db[2], $date_db[0])) {
745 return false;
746 }
747 // Si c'est pour l'affichage de la date
748 if ($show == true) {
749 return $date_db [2]."/".$date_db [1]."/".$date_db [0]." ".$date[1];
750 } else {
751 return $date[0];
752 }
753 }
754
755 //
756 if (count ($date_show) == 3) {
757 // Vérifie que c'est une date valide
758 if (!checkdate($date_show[1], $date_show[0], $date_show[2])) {
759 return false;
760 }
761 // Si c'est pour l'affichage de la date
762 if ($show == true) {
763 return $date[0];
764 } else {
765 return $date_show [2]."-".$date_show [1]."-".$date_show [0]." ".$date[1];
766 }
767
768 }
769 return false;
770
771 }
772
773 /**
774 * Permet de calculer la liste des parcelles à partir de la chaîne passée en paramètre
775 * et la retourner sous forme d'un tableau associatif
776 *
777 * @param string $strParcelles Chaîne de la parcelles.
778 * @param string $collectivite_idx Collectivite de la parcelle.
779 *
780 * @return array (array(prefixe, quartier, section, parcelle), ...)
781 */
782 function parseParcelles($strParcelles, $collectivite_idx = null) {
783
784 // Séparation des lignes
785 $references = explode(";", $strParcelles);
786 $liste_parcelles = array();
787
788 // On boucle sur chaque ligne pour ajouter la liste des parcelles de chaque ligne
789 foreach ($references as $parcelles) {
790
791 // On transforme la chaîne de la ligne de parcelles en tableau
792 $ref = str_split($parcelles);
793 // Les 1er caractères sont numériques
794 $num = true;
795
796 // Tableau des champs de la ligne de références cadastrales
797 $reference_tab = array();
798 $temp = "";
799 foreach ($ref as $carac) {
800
801 // Permet de tester si le caractère courant est de même type que le précédent
802 if(is_numeric($carac) === $num) {
803 $temp .= $carac;
804 } else {
805 // Bascule
806 $num = !$num;
807 // On stock le champ
808 $reference_tab[] = $temp;
809 // re-init de la valeur temporaire pour le champ suivant
810 $temp = $carac;
811 }
812 }
813 // Stockage du dernier champ sur lequel il n'y a pas eu de bascule
814 $reference_tab[] = $temp;
815 // Calcul des parcelles
816 $quartier = $reference_tab[0];
817 $sect = $reference_tab[1];
818
819 $ancien_ref_parc = "";
820 for ($i=2; $i < count($reference_tab); $i+=2) {
821 if($collectivite_idx != null) {
822 // Récupération du code impot de l'arrondissement
823 $collectivite = $this->getCollectivite($collectivite_idx);
824 $parc["prefixe"] = $this->get_arrondissement_code_impot($quartier);
825 }
826 $parc["quartier"] = $quartier;
827 // Met en majuscule si besoin
828 $parc["section"] = strtoupper($sect);
829 if( $ancien_ref_parc == "" OR $reference_tab[$i-1] == "/") {
830 // 1ere parcelle ou parcelle individuelle
831 // Compléte par des "0" le début de la chaîne si besoin
832 $parc["parcelle"] = str_pad($reference_tab[$i], 4, "0", STR_PAD_LEFT);
833 // Ajout d'une parcelle à la liste
834 $liste_parcelles[] = $parc;
835 } elseif ($reference_tab[$i-1] == "A") {
836 // Interval de parcelles
837 for ($j=$ancien_ref_parc+1; $j <= $reference_tab[$i]; $j++) {
838 // Compléte par des "0" le début de la chaîne si besoin
839 $parc["parcelle"] = str_pad($j, 4, "0", STR_PAD_LEFT);
840 // Ajout d'une parcelle à la liste
841 $liste_parcelles[] = $parc;
842 }
843 }
844 //Gestion des erreurs
845 else{
846
847 echo _("Une erreur de formattage a ete detecte dans la reference cadastrale du dossier ").$this->row['dossier'];
848 }
849 // Sauvegarde de la référence courante de parcelle
850 $ancien_ref_parc = $reference_tab[$i];
851 }
852 }
853
854 return $liste_parcelles;
855 }
856
857
858 /**
859 * Récupère le code impôt par rapport au quartier.
860 *
861 * @param string $quartier Numéro de quartier.
862 * @return string Code impôts.
863 */
864 protected function get_arrondissement_code_impot($quartier) {
865 // Initialisation
866 $code_impots = "";
867 // Si le quartier fournis est correct
868 if ($quartier != "") {
869 // Requête SQL
870 $sql = "SELECT
871 arrondissement.code_impots
872 FROM
873 ".DB_PREFIXE."arrondissement
874 LEFT JOIN
875 ".DB_PREFIXE."quartier
876 ON
877 quartier.arrondissement = arrondissement.arrondissement
878 WHERE
879 quartier.code_impots = '".$quartier."'";
880
881 }
882 $code_impots = $this->db->getOne($sql);
883 if ($code_impots === null) {
884 $code_impots = "";
885 }
886 $this->isDatabaseError($code_impots);
887 // Retour
888 return $code_impots;
889 }
890
891
892 /**
893 * Formate les parcelles en ajoutant le code impôt
894 * @param array $liste_parcelles Tableau des parcelles
895 * @return string Liste des parcelles formatées
896 */
897 function formatParcelleToSend($liste_parcelles) {
898
899 //
900 $wParcelle = array();
901
902 //Formatage des références cadastrales pour l'envoi
903 foreach ($liste_parcelles as $value) {
904
905 // On ajoute les données dans le tableau que si quartier + section + parcelle
906 // a été fourni
907 if ($value["quartier"] !== ""
908 && $value["section"] !== ""
909 && $value["parcelle"] !== ""){
910
911 //On récupère le code impôt de l'arrondissement
912 $arrondissement = $this->getCodeImpotByQuartier($value["quartier"]);
913
914 //On ajoute la parcelle, si un arrondissement a été trouvé
915 if ($arrondissement!=="") {
916 //
917 $wParcelle[] = $arrondissement.$value["quartier"].
918 str_pad($value["section"], 2, " ", STR_PAD_LEFT).
919 $value["parcelle"];
920 }
921 }
922 }
923
924 //
925 return $wParcelle;
926 }
927
928 /**
929 * Récupère le code impôt par rapport au quartier
930 * @param string $quartier Numéro de quartier
931 * @return string Code impôt
932 */
933 function getCodeImpotByQuartier($quartier) {
934
935 $arrondissement = "";
936
937 // Si le quartier fournis est correct
938 if ($quartier != "") {
939
940 // Requête SQL
941 $sql = "SELECT
942 arrondissement.code_impots
943 FROM
944 ".DB_PREFIXE."arrondissement
945 LEFT JOIN
946 ".DB_PREFIXE."quartier
947 ON
948 quartier.arrondissement = arrondissement.arrondissement
949 WHERE
950 quartier.code_impots = '".$quartier."'";
951 $this->addToLog("getCodeImpotByQuartier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
952 $arrondissement = $this->db->getOne($sql);
953 $this->isDatabaseError($arrondissement);
954 }
955
956 // Retour
957 return $arrondissement;
958 }
959
960
961 /**
962 * Retourne true si tous les paramètres du SIG externe ont bien été définis
963 * @return bool true/false
964 */
965 public function issetSIGParameter($idx) {
966 $collectivite_idx = $this->get_collectivite_of_element("dossier", $idx);
967 $collectivite = $this->getCollectivite($collectivite_idx);
968 if(isset($collectivite["sig"])) {
969 return true;
970 } else {
971 return false;
972 }
973 }
974
975 /**
976 * Permet de vérifier que des champs existe dans une table
977 * @param array $list_fields Liste des champs à tester
978 * @param string $table Table où les champs doivent exister
979 * @return mixed Retourne les champs qui n'existent pas
980 * ou true
981 */
982 public function check_field_exist($list_fields, $table) {
983
984 // Instance de la classe en paramètre
985 $object = $this->get_inst__om_dbform(array(
986 "obj" => $table,
987 "idx" => "]",
988 ));
989
990 // Récupère les champs de la table
991 foreach ($object->champs as $champ) {
992 $list_column[] = $champ;
993 }
994
995 // Tableau des champs en erreur
996 $error_fields = array();
997
998 // Pour chaque champ à tester
999 foreach ($list_fields as $value) {
1000
1001 // S'il n'apparaît pas dans la liste des champs possible
1002 if (!in_array($value, $list_column)) {
1003
1004 // Alors le champ est ajouté au tableau des erreurs
1005 $error_fields[] = $value;
1006 }
1007 }
1008
1009 // Si le tableau des erreurs n'est pas vide on le retourne
1010 if (count($error_fields) > 0) {
1011 return $error_fields;
1012 }
1013
1014 // Sinon on retourne le booléen true
1015 return true;
1016
1017 }
1018
1019 /*
1020 *
1021 */
1022 /**
1023 * Récupère la lettre type lié à un événement
1024 * @param integer $evenement L'identifiant de l'événement
1025 * @return integer Retourne l'idenfiant de la lettre-type ou true
1026 */
1027 function getLettreType($evenement){
1028
1029 $lettretype = NULL;
1030
1031 $sql =
1032 "SELECT
1033 lettretype
1034 FROM
1035 ".DB_PREFIXE."evenement
1036 WHERE
1037 evenement = $evenement";
1038
1039 $this->addToLog("getLettreType() : db->query(\"".$sql."\")", VERBOSE_MODE);
1040 $res = $this->db->query($sql);
1041 if ( database::isError($res)){
1042 die();
1043 }
1044
1045 if ( $res->numrows() > 0 ){
1046
1047 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1048 $lettretype = $row['lettretype'];
1049 }
1050
1051 return $lettretype;
1052 }
1053
1054 /**
1055 * Retourne le type de dossier d'autorisation du dossier courant :
1056 * @param $idxDossier Le numéro du dossier d'instruction
1057 * @return le code du type détaillée de dossier d'autorisation
1058 **/
1059 function getDATDCode($idxDossier) {
1060 $sql = "SELECT dossier_autorisation_type_detaille.code
1061 FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
1062 INNER JOIN ".DB_PREFIXE."dossier_autorisation
1063 ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille =
1064 dossier_autorisation.dossier_autorisation_type_detaille
1065 INNER JOIN ".DB_PREFIXE."dossier ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
1066 WHERE dossier.dossier = '".$idxDossier."'";
1067 $res = $this->db->getOne($sql);
1068 $this->addToLog("getDATDCode() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1069 if ( database::isError($res)){
1070 die();
1071 }
1072 return $res;
1073 }
1074
1075 /**
1076 * Retourne le type de dossier d'autorisation du dossier courant :
1077 * @param $idxDossier Le numéro du dossier d'instruction
1078 * @return le code du type de dossier d'autorisation
1079 **/
1080 function getDATCode($idxDossier) {
1081 $sql = "
1082 SELECT
1083 dossier_autorisation_type.code
1084 FROM
1085 ".DB_PREFIXE."dossier_autorisation_type
1086 INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
1087 ON dossier_autorisation_type.dossier_autorisation_type=dossier_autorisation_type_detaille.dossier_autorisation_type
1088 INNER JOIN ".DB_PREFIXE."dossier_autorisation
1089 ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille=dossier_autorisation.dossier_autorisation_type_detaille
1090 INNER JOIN ".DB_PREFIXE."dossier
1091 ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation
1092 WHERE
1093 dossier.dossier = '".$idxDossier."'
1094 ";
1095 $res = $this->db->getOne($sql);
1096 $this->addToLog(__METHOD__."(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
1097 if ( database::isError($res)){
1098 die();
1099 }
1100 return $res;
1101 }
1102
1103 /**
1104 * Permet de copier un enregistrement
1105 * @param mixed $idx Identifiant de l'enregistrment
1106 * @param string $obj Objet de l'enregistrment
1107 * @param string $objsf Objets associés
1108 * @return array Tableau des nouveaux id et du message
1109 */
1110 function copier($idx, $obj, $objsf) {
1111
1112 // Tableau de résultat
1113 $resArray = array();
1114 // Message retourné à l'utilisateur
1115 $message = "";
1116 // Type du message (valid ou error)
1117 $message_type = "valid";
1118
1119 // Requête SQL permettant de récupérer les informations sur l'objet métier
1120 $sql = "SELECT *
1121 FROM ".DB_PREFIXE.$obj."
1122 WHERE ".$obj." = ".$idx;
1123 $res = $this->db->query($sql);
1124 $this->isDatabaseError($res);
1125
1126 // Valeurs clonées
1127 $valF = array();
1128 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1129 // Recupère la valeur
1130 $valF = $row;
1131 }
1132
1133 // Valeurs non clonées
1134 // Identifiant modifié pour que ça soit un ajout
1135 $valF[$obj] = "]";
1136 // Instance de l'objet métier
1137 $clone_obj = $this->get_inst__om_dbform(array(
1138 "obj" => $obj,
1139 "idx" => "]",
1140 ));
1141 // Si dans l'objet métier la fonction "copier" existe
1142 if (method_exists($clone_obj, "update_for_copy")) {
1143 // Traitement sur les valeurs du duplicata
1144 $valF = $clone_obj->update_for_copy($valF, $objsf, DEBUG);
1145 // Recupère les messages retourné par la fonction
1146 $message .= $valF['message'];
1147 // Supprime les messages de la liste des valeurs
1148 unset($valF['message']);
1149 }
1150 // Ajoute le duplicata
1151 $clone_obj->ajouter($valF);
1152 // Si aucune erreur se produit dans la classe instanciée
1153 if ($clone_obj->correct === true) {
1154 // Récupère l'identifiant de l'objet créé
1155 $clone_obj_id = $clone_obj->valF[$obj];
1156
1157 // Message
1158 $message .= sprintf(_("La copie de l'enregistrement %s avec l'identifiant %s s'est effectuee avec succes"), "<span class='bold'>"._($obj)."</span>", "<span class='bold'>".$idx."</span>")."<br />";
1159 $message .= sprintf(
1160 '<a class="om-prev-icon" id="action-link--copy-of-%s-%s" href="%s">%s</a><br/><br/>',
1161 $obj,
1162 $idx,
1163 sprintf(
1164 '%s&obj=%s&action=3&idx=%s',
1165 OM_ROUTE_FORM,
1166 $obj,
1167 $clone_obj_id
1168 ),
1169 ("Cliquer ici pour accéder à la copie")
1170 );
1171 // Ajout de l'identifant au tableau des résultat
1172 $resArray[$obj.'_'.$idx] = $clone_obj_id;
1173
1174 // S'il y a au moins un objet metier associé
1175 if ($objsf != "") {
1176 // Liste des objet métier associés
1177 $list_objsf = explode(",", $objsf);
1178 // Pour chaque objet associé
1179 foreach ($list_objsf as $key => $objsf) {
1180 // Requête SQL permettant de récupérer les informations sur
1181 // l'objet métier associé
1182 $sql = "SELECT *
1183 FROM ".DB_PREFIXE.$objsf."
1184 WHERE ".$obj." = ".$idx;
1185 $res = $this->db->query($sql);
1186 $this->isDatabaseError($res);
1187
1188 // Pour chaque élément associé
1189 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1190 // Identifiant de l'objet associé à copier
1191 $idxsf = $row[$objsf];
1192
1193 // Valeurs clonées
1194 $valF = $row;
1195 // Valeurs non clonées
1196 $valF[$obj] = $clone_obj_id;
1197 // Identifiant modifié pour que ça soit un ajout
1198 $valF[$objsf] = "]";
1199 // Instance de l'objet métier associé
1200 $clone_objsf = $this->get_inst__om_dbform(array(
1201 "obj" => $objsf,
1202 "idx" => "]",
1203 ));
1204 // Si dans l'objet métier associé
1205 // la fonction "copier" existe
1206 if (method_exists($clone_objsf, "update_for_copy")) {
1207 // Traitement sur les valeurs du duplicata
1208 $valF = $clone_objsf->update_for_copy($valF, $objsf, DEBUG);
1209 // Recupère les messages retourné par la fonction
1210 $message .= $valF['message'];
1211 // Supprime les messages de la liste des valeurs
1212 unset($valF['message']);
1213 }
1214 // Ajoute le duplicata
1215 $clone_objsf->ajouter($valF);
1216 // Si aucune erreur se produit dans la classe instanciée
1217 if ($clone_objsf->correct === true) {
1218 // Récupère l'identifiant de l'objet créé
1219 $clone_objsf_id = $clone_objsf->valF[$objsf];
1220
1221 // Message
1222 $message .= sprintf(
1223 _("La copie de l'enregistrement %s avec l'identifiant %s s'est effectuee avec succes"),
1224 "<span class='bold'>"._($objsf)."</span>",
1225 "<span class='bold'>".$idxsf."</span>"
1226 )."<br />";
1227
1228 // Ajout de l'identifant au tableau des résultat
1229 $resArray[$objsf.'_'.$row[$objsf]] = $clone_objsf_id;
1230 } else {
1231
1232 // Message d'erreur récupéré depuis la classe
1233 $message .= $clone_objsf->msg;
1234 // Type du message
1235 $message_type = "error";
1236 }
1237 }
1238 }
1239 }
1240 //
1241 } else {
1242
1243 // Message d'erreur récupéré depuis la classe
1244 $message .= $clone_obj->msg;
1245 // Type du message
1246 $message_type = "error";
1247 }
1248
1249 // Ajout du message au tableau des résultats
1250 $resArray['message'] = $message;
1251 // Ajout du type de message au tableau des résultats
1252 $resArray['message_type'] = $message_type;
1253
1254 // Retourne le tableau des résultats
1255 return $resArray;
1256 }
1257
1258 /**
1259 * Cette fonction prend en entrée le ou les paramètres du &contrainte qui sont entre
1260 * parenthèses (un ensemble de paramètres séparés par des points-virgules). Elle
1261 * sépare les paramètres et leurs valeurs puis construit et retourne un tableau
1262 * associatif qui contient pour les groupes et sous-groupes :
1263 * - un tableau de valeurs, avec un nom de groupe ou sous-groupe par ligne
1264 * pour les autres options :
1265 * - la valeur de l'option
1266 *
1267 * @param string $contraintes_param Chaîne contenant tous les paramètres
1268 *
1269 * @return array Tableau associatif avec paramètres et valeurs séparés
1270 */
1271 function explodeConditionContrainte($contraintes_param) {
1272
1273 // Initialisation des variables
1274 $return = array();
1275 $listGroupes = "";
1276 $listSousgroupes = "";
1277 $service_consulte = "";
1278 $affichage_sans_arborescence = "";
1279
1280 // Sépare toutes les conditions avec leurs valeurs et les met dans un tableau
1281 $contraintes_params = explode(";", $contraintes_param);
1282
1283 // Pour chaque paramètre de &contraintes
1284 foreach ($contraintes_params as $value) {
1285 // Récupère le mot-clé "liste_groupe" et les valeurs du paramètre
1286 if (strstr($value, "liste_groupe=")) {
1287 // On enlève le mots-clé "liste_groupe=", on garde les valeurs
1288 $listGroupes = str_replace("liste_groupe=", "", $value);
1289 }
1290 // Récupère le mot-clé "liste_ssgroupe" et les valeurs du paramètre
1291 if (strstr($value, "liste_ssgroupe=")) {
1292 // On enlève le mots-clé "liste_ssgroupe=", on garde les valeurs
1293 $listSousgroupes = str_replace("liste_ssgroupe=", "", $value);
1294 }
1295 // Récupère le mot-clé "service_consulte" et la valeur du paramètre
1296 if (strstr($value, "service_consulte=")) {
1297 // On enlève le mots-clé "service_consulte=", on garde sa valeur
1298 $service_consulte = str_replace("service_consulte=", "", $value);
1299 }
1300 // Récupère le mot-clé "affichage_sans_arborescence" et la valeur du
1301 // paramètre
1302 if (strstr($value, "affichage_sans_arborescence=")) {
1303 // On enlève le mots-clé "affichage_sans_arborescence=", on garde la valeur
1304 $affichage_sans_arborescence = str_replace("affichage_sans_arborescence=", "", $value);
1305 }
1306 }
1307
1308 // Récupère dans des tableaux la liste des groupes et sous-groupes qui
1309 // doivent être utilisés lors du traitement de la condition
1310 if ($listGroupes != "") {
1311 $listGroupes = array_map('trim', explode(",", $listGroupes));
1312 }
1313 if ($listSousgroupes != "") {
1314 $listSousgroupes = array_map('trim', explode(",", $listSousgroupes));
1315 }
1316
1317 // Tableau à retourner
1318 $return['groupes'] = $listGroupes;
1319 $return['sousgroupes'] = $listSousgroupes;
1320 $return['service_consulte'] = $service_consulte;
1321 $return['affichage_sans_arborescence'] = $affichage_sans_arborescence;
1322 return $return;
1323 }
1324
1325 /**
1326 * Méthode qui complète la clause WHERE de la requête SQL de récupération des
1327 * contraintes, selon les paramètres fournis. Elle permet d'ajouter une condition sur
1328 * les groupes, sous-groupes et les services consultés.
1329 *
1330 * @param $string $part Contient tous les paramètres fournis à &contraintes séparés
1331 * par des points-virgules, tel que définis dans l'état.
1332 * array[] $conditions Paramètre optionnel, contient les conditions déjà explosées
1333 * par la fonction explodeConditionContrainte()
1334 *
1335 * @return string Contient les clauses WHERE à ajouter à la requête SQL principale.
1336 */
1337 function traitement_condition_contrainte($part, $conditions = NULL) {
1338
1339 // Initialisation de la condition
1340 $whereContraintes = "";
1341 // Lorsqu'on a déjà les conditions explosées dans le paramètre $conditions, on
1342 // utilise ces données. Sinon, on appelle la méthode qui explose la chaîne de
1343 // caractères contenant l'ensemble des paramètres.
1344 if (is_array($conditions)){
1345 $explodeConditionContrainte = $conditions;
1346 }
1347 else {
1348 $explodeConditionContrainte = $this->explodeConditionContrainte($part);
1349 }
1350 // Récupère les groupes, sous-groupes et service_consulte pour la condition
1351 $groupes = $explodeConditionContrainte['groupes'];
1352 $sousgroupes = $explodeConditionContrainte['sousgroupes'];
1353 $service_consulte = $explodeConditionContrainte['service_consulte'];
1354
1355 // Pour chaque groupe
1356 if ($groupes != "") {
1357 foreach ($groupes as $key => $groupe) {
1358 // Si le groupe n'est pas vide
1359 if (!empty($groupe)) {
1360 // Choisit l'opérateur logique
1361 $op_logique = $key > 0 ? 'OR' : 'AND (';
1362 // Ajoute la condition
1363 $whereContraintes .= " ".$op_logique." lower(trim(both E'\n\r\t' from contrainte.groupe)) = lower('"
1364 .pg_escape_string($groupe)."')";
1365 }
1366 }
1367 // S'il y a des valeurs dans groupe
1368 if (count($groupes) > 0) {
1369 // Ferme la parenthèse
1370 $whereContraintes .= " ) ";
1371 }
1372 }
1373
1374 // Pour chaque sous-groupe
1375 if ($sousgroupes != "") {
1376 foreach ($sousgroupes as $key => $sousgroupe) {
1377 // Si le sous-groupe n'est pas vide
1378 if (!empty($sousgroupe)) {
1379 // Choisit l'opérateur logique
1380 $op_logique = $key > 0 ? 'OR' : 'AND (';
1381 // Ajoute la condition
1382 $whereContraintes .= " ".$op_logique." lower(trim(both E'\n\r\t' from contrainte.sousgroupe)) = lower('"
1383 .pg_escape_string($sousgroupe)."')";
1384 }
1385 }
1386 // S'il y a des valeurs dans sous-groupe
1387 if (count($sousgroupes) > 0) {
1388 // Ferme la parenthèse
1389 $whereContraintes .= " ) ";
1390 }
1391 }
1392
1393 // Si l'option service_consulte n'est pas vide
1394 if ($service_consulte != "") {
1395 // Ajoute la condition
1396 $whereContraintes .= " AND service_consulte = cast(lower('".$service_consulte."') as boolean) ";
1397 }
1398
1399 // Condition retournée
1400 return $whereContraintes;
1401 }
1402
1403 /**
1404 * Calcule une date par l'ajout ou la soustraction de mois ou de jours.
1405 *
1406 * @param date $date Date de base (format dd-mm-yyyy)
1407 * @param integer $delay Délais à ajouter
1408 * @param string $operator Opérateur pour le calcul ("-" ou "+")
1409 * @param string $type Type de calcul (mois ou jour)
1410 *
1411 * @return date Date calculée
1412 */
1413 function mois_date($date, $delay, $operator = "+", $type = "mois") {
1414 // On force le type du paramètre $delay
1415 $delay = intval($delay);
1416
1417 // Si un type n'est pas définit
1418 if ($type != "mois" && $type != "jour") {
1419 //
1420 return null;
1421 }
1422
1423 // Si aucune date n'a été fournie ou si ce n'est pas une date correctement
1424 // formatée
1425 if ( is_null($date) || $date == "" ||
1426 preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/', $date) == 0 ){
1427 return null;
1428 }
1429
1430 // Si l'opérateur n'est pas définit
1431 if ($operator != "+" && $operator != "-") {
1432 //
1433 return null;
1434 }
1435
1436 // Découpage de la date
1437 $temp = explode("-", $date);
1438 $day = (int) $temp[2];
1439 $month = (int) $temp[1];
1440 $year = (int) $temp[0];
1441
1442 // Si c'est un calcul sur des mois
1443 // Le calcul par mois ne se fait pas comme le calcul par jour car
1444 // les fonctions PHP ne réalisent pas les calculs réglementaires
1445 if ($type == "mois") {
1446
1447 // Si c'est une addition
1448 if ($operator == '+') {
1449 // Année à ajouter
1450 $year += floor($delay / 12);
1451 // Mois restant
1452 $nb_month = ($delay % 12);
1453 // S'il y a des mois restant
1454 if ($nb_month != 0) {
1455 // Ajout des mois restant
1456 $month += $nb_month;
1457 // Si ça dépasse le mois 12 (décembre)
1458 if ($month > 12) {
1459 // Soustrait 12 au mois
1460 $month -= 12;
1461 // Ajoute 1 à l'année
1462 $year += 1;
1463 }
1464 }
1465 }
1466
1467 // Si c'est une soustraction
1468 if ($operator == "-") {
1469 // Année à soustraire
1470 $year -= floor($delay / 12);
1471 // Mois restant
1472 $nb_month = ($delay % 12);
1473 // S'il y a des mois restant
1474 if ($nb_month != 0) {
1475 // Soustrait le délais
1476 $month -= $nb_month;
1477 // Si ça dépasse le mois 1 (janvier)
1478 if ($month < 1) {
1479 // Soustrait 12 au mois
1480 $month += 12;
1481 // Ajoute 1 à l'année
1482 $year -= 1;
1483 }
1484 }
1485 }
1486
1487 // Calcul du nombre de jours dans le mois sélectionné
1488 switch($month) {
1489 // Mois de février
1490 case "2":
1491 if ($year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0) {
1492 $day_max = 29;
1493 } else {
1494 $day_max = 28;
1495 }
1496 break;
1497 // Mois d'avril, juin, septembre et novembre
1498 case "4":
1499 case "6":
1500 case "9":
1501 case "11":
1502 $day_max = 30;
1503 break;
1504 // Mois de janvier, mars, mai, juillet, août, octobre et décembre
1505 default:
1506 $day_max = 31;
1507 }
1508
1509 // Si le jour est supérieur au jour maximum du mois
1510 if ($day > $day_max) {
1511 // Le jour devient le jour maximum
1512 $day = $day_max;
1513 }
1514
1515 // Compléte le mois et le jour par un 0 à gauche si c'est un chiffre
1516 $month = str_pad($month, 2, "0", STR_PAD_LEFT);
1517 $day = str_pad($day, 2, "0", STR_PAD_LEFT);
1518
1519 // Résultat du calcul
1520 $date_result = $year."-".$month."-".$day;
1521 }
1522
1523 // Si c'est un calcul sur des jours
1524 if ($type == "jour") {
1525 //
1526 $datetime = new DateTime($date);
1527 // Si le délai est un numérique
1528 if (is_numeric($delay)) {
1529 // Modifie la date
1530 $datetime->modify($operator.$delay.' days');
1531 }
1532 // Résultat du calcul
1533 $date_result = $datetime->format('Y-m-d');
1534 }
1535
1536 // Retourne la date calculée
1537 return $date_result;
1538 }
1539
1540 /**
1541 * Vérifie la valididité d'une date.
1542 *
1543 * @param string $pDate Date à vérifier
1544 *
1545 * @return boolean
1546 */
1547 function check_date($pDate) {
1548
1549 // Vérifie si c'est une date valide
1550 if (preg_match("/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/", $pDate, $date)
1551 && checkdate($date[2], $date[3], $date[1])
1552 && $date[1] >= 1900) {
1553 //
1554 return true;
1555 }
1556
1557 //
1558 return false;
1559 }
1560
1561 /**
1562 * Permet de tester le bypass
1563 *
1564 * @param string $obj le nom de l'objet
1565 * @param string $permission_suffix
1566 * @return boolean
1567 */
1568 function can_bypass($obj="", $permission_suffix=""){
1569 //On teste le droit bypass
1570 if ($permission_suffix!=""&&$obj!=""&&
1571 $this->isAccredited($obj."_".$permission_suffix."_bypass")){
1572 return true;
1573 }
1574 return false;
1575 }
1576
1577
1578 /**
1579 * Vérifie l'option de numérisation.
1580 *
1581 * @return boolean
1582 */
1583 public function is_option_digitalization_folder_enabled() {
1584 //
1585 if ($this->getParameter("option_digitalization_folder") !== true) {
1586 //
1587 return false;
1588 }
1589 //
1590 return true;
1591 }
1592
1593 /**
1594 * Vérifie l'option de suppression d'un dossier d'instruction.
1595 *
1596 * @return boolean
1597 */
1598 public function is_option_suppression_dossier_instruction_enabled($om_collectivite=null) {
1599 //
1600 $parameters = $this->getCollectivite($om_collectivite);
1601 //
1602 if (isset($parameters['option_suppression_dossier_instruction']) === true
1603 && $parameters['option_suppression_dossier_instruction'] === 'true') {
1604 //
1605 return true;
1606 }
1607
1608 //
1609 return false;
1610 }
1611
1612
1613
1614 /**
1615 * Vérifie que l'option d'accès au portail citoyen est activée.
1616 *
1617 * @param integer $om_collectivite Identifiant de la collectivité.
1618 *
1619 * @return boolean
1620 */
1621 public function is_option_citizen_access_portal_enabled($om_collectivite=null) {
1622 //
1623 $parameters = $this->getCollectivite($om_collectivite);
1624 //
1625 if (isset($parameters['option_portail_acces_citoyen']) === true
1626 && $parameters['option_portail_acces_citoyen'] === 'true') {
1627 //
1628 return true;
1629 }
1630
1631 //
1632 return false;
1633 }
1634
1635
1636 /**
1637 * Vérifie que l'option du SIG est activée.
1638 *
1639 * @return boolean
1640 */
1641 public function is_option_sig_enabled($om_collectivite=null) {
1642 //
1643 $parameters = $this->getCollectivite($om_collectivite);
1644 //
1645 if (isset($parameters['option_sig']) === true
1646 && $parameters['option_sig'] === 'sig_externe') {
1647 //
1648 return true;
1649 }
1650 //
1651 return false;
1652 }
1653
1654 /**
1655 * Vérifie que l'option du SIG est activée.
1656 *
1657 * @return boolean
1658 */
1659 public function is_option_ws_synchro_contrainte_enabled($om_collectivite=null) {
1660 //
1661 $parameters = $this->getCollectivite($om_collectivite);
1662 //
1663 if (isset($parameters['option_ws_synchro_contrainte']) === true
1664 && $parameters['option_ws_synchro_contrainte'] === 'true') {
1665 //
1666 return true;
1667 }
1668 //
1669 return false;
1670 }
1671
1672
1673 /**
1674 * Vérifie que l'option de simulation des taxes est activée.
1675 *
1676 * @param integer $om_collectivite Identifiant de la collectivité.
1677 *
1678 * @return boolean
1679 */
1680 public function is_option_simulation_taxes_enabled($om_collectivite=null) {
1681 //
1682 $parameters = $this->getCollectivite($om_collectivite);
1683 //
1684 if (isset($parameters['option_simulation_taxes']) === true
1685 && $parameters['option_simulation_taxes'] === 'true') {
1686 //
1687 return true;
1688 }
1689
1690 //
1691 return false;
1692 }
1693
1694 /**
1695 * Vérifie que l'option de prévisualisation de l'édition est activée.
1696 *
1697 * @param integer $om_collectivite Identifiant de la collectivité.
1698 *
1699 * @return boolean
1700 */
1701 public function is_option_preview_pdf_enabled($om_collectivite=null) {
1702 //
1703 $parameters = $this->getCollectivite($om_collectivite);
1704 //
1705 if (isset($parameters['option_previsualisation_edition']) === true
1706 && $parameters['option_previsualisation_edition'] === 'true') {
1707 //
1708 return true;
1709 }
1710
1711 //
1712 return false;
1713 }
1714
1715 /**
1716 * Vérifie que l'option de rédaction libre de l'édition est activée.
1717 *
1718 * @param integer $om_collectivite Identifiant de la collectivité.
1719 *
1720 * @return boolean
1721 */
1722 public function is_option_redaction_libre_enabled($om_collectivite=null) {
1723 //
1724 $parameters = $this->getCollectivite($om_collectivite);
1725 //
1726 if (isset($parameters['option_redaction_libre']) === true
1727 && $parameters['option_redaction_libre'] === 'true') {
1728 //
1729 return true;
1730 }
1731
1732 //
1733 return false;
1734 }
1735
1736
1737 /**
1738 * Vérifie que l'option de finalisation automatique des instructions tacites
1739 * et retours est activée..
1740 *
1741 * @param integer $om_collectivite Identifiant de la collectivité.
1742 *
1743 * @return boolean
1744 */
1745 public function is_option_finalisation_auto_enabled($om_collectivite = null) {
1746 //
1747 $parameters = $this->getCollectivite($om_collectivite);
1748 //
1749 if (isset($parameters['option_final_auto_instr_tacite_retour']) === true
1750 && $parameters['option_final_auto_instr_tacite_retour'] === 'true') {
1751 //
1752 return true;
1753 }
1754
1755 //
1756 return false;
1757 }
1758
1759 /**
1760 * Vérifie que l'option de trouillotage numérique automatique des
1761 * pièces est activée.
1762 *
1763 * @param integer $om_collectivite Identifiant de la collectivité.
1764 *
1765 * @return boolean
1766 */
1767 public function is_option_trouillotage_numerique_enabled($om_collectivite = null) {
1768 //
1769 $parameters = $this->getCollectivite($om_collectivite);
1770 //
1771 if (isset($parameters['option_trouillotage_numerique']) === true
1772 && $parameters['option_trouillotage_numerique'] === 'true') {
1773 //
1774 return true;
1775 }
1776 //
1777 return false;
1778 }
1779
1780 /**
1781 * Vérifie que l'option de saisie du numéro de dossier est activée.
1782 *
1783 * @param integer $om_collectivite Identifiant de la collectivité.
1784 *
1785 * @return boolean
1786 */
1787 public function is_option_dossier_saisie_numero_enabled($om_collectivite=null) {
1788 //
1789 $parameters = $this->getCollectivite($om_collectivite);
1790 //
1791 if (isset($parameters['option_dossier_saisie_numero']) === true
1792 && $parameters['option_dossier_saisie_numero'] === 'true') {
1793 //
1794 return true;
1795 }
1796
1797 //
1798 return false;
1799 }
1800
1801 /**
1802 * Vérifie que l'option de récupération de la division de l'instructeur
1803 * affecté pour la numérotation des dossiers est activée.
1804 *
1805 * @param integer $om_collectivite Identifiant de la collectivité.
1806 *
1807 * @return boolean
1808 */
1809 public function is_option_instructeur_division_numero_dossier_enabled($om_collectivite=null) {
1810 //
1811 $parameters = $this->getCollectivite($om_collectivite);
1812 //
1813 if (isset($parameters['option_instructeur_division_numero_dossier']) === true
1814 && $parameters['option_instructeur_division_numero_dossier'] === 'true') {
1815 //
1816 return true;
1817 }
1818
1819 //
1820 return false;
1821 }
1822
1823 /**
1824 * Vérifie que l'option du suivi de numérisation est activée.
1825 * Les utilisateurs de la collectivité de niveau 2 peuvent accéder aux
1826 * fonctionnalités du suivi de numérisation même si l'option est activée seulement
1827 * sur une collectivité de niveau 1.
1828 *
1829 * @param integer $om_collectivite Identifiant de la collectivité.
1830 *
1831 * @return boolean
1832 */
1833 public function is_option_suivi_numerisation_enabled($om_collectivite=null) {
1834 //
1835 $parameters = $this->getCollectivite($om_collectivite);
1836 //
1837 if (isset($parameters['option_suivi_numerisation']) === true
1838 && $parameters['option_suivi_numerisation'] === 'true') {
1839 //
1840 return true;
1841 }
1842
1843 // Si l'utilisateur fait partie de la collectivité de niveau 2
1844 // et qu'au moins une des communes à l'option de numérisation activée
1845 if ($this->has_collectivite_multi() === true) {
1846 $query = sprintf('
1847 SELECT valeur
1848 FROM %1$som_parametre
1849 WHERE libelle = \'%2$s\'
1850 ',
1851 DB_PREFIXE,
1852 'option_suivi_numerisation'
1853 );
1854 $res = $this->get_one_result_from_db_query(
1855 $query,
1856 true
1857 );
1858 if ($res['code'] === 'OK'
1859 && $res['result'] === 'true') {
1860 //
1861 return true;
1862 }
1863 }
1864
1865 //
1866 return false;
1867 }
1868
1869 /**
1870 * Vérifie le niveau de la collectivité de l'utilisateur connecté
1871 *
1872 * @return boolean
1873 */
1874 function has_collectivite_multi() {
1875 $idx_multi = $this->get_idx_collectivite_multi();
1876 if (intval($_SESSION['collectivite']) === intval($idx_multi)) {
1877 return true;
1878 }
1879 return false;
1880 }
1881
1882
1883 /**
1884 * Pour un path absolu donné, retourne le relatif à la racine de
1885 * l'application.
1886 *
1887 * @param string $absolute Chemin absolu.
1888 *
1889 * @return mixed Faux si échec sinon chemin relatif.
1890 */
1891 public function get_relative_path($absolute) {
1892 if ($this->get_path_app() === false) {
1893 return false;
1894 }
1895 $path_app = $this->get_path_app();
1896 return str_replace($path_app, '', $absolute);
1897 }
1898
1899
1900 /**
1901 * Retourne le path absolu de la racine de l'application
1902 *
1903 * @return mixed Faux si échec sinon chemin absolu
1904 */
1905 public function get_path_app() {
1906 $match = array();
1907 preg_match( '/(.*)\/[a-zA-Z0-9]+\/\.\.\/core\/$/', PATH_OPENMAIRIE, $match);
1908 // On vérifie qu'il n'y a pas d'erreur
1909 if (isset($match[1]) === false) {
1910 return false;
1911 }
1912 return $match[1];
1913 }
1914
1915 /**
1916 * Compose un tableau et retourne son code HTML
1917 *
1918 * @param string $id ID CSS du conteneur
1919 * @param array $headers entêtes de colonnes
1920 * @param array $rows lignes
1921 * @return string code HTML
1922 */
1923 public function compose_generate_table($id, $headers, $rows) {
1924 //
1925 $html = '';
1926 // Début conteneur
1927 $html .= '<div id="'.$id.'">';
1928 // Début tableau
1929 $html .= '<table class="tab-tab">';
1930 // Début entête
1931 $html .= '<thead>';
1932 $html .= '<tr class="ui-tabs-nav ui-accordion ui-state-default tab-title">';
1933 // Colonnes
1934 $nb_colonnes = count($headers);
1935 $index_last_col = $nb_colonnes - 1;
1936 foreach ($headers as $i => $header) {
1937 if ($i === 0) {
1938 $col = ' firstcol';
1939 }
1940 if ($i === $index_last_col) {
1941 $col = ' lastcol';
1942 }
1943 $html .= '<th class="title col-'.$i.$col.'">';
1944 $html .= '<span class="name">';
1945 $html .= $header;
1946 $html .= '</span>';
1947 $html .= '</th>';
1948 }
1949 // Fin entête
1950 $html .= '</tr>';
1951 $html .= '</thead>';
1952 // Début corps
1953 $html .= '<tbody>';
1954 // Lignes
1955 foreach ($rows as $cells) {
1956 // Début ligne
1957 $html .= '<tr class="tab-data">';
1958 // Cellules
1959 foreach ($cells as $j => $cell) {
1960 if ($j === 0) {
1961 $col = ' firstcol';
1962 }
1963 if ($j === $index_last_col) {
1964 $col = ' lastcol';
1965 }
1966 $html .= '<td class="title col-'.$j.$col.'">';
1967 $html .= '<span class="name">';
1968 $html .= $cell;
1969 $html .= '</span>';
1970 $html .= '</td>';
1971 }
1972 // Fin ligne
1973 $html .= "</tr>";
1974 }
1975 // Fin corps
1976 $html .= '</tbody>';
1977 // Fin tableau
1978 $html .= '</table>';
1979 // Fin conteneur
1980 $html .= '</div>';
1981 //
1982 return $html;
1983 }
1984
1985 /**
1986 * Retourne le login de l'utilisateur connecté + entre parenthèses son nom
1987 * s'il en a un.
1988 *
1989 * @return string myLogin OU myLogin (myName)
1990 */
1991 public function get_connected_user_login_name() {
1992 // Requête et stockage des informations de l'user connecté
1993 $this->getUserInfos();
1994 // Si le nom existe et est défini on le récupère
1995 $nom = "";
1996 if (isset($this->om_utilisateur["nom"])
1997 && !empty($this->om_utilisateur["nom"])) {
1998 $nom = trim($this->om_utilisateur["nom"]);
1999 }
2000 // Définition de l'émetteur : obligatoirement son login
2001 $emetteur = $_SESSION['login'];
2002 // Définition de l'émetteur : + éventuellement son nom
2003 if ($nom != "") {
2004 $emetteur .= " (".$nom.")";
2005 }
2006 // Retour
2007 return $emetteur;
2008 }
2009
2010 /**
2011 * Cette méthode permet d'interfacer le module 'Settings'.
2012 */
2013 function view_module_settings() {
2014 //
2015 require_once "../obj/settings.class.php";
2016 $settings = new settings();
2017 $settings->view_main();
2018 }
2019
2020
2021 /**
2022 * Vérifie que l'option référentiel ERP est activée.
2023 *
2024 * @param integer $om_collectivite Identifiant de la collectivité.
2025 *
2026 * @return boolean
2027 */
2028 public function is_option_referentiel_erp_enabled($om_collectivite=null) {
2029 //
2030 $parameters = $this->getCollectivite($om_collectivite);
2031 //
2032 if (isset($parameters['option_referentiel_erp']) === true
2033 && $parameters['option_referentiel_erp'] === 'true') {
2034 //
2035 return true;
2036 }
2037
2038 //
2039 return false;
2040 }
2041
2042
2043 /**
2044 * Interface avec le référentiel ERP.
2045 */
2046 function send_message_to_referentiel_erp($code, $infos) {
2047 //
2048 require_once "../obj/interface_referentiel_erp.class.php";
2049 $interface_referentiel_erp = new interface_referentiel_erp();
2050 $ret = $interface_referentiel_erp->send_message_to_referentiel_erp($code, $infos);
2051 return $ret;
2052 }
2053
2054 /**
2055 * Récupère la liste des identifiants des collectivités
2056 *
2057 * @param string $return_type 'string' ou 'array' selon que l'on retourne
2058 * respectivement une chaîne ou un tableau
2059 * @param string $separator caractère(s) séparateur(s) employé(s) lorsque
2060 * l'on retourne une chaîne, inutilisé si tableau
2061 * @return mixed possibilité de boolean/string/array :
2062 * false si erreur BDD sinon résultat
2063 */
2064 public function get_list_id_collectivites($return_type = 'string', $separator = ',') {
2065 $sql = "
2066 SELECT
2067 array_to_string(
2068 array_agg(om_collectivite),
2069 '".$separator."'
2070 ) as list_id_collectivites
2071 FROM ".DB_PREFIXE."om_collectivite";
2072 $list = $this->db->getone($sql);
2073 $this->addTolog(
2074 __FILE__." - ".__METHOD__." : db->getone(\"".$sql."\");",
2075 VERBOSE_MODE
2076 );
2077 if ($this->isDatabaseError($list, true)) {
2078 return false;
2079 }
2080 if ($return_type === 'array') {
2081 return explode($separator, $list);
2082 }
2083 return $list;
2084 }
2085
2086 /**
2087 * Teste si l'utilisateur connecté appartient au groupe indiqué en paramètre
2088 * ou s'il a le goupe bypass.
2089 *
2090 * @param string $groupe Code du groupe : ADS / CTX / CU / RU / ERP.
2091 * @return boolean vrai si utilisateur appartient au groupe fourni
2092 */
2093 public function is_user_in_group($groupe) {
2094 if (isset($_SESSION['groupe']) === true
2095 && (array_key_exists($groupe, $_SESSION['groupe']) === true
2096 || array_key_exists("bypass", $_SESSION['groupe']) === true)) {
2097 return true;
2098 }
2099 return false;
2100 }
2101
2102 /**
2103 * CONDITION - can_user_access_dossiers_confidentiels_from_groupe
2104 *
2105 * Permet de savoir si le type de dossier d'autorisation du dossier courant est
2106 * considéré comme confidentiel ou si l'utilisateur a le groupe bypass.
2107 *
2108 * @param string $groupe Code du groupe : ADS / CTX / CU / RU / ERP.
2109 * @return boolean true si l'utilisateur à accès aux dossiers confidentiels du groupe
2110 * passé en paramètre, sinon false.
2111 *
2112 */
2113 public function can_user_access_dossiers_confidentiels_from_groupe($groupe) {
2114 if ((isset($_SESSION['groupe'][$groupe]['confidentiel']) === true
2115 AND $_SESSION['groupe'][$groupe]['confidentiel'] === true)
2116 || array_key_exists("bypass", $_SESSION['groupe']) === true) {
2117 return true;
2118 }
2119 return false;
2120 }
2121
2122 public function starts_with($haystack, $needle) {
2123 $length = strlen($needle);
2124 return (substr($haystack, 0, $length) === $needle);
2125 }
2126
2127 public function ends_with($haystack, $needle) {
2128 $length = strlen($needle);
2129 if ($length == 0) {
2130 return true;
2131 }
2132 return (substr($haystack, -$length) === $needle);
2133 }
2134
2135 /**
2136 * Récupère le type définit dans la base de données des champs d'une table
2137 * entière ou d'un champs si celui-ci est précisé.
2138 *
2139 * Liste des types BDD :
2140 * - int4
2141 * - varchar
2142 * - bool
2143 * - numeric
2144 * - text
2145 *
2146 * @param string $table Nom de la table.
2147 * @param string $column Nom de la colonne (facultatif).
2148 *
2149 * @return array
2150 */
2151 public function get_type_from_db($table, $column = null) {
2152 // Composition de la requête
2153 $sql_select = ' SELECT column_name, udt_name ';
2154 $sql_from = ' FROM information_schema.columns ';
2155 $sql_where = ' WHERE table_schema = \''.str_replace('.', '', DB_PREFIXE).'\' AND table_name = \''.$table.'\' ';
2156 $sql_order = ' ORDER BY ordinal_position ';
2157
2158 // Si une colonne est précisé
2159 if ($column !== null || $column !== '') {
2160 //
2161 $sql_where .= ' AND column_name = \''.$column.'\' ';
2162 }
2163
2164 // Requête SQL
2165 $sql = $sql_select.$sql_from.$sql_where.$sql_order;
2166 // Exécution de la requête
2167 $res = $this->db->query($sql);
2168 // Log
2169 $this->addToLog(__METHOD__."() : db->query(\"".$sql."\");", VERBOSE_MODE);
2170 // Erreur BDD
2171 $this->isDatabaseError($res);
2172 //
2173 $list_type = array();
2174 while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
2175 $list_type[$row['column_name']] = $row['udt_name'];
2176 }
2177
2178 // Retourne la liste des codes
2179 return $list_type;
2180 }
2181
2182
2183 /**
2184 * Cette méthode permet de récupérer le code de division correspondant
2185 * au dossier sur lequel on se trouve.
2186 *
2187 * Méthode identique à la méthode getDivisionFromDossier() de la classe
2188 * om_dbform à l'exception d'un cas de récupération du numéro de dossier par
2189 * la méthode getVal(). Cette exception permet d'utiliser cette méthode dans
2190 * les scripts instanciant seulement la classe utils tel que les *.inc.php.
2191 *
2192 * @param string $dossier Identifiant du dossier d'instruction.
2193 *
2194 * @return string Code de la division du dossier en cours
2195 */
2196 public function get_division_from_dossier_without_inst($dossier = null) {
2197
2198 // Cette méthode peut être appelée plusieurs fois lors d'une requête.
2199 // Pour éviter de refaire le traitement de recherche de la division
2200 // alors on vérifie si nous ne l'avons pas déjà calculé.
2201 if (isset($this->_division_from_dossier) === true
2202 && $this->_division_from_dossier !== null) {
2203 // Log
2204 $this->addToLog(__METHOD__."() : retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
2205 // On retourne la valeur déjà calculée
2206 return $this->_division_from_dossier;
2207 }
2208
2209 // Récupère le paramétre retourformulaire présent dans l'URL
2210 $retourformulaire = $this->getParameter("retourformulaire");
2211 // Récupère le paramétre idxformulaire présent dans l'URL
2212 $idxformulaire = $this->getParameter("idxformulaire");
2213
2214 // Si le dossier n'est pas passé en paramètre de la méthode
2215 if ($dossier === null) {
2216
2217 // La méthode de récupération du dossier diffère selon le contexte
2218 // du formulaire
2219 if ($retourformulaire === "dossier"
2220 || $retourformulaire === "dossier_instruction"
2221 || $retourformulaire === "dossier_instruction_mes_encours"
2222 || $retourformulaire === "dossier_instruction_tous_encours"
2223 || $retourformulaire === "dossier_instruction_mes_clotures"
2224 || $retourformulaire === "dossier_instruction_tous_clotures"
2225 || $retourformulaire === "dossier_contentieux_mes_infractions"
2226 || $retourformulaire === "dossier_contentieux_toutes_infractions"
2227 || $retourformulaire === "dossier_contentieux_mes_recours"
2228 || $retourformulaire === "dossier_contentieux_tous_recours") {
2229
2230 // Récupère le numéro du dossier depuis le paramètre
2231 // idxformulaire présent dans l'URL
2232 $dossier = $idxformulaire;
2233 }
2234 //
2235 if ($retourformulaire === "lot") {
2236
2237 // Requête SQL
2238 $sql = sprintf("SELECT dossier FROM ".DB_PREFIXE."lot WHERE lot = %s", $idxformulaire);
2239 // Récupère l'identifiant du dossier
2240 $dossier = $this->db->getone($sql);
2241 // Log
2242 $this->addToLog(__METHOD__."() : db->query(\"".$dossier."\");", VERBOSE_MODE);
2243 // Erreur BDD
2244 $this->isDatabaseError($dossier);
2245 }
2246 }
2247
2248 // À cette étape si le dossier n'est toujours pas récupéré alors la
2249 // division ne pourra pas être récupérée
2250 if ($dossier === null) {
2251 //
2252 return null;
2253 }
2254
2255 // Requête SQL
2256 $sql = sprintf("SELECT division FROM ".DB_PREFIXE."dossier WHERE dossier = '%s'", $dossier);
2257 // Récupère l'identifiant de la division du dossier
2258 $this->_division_from_dossier = $this->db->getOne($sql);
2259 // Log
2260 $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\")", VERBOSE_MODE);
2261 // Erreur BDD
2262 $this->isDatabaseError($this->_division_from_dossier);
2263
2264 //
2265 return $this->_division_from_dossier;
2266
2267 }
2268
2269 /**
2270 *
2271 */
2272 function setDefaultValues() {
2273 $this->addHTMLHeadCss(
2274 array(
2275 "../app/lib/chosen/chosen.min.css",
2276 ),
2277 21
2278 );
2279 $this->addHTMLHeadJs(
2280 array(
2281 "../app/lib/chosen/chosen.jquery.min.js",
2282 ),
2283 21
2284 );
2285 }
2286
2287 /**
2288 * Permet de définir la configuration des liens du footer.
2289 *
2290 * @return void
2291 */
2292 protected function set_config__footer() {
2293 $footer = array();
2294 // Documentation du site
2295 $footer[] = array(
2296 "title" => __("Documentation"),
2297 "description" => __("Acceder a l'espace documentation de l'application"),
2298 "href" => "http://docs.openmairie.org/?project=openads&version=4.13&format=html&path=manuel_utilisateur",
2299 "target" => "_blank",
2300 "class" => "footer-documentation",
2301 );
2302
2303 // Forum openMairie
2304 $footer[] = array(
2305 "title" => __("Forum"),
2306 "description" => __("Espace d'échange ouvert du projet openMairie"),
2307 "href" => "https://communaute.openmairie.org/c/openads",
2308 "target" => "_blank",
2309 "class" => "footer-forum",
2310 );
2311
2312 // Portail openMairie
2313 $footer[] = array(
2314 "title" => __("openMairie.org"),
2315 "description" => __("Site officiel du projet openMairie"),
2316 "href" => "http://www.openmairie.org/catalogue/openads",
2317 "target" => "_blank",
2318 "class" => "footer-openmairie",
2319 );
2320 //
2321 $this->config__footer = $footer;
2322 }
2323
2324 /**
2325 * Surcharge - set_config__menu().
2326 *
2327 * @return void
2328 */
2329 protected function set_config__menu() {
2330 //
2331 $menu = array();
2332
2333 // {{{ Rubrique AUTORISATION
2334 //
2335 $rubrik = array(
2336 "title" => _("Autorisation"),
2337 "class" => "autorisation",
2338 "right" => "menu_autorisation",
2339 );
2340 //
2341 $links = array();
2342
2343 $links[] = array(
2344 "href" => "".OM_ROUTE_TAB."&obj=dossier_autorisation",
2345 "class" => "dossier_autorisation",
2346 "title" => _("Dossiers d'autorisation"),
2347 "right" => array("dossier_autorisation", "dossier_autorisation_tab", ),
2348 "open" => array("index.php|dossier_autorisation[module=tab]", "index.php|dossier_autorisation[module=form]", ),
2349 );
2350
2351 // Lien vers les dossiers d'autorisations qui ont une demande d'avis
2352 $links[] = array(
2353 "href" => "".OM_ROUTE_TAB."&obj=dossier_autorisation_avis",
2354 "class" => "dossier_autorisation",
2355 "title" => _("Dossiers d'autorisation"),
2356 "right" => array(
2357 "dossier_autorisation_avis",
2358 "dossier_autorisation_avis_tab",
2359 ),
2360 "open" => array("index.php|dossier_autorisation_avis[module=tab]", "index.php|dossier_autorisation[module=form]", ),
2361 );
2362
2363 //
2364 $rubrik['links'] = $links;
2365 //
2366 $menu[] = $rubrik;
2367 // }}}
2368
2369 // {{{ Rubrique GUICHET UNIQUE
2370 //
2371 $rubrik = array(
2372 "title" => _("Guichet Unique"),
2373 "class" => "guichet_unique",
2374 "right" => "menu_guichet_unique",
2375 );
2376 //
2377 $links = array();
2378 //
2379 $links[] = array(
2380 "href" => OM_ROUTE_DASHBOARD,
2381 "class" => "tableau-de-bord",
2382 "title" => _("tableau de bord"),
2383 "right" => "menu_guichet_unique_dashboard",
2384 "open" => array("index.php|[module=dashboard]",),
2385 );
2386 //
2387 $links[] = array(
2388 "class" => "category",
2389 "title" => _("nouvelle demande"),
2390 "right" => array(
2391 "demande",
2392 "demande_nouveau_dossier_ajouter",
2393 "demande_dossier_encours_ajouter", "demande_dossier_encours_tab",
2394 "demande_autre_dossier_ajouter", "demande_autre_dossier_tab",
2395 "demande_consulter","demande_tab",
2396 ),
2397 );
2398 $links[] = array(
2399 "title" => "<hr/>",
2400 "right" => array(
2401 "demande",
2402 "demande_dossier_encours_ajouter",
2403 "demande_dossier_encours_ajouter", "demande_dossier_encours_tab",
2404 ),
2405 );
2406 $links[] = array(
2407 "href" => "".OM_ROUTE_FORM."&obj=demande_nouveau_dossier&amp;action=0&amp;advs_id=&amp;tricol=&amp;valide=&amp;retour=tab&amp;new=",
2408 "class" => "nouveau-dossier",
2409 "title" => _("nouveau dossier"),
2410 "right" => array(
2411 "demande",
2412 "demande_nouveau_dossier_ajouter",
2413 ),
2414 "open" => array("index.php|demande_nouveau_dossier[module=form]",),
2415 );
2416 $links[] = array(
2417 "href" => "".OM_ROUTE_TAB."&obj=demande_dossier_encours",
2418 "class" => "dossier-existant",
2419 "title" => _("dossier en cours"),
2420 "right" => array(
2421 "demande",
2422 "demande_dossier_encours_ajouter",
2423 "demande_dossier_encours_tab",
2424 ),
2425 "open" => array("index.php|demande_dossier_encours[module=tab]", "index.php|demande_dossier_encours[module=form]"),
2426 );
2427 $links[] = array(
2428 "href" => "".OM_ROUTE_TAB."&obj=demande_autre_dossier",
2429 "class" => "autre-dossier",
2430 "title" => _("autre dossier"),
2431 "right" => array(
2432 "demande",
2433 "demande_autre_dossier_ajouter",
2434 "demande_autre_dossier_tab",
2435 ),
2436 "open" => array("index.php|demande_autre_dossier[module=tab]", "index.php|demande_autre_dossier[module=form]"),
2437 );
2438 $links[] = array(
2439 "title" => "<hr/>",
2440 "right" => array(
2441 "demande",
2442 "demande_consulter",
2443 "demande_tab"
2444 ),
2445 );
2446 $links[] = array(
2447 "href" => "".OM_ROUTE_TAB."&obj=demande",
2448 "class" => "pdf",
2449 "title" => _("recepisse"),
2450 "right" => array(
2451 "demande",
2452 "demande_consulter",
2453 "demande_tab"
2454 ),
2455 "open" => array("index.php|demande[module=tab]","index.php|demande[module=form]"),
2456 );
2457 $links[] = array(
2458 "title" => "<hr/>",
2459 "right" => array(
2460 "petitionnaire_frequent",
2461 "petitionnaire_frequent_consulter",
2462 "petitionnaire_frequent_tab"
2463 ),
2464 );
2465 $links[] = array(
2466 "href" => "".OM_ROUTE_TAB."&obj=petitionnaire_frequent",
2467 "class" => "petitionnaire_frequent",
2468 "title" => _("petitionnaire_frequent"),
2469 "right" => array(
2470 "petitionnaire_frequent",
2471 "petitionnaire_frequent_consulter",
2472 "petitionnaire_frequent_tab"
2473 ),
2474 "open" => array("index.php|petitionnaire_frequent[module=tab]","index.php|petitionnaire_frequent[module=form]"),
2475 );
2476 //
2477 $links[] = array(
2478 "class" => "category",
2479 "title" => _("affichage reglementaire"),
2480 "right" => array(
2481 "affichage_reglementaire_registre",
2482 "affichage_reglementaire_attestation",
2483 ),
2484 );
2485 $links[] = array(
2486 "title" => "<hr/>",
2487 "right" => array(
2488 "affichage_reglementaire_registre",
2489 "affichage_reglementaire_attestation",
2490 ),
2491 );
2492 $links[] = array(
2493 "href" => "".OM_ROUTE_FORM."&obj=demande_affichage_reglementaire_registre&action=110&idx=0",
2494 "class" => "affichage_reglementaire_registre",
2495 "title" => _("registre"),
2496 "right" => array(
2497 "affichage_reglementaire_registre",
2498 ),
2499 "open" => array("index.php|demande_affichage_reglementaire_registre[module=tab]", "index.php|demande_affichage_reglementaire_registre[module=form]"),
2500 );
2501 $links[] = array(
2502 "href" => "".OM_ROUTE_FORM."&obj=demande_affichage_reglementaire_attestation&action=120&idx=0",
2503 "class" => "affichage_reglementaire_attestation",
2504 "title" => _("attestation"),
2505 "right" => array(
2506 "affichage_reglementaire_attestation",
2507 ),
2508 "open" => array("index.php|demande_affichage_reglementaire_attestation[module=tab]", "index.php|demande_affichage_reglementaire_attestation[module=form]"),
2509 );
2510 //
2511 $rubrik['links'] = $links;
2512 //
2513 $menu[] = $rubrik;
2514 // }}}
2515
2516 // {{{ Rubrique QUALIFICATION
2517 //
2518 $rubrik = array(
2519 "title" => _("Qualification"),
2520 "class" => "qualification",
2521 "right" => "qualification_menu",
2522 );
2523 //
2524 $links = array();
2525 //
2526 $links[] = array(
2527 "href" => OM_ROUTE_DASHBOARD,
2528 "class" => "tableau-de-bord",
2529 "title" => _("tableau de bord"),
2530 "right" => "menu_qualification_dashboard",
2531 "open" => array("index.php|[module=dashboard]",),
2532 );
2533
2534 //
2535 $links[] = array(
2536 "href" => "".OM_ROUTE_TAB."&obj=dossier_qualifier_qualificateur",
2537 "class" => "dossier_qualifier_qualificateur",
2538 "title" => _("dossiers a qualifier"),
2539 "right" => array(
2540 "dossier_qualifier_qualificateur",
2541 "dossier_qualifier_qualificateur_tab",
2542 ),
2543 "open" => array("index.php|dossier_qualifier_qualificateur[module=tab]", "index.php|dossier_instruction[module=form]", ),
2544 );
2545
2546 //
2547 $rubrik['links'] = $links;
2548 //
2549 $menu[] = $rubrik;
2550 // }}}
2551
2552 // {{{ Rubrique INSTRUCTION
2553 //
2554 $rubrik = array(
2555 "title" => _("instruction"),
2556 "class" => "instruction",
2557 "right" => "menu_instruction",
2558 );
2559 //
2560 $links = array();
2561 //
2562 $links[] = array(
2563 "href" => OM_ROUTE_DASHBOARD,
2564 "class" => "tableau-de-bord",
2565 "title" => _("tableau de bord"),
2566 "right" => "menu_instruction_dashboard",
2567 "open" => array("index.php|[module=dashboard]",),
2568 );
2569 // Catégorie DOSSIERS D'INSTRUCTION
2570 $links[] = array(
2571 "class" => "category",
2572 "title" => _("dossiers d'instruction"),
2573 "right" => array(
2574 "dossier_instruction_mes_encours", "dossier_instruction_mes_encours_tab",
2575 "dossier_instruction_tous_encours", "dossier_instruction_tous_encours_tab",
2576 "dossier_instruction_mes_clotures", "dossier_instruction_mes_clotures_tab",
2577 "dossier_instruction_tous_clotures", "dossier_instruction_tous_clotures_tab",
2578 "dossier_instruction", "dossier_instruction_tab",
2579 "PC_modificatif", "PC_modificatif_tab",
2580 ),
2581 );
2582 $links[] = array(
2583 "title" => "<hr/>",
2584 "right" => array(
2585 "dossier_instruction_mes_encours", "dossier_instruction_mes_encours_tab",
2586 "dossier_instruction_tous_encours", "dossier_instruction_tous_encours_tab",
2587 ),
2588 );
2589 //
2590 $links[] = array(
2591 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_mes_encours",
2592 "class" => "dossier_instruction_mes_encours",
2593 "title" => _("mes encours"),
2594 "right" => array("dossier_instruction_mes_encours", "dossier_instruction_mes_encours_tab", ),
2595 "open" => array("index.php|dossier_instruction_mes_encours[module=tab]", "index.php|dossier_instruction_mes_encours[module=form]", ),
2596 );
2597 //
2598 $links[] = array(
2599 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_tous_encours",
2600 "class" => "dossier_instruction_tous_encours",
2601 "title" => _("tous les encours"),
2602 "right" => array("dossier_instruction_tous_encours", "dossier_instruction_tous_encours_tab", ),
2603 "open" => array("index.php|dossier_instruction_tous_encours[module=tab]", "index.php|dossier_instruction_tous_encours[module=form]", ),
2604 );
2605 //
2606 $links[] = array(
2607 "title" => "<hr/>",
2608 "right" => array(
2609 "dossier_instruction_mes_clotures", "dossier_instruction_mes_clotures_tab",
2610 "dossier_instruction_tous_clotures", "dossier_instruction_tous_clotures_tab",
2611 ),
2612 );
2613 //
2614 $links[] = array(
2615 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_mes_clotures",
2616 "class" => "dossier_instruction_mes_clotures",
2617 "title" => _("mes clotures"),
2618 "right" => array("dossier_instruction_mes_clotures", "dossier_instruction_mes_clotures_tab", ),
2619 "open" => array("index.php|dossier_instruction_mes_clotures[module=tab]", "index.php|dossier_instruction_mes_clotures[module=form]", ),
2620 );
2621 //
2622 $links[] = array(
2623 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_tous_clotures",
2624 "class" => "dossier_instruction_tous_clotures",
2625 "title" => _("tous les clotures"),
2626 "right" => array("dossier_instruction_tous_clotures", "dossier_instruction_tous_clotures_tab", ),
2627 "open" => array("index.php|dossier_instruction_tous_clotures[module=tab]", "index.php|dossier_instruction_tous_clotures[module=form]", ),
2628 );
2629 //
2630 $links[] = array(
2631 "title" => "<hr/>",
2632 "right" => array(
2633 "dossier_instruction", "dossier_instruction_tab",
2634 ),
2635 );
2636 //
2637 $links[] = array(
2638 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction",
2639 "class" => "dossier_instruction_recherche",
2640 "title" => _("recherche"),
2641 "right" => array("dossier_instruction", "dossier_instruction_tab", ),
2642 "open" => array("index.php|dossier_instruction[module=tab]", "index.php|dossier_instruction[module=form]", ),
2643 );
2644
2645 // Catégorier Qualification
2646 $links[] = array(
2647 "class" => "category",
2648 "title" => _("qualification"),
2649 "right" => array("dossier_qualifier", "architecte_frequent",),
2650 );
2651 //
2652 $links[] = array(
2653 "title" => "<hr/>",
2654 "right" => array("dossier_qualifier", "architecte_frequent", ),
2655 );
2656 //
2657 $links[] = array(
2658 "href" => "".OM_ROUTE_TAB."&obj=dossier_qualifier",
2659 "class" => "dossier_qualifier",
2660 "title" => _("dossiers a qualifier"),
2661 "right" => array("dossier_qualifier", "dossier_qualifier_tab", ),
2662 "open" => array("index.php|dossier_qualifier[module=tab]", "index.php|dossier_qualifier[module=form]", ),
2663 );
2664 //
2665 $links[] = array(
2666 "href" => "".OM_ROUTE_TAB."&obj=architecte_frequent",
2667 "class" => "architecte_frequent",
2668 "title" => _("architecte_frequent"),
2669 "right" => array("architecte_frequent", "architecte_frequent_tab", ),
2670 "open" => array("index.php|architecte_frequent[module=tab]", "index.php|architecte_frequent[module=form]", ),
2671 );
2672 // Catégorie CONSULTATIONS
2673 $links[] = array(
2674 "class" => "category",
2675 "title" => _("consultations"),
2676 "right" => array(
2677 "consultation",
2678 "consultation_mes_retours",
2679 "consultation_retours_ma_division",
2680 "consultation_tous_retours",
2681 ),
2682 );
2683 $links[] = array(
2684 "title" => "<hr/>",
2685 "right" => array(
2686 "consultation",
2687 "consultation_mes_retours",
2688 "consultation_retours_ma_division",
2689 "consultation_tous_retours",
2690 ),
2691 );
2692 $links[] = array(
2693 "href" => "".OM_ROUTE_TAB."&obj=consultation_mes_retours",
2694 "class" => "consultation_mes_retours",
2695 "title" => _("Mes retours"),
2696 "right" => array(
2697 "consultation",
2698 "consultation_mes_retours",
2699 "consultation_mes_retours_tab",
2700 ),
2701 "open" => array("index.php|consultation_mes_retours[module=tab]", "index.php|consultation_mes_retours[module=form]", ),
2702 );
2703 $links[] = array(
2704 "href" => "".OM_ROUTE_TAB."&obj=consultation_retours_ma_division",
2705 "class" => "consultation_retours_ma_division",
2706 "title" => _("Retours de ma division"),
2707 "right" => array(
2708 "consultation",
2709 "consultation_retours_ma_division",
2710 "consultation_retours_ma_division_tab",
2711 ),
2712 "open" => array("index.php|consultation_retours_ma_division[module=tab]", "index.php|consultation_retours_ma_division[module=form]", ),
2713 );
2714 $links[] = array(
2715 "href" => "".OM_ROUTE_TAB."&obj=consultation_tous_retours",
2716 "class" => "consultation_tous_retours",
2717 "title" => _("Tous les retours"),
2718 "right" => array(
2719 "consultation_tous_retours",
2720 "consultation_tous_retours_tab",
2721 ),
2722 "open" => array("index.php|consultation_tous_retours[module=tab]", "index.php|consultation_tous_retours[module=form]", ),
2723 );
2724 // Catégorie MESSAGES
2725 $links[] = array(
2726 "class" => "category",
2727 "title" => _("Messages"),
2728 "right" => array(
2729 "messages",
2730 "messages_mes_retours",
2731 "messages_retours_ma_division",
2732 "messages_tous_retours",
2733 ),
2734 );
2735 //
2736 $links[] = array(
2737 "title" => "<hr/>",
2738 "right" => array(
2739 "messages",
2740 "messages_mes_retours",
2741 "messages_retours_ma_division",
2742 "messages_tous_retours",
2743 ),
2744 );
2745 //
2746 $links[] = array(
2747 "href" => "".OM_ROUTE_TAB."&obj=messages_mes_retours",
2748 "class" => "messages_mes_retours",
2749 "title" => _("Mes messages"),
2750 "right" => array(
2751 "messages",
2752 "messages_mes_retours",
2753 "messages_mes_retours_tab",
2754 ),
2755 "open" => array("index.php|messages_mes_retours[module=tab]", "index.php|messages_mes_retours[module=form]", ),
2756 );
2757 //
2758 $links[] = array(
2759 "href" => "".OM_ROUTE_TAB."&obj=messages_retours_ma_division",
2760 "class" => "messages_retours_ma_division",
2761 "title" => _("Messages de ma division"),
2762 "right" => array(
2763 "messages",
2764 "messages_retours_ma_division",
2765 "messages_retours_ma_division_tab",
2766 ),
2767 "open" => array("index.php|messages_retours_ma_division[module=tab]", "index.php|messages_retours_ma_division[module=form]", ),
2768 );
2769 //
2770 $links[] = array(
2771 "href" => "".OM_ROUTE_TAB."&obj=messages_tous_retours",
2772 "class" => "messages_tous_retours",
2773 "title" => _("Tous les messages"),
2774 "right" => array(
2775 "messages",
2776 "messages_tous_retours",
2777 "messages_tous_retours_tab",
2778 ),
2779 "open" => array("index.php|messages_tous_retours[module=tab]", "index.php|messages_tous_retours[module=form]", ),
2780 );
2781 // Catégorie COMMISSIONS
2782 $links[] = array(
2783 "class" => "category",
2784 "title" => _("commissions"),
2785 "right" => array(
2786 "commission_mes_retours",
2787 "commission_mes_retours_tab",
2788 "commission_retours_ma_division",
2789 "commission_retours_ma_division_tab",
2790 "commission_tous_retours",
2791 "commission_tous_retours_tab",
2792 ),
2793 );
2794 $links[] = array(
2795 "title" => "<hr/>",
2796 "right" => array(
2797 "commission_mes_retours",
2798 "commission_mes_retours_tab",
2799 "commission_retours_ma_division",
2800 "commission_retours_ma_division_tab",
2801 "commission_tous_retours",
2802 "commission_tous_retours_tab",
2803 ),
2804 );
2805 $links[] = array(
2806 "href" => "".OM_ROUTE_TAB."&obj=commission_mes_retours",
2807 "class" => "commission_mes_retours",
2808 "title" => _("Mes retours"),
2809 "right" => array(
2810 "commission_mes_retours",
2811 "commission_mes_retours_tab",
2812 ),
2813 "open" => array("index.php|commission_mes_retours[module=tab]", "index.php|commission_mes_retours[module=form]", ),
2814 );
2815 $links[] = array(
2816 "href" => "".OM_ROUTE_TAB."&obj=commission_retours_ma_division",
2817 "class" => "commission_retours_ma_division",
2818 "title" => _("Retours de ma division"),
2819 "right" => array(
2820 "commission_retours_ma_division",
2821 "commission_retours_ma_division_tab",
2822 ),
2823 "open" => array("index.php|commission_retours_ma_division[module=tab]", "index.php|commission_retours_ma_division[module=form]", ),
2824 );
2825 $links[] = array(
2826 "href" => "".OM_ROUTE_TAB."&obj=commission_tous_retours",
2827 "class" => "commission_tous_retours",
2828 "title" => _("Tous les retours"),
2829 "right" => array(
2830 "commission_tous_retours",
2831 "commission_tous_retours_tab",
2832 ),
2833 "open" => array("index.php|commission_tous_retours[module=tab]", "index.php|commission_tous_retours[module=form]", ),
2834 );
2835
2836 //
2837 $rubrik['links'] = $links;
2838 //
2839 $menu[] = $rubrik;
2840 // }}}
2841
2842 // {{{ Rubrique Contentieux
2843 //
2844 $rubrik = array(
2845 "title" => _("Contentieux"),
2846 "class" => "contentieux",
2847 "right" => "menu_contentieux",
2848 );
2849 //
2850 $links = array();
2851 //
2852 $links[] = array(
2853 "href" => OM_ROUTE_DASHBOARD,
2854 "class" => "tableau-de-bord",
2855 "title" => _("tableau de bord"),
2856 "right" => "menu_contentieux_dashboard",
2857 "open" => array("index.php|[module=dashboard]", "index.php|dossier_contentieux_contradictoire[module=tab]", "index.php|dossier_contentieux_ait[module=tab]", "index.php|dossier_contentieux_audience[module=tab]", "index.php|dossier_contentieux_clotures[module=tab]", "index.php|dossier_contentieux_inaffectes[module=tab]", "index.php|dossier_contentieux_alerte_visite[module=tab]", "index.php|dossier_contentieux_alerte_parquet[module=tab]", ),
2858 );
2859 // Catégorie Nouvelle demande
2860 $links[] = array(
2861 "class" => "category",
2862 "title" => _("Nouvelle demande"),
2863 "right" => array(
2864 "demande_nouveau_dossier_contentieux_ajouter",
2865 ),
2866 );
2867 $links[] = array(
2868 "href" => "".OM_ROUTE_FORM."&obj=demande_nouveau_dossier_contentieux&amp;action=0&amp;advs_id=&amp;tricol=&amp;valide=&amp;retour=tab&amp;new=",
2869 "class" => "nouveau-dossier",
2870 "title" => _("nouveau dossier"),
2871 "right" => array(
2872 "demande_nouveau_dossier_contentieux_ajouter",
2873 ),
2874 "open" => array("index.php|demande_nouveau_dossier_contentieux[module=form]",),
2875 );
2876 // Catégorie Recours
2877 $links[] = array(
2878 "class" => "category",
2879 "title" => _("Recours"),
2880 "right" => array(
2881 "dossier_contentieux_mes_recours", "dossier_contentieux_mes_recours_tab",
2882 "dossier_contentieux_tous_recours", "dossier_contentieux_tous_recours_tab",
2883 ),
2884 );
2885 //
2886 $links[] = array(
2887 "href" => "".OM_ROUTE_TAB."&obj=dossier_contentieux_mes_recours",
2888 "class" => "dossier_contentieux_mes_recours",
2889 "title" => _("Mes recours"),
2890 "right" => array("dossier_contentieux_mes_recours", "dossier_contentieux_mes_recours_tab", ),
2891 "open" => array("index.php|dossier_contentieux_mes_recours[module=tab]", "index.php|dossier_contentieux_mes_recours[module=form]", ),
2892 );
2893 $links[] = array(
2894 "href" => "".OM_ROUTE_TAB."&obj=dossier_contentieux_tous_recours",
2895 "class" => "dossier_contentieux_tous_recours",
2896 "title" => _("Tous les recours"),
2897 "right" => array("dossier_contentieux_tous_recours", "dossier_contentieux_tous_recours_tab", ),
2898 "open" => array("index.php|dossier_contentieux_tous_recours[module=tab]", "index.php|dossier_contentieux_tous_recours[module=form]", ),
2899 );
2900 // Catégorie Infractions
2901 $links[] = array(
2902 "class" => "category",
2903 "title" => _("Infractions"),
2904 "right" => array(
2905 "dossier_contentieux_mes_infractions", "dossier_contentieux_mes_infractions_tab",
2906 "dossier_contentieux_toutes_infractions", "dossier_contentieux_toutes_infractions_tab",
2907 ),
2908 );
2909 //
2910 $links[] = array(
2911 "href" => "".OM_ROUTE_TAB."&obj=dossier_contentieux_mes_infractions",
2912 "class" => "dossier_contentieux_mes_infractions",
2913 "title" => _("Mes infractions"),
2914 "right" => array("dossier_contentieux_mes_infractions", "dossier_contentieux_mes_infractions_tab", ),
2915 "open" => array("index.php|dossier_contentieux_mes_infractions[module=tab]", "index.php|dossier_contentieux_mes_infractions[module=form]", ),
2916 );
2917 //
2918 $links[] = array(
2919 "href" => "".OM_ROUTE_TAB."&obj=dossier_contentieux_toutes_infractions",
2920 "class" => "dossier_contentieux_toutes_infractions",
2921 "title" => _("Toutes les infractions"),
2922 "right" => array("dossier_contentieux_toutes_infractions", "dossier_contentieux_toutes_infractions_tab", ),
2923 "open" => array("index.php|dossier_contentieux_toutes_infractions[module=tab]", "index.php|dossier_contentieux_toutes_infractions[module=form]", ),
2924 );
2925 // Catégorie MESSAGES
2926 $links[] = array(
2927 "class" => "category",
2928 "title" => _("Messages"),
2929 "right" => array(
2930 "messages_contentieux",
2931 "messages_contentieux_mes_retours",
2932 "messages_contentieux_retours_ma_division",
2933 "messages_contentieux_tous_retours",
2934 ),
2935 );
2936 //
2937 $links[] = array(
2938 "title" => "<hr/>",
2939 "right" => array(
2940 "messages_contentieux",
2941 "messages_contentieux_mes_retours",
2942 "messages_contentieux_retours_ma_division",
2943 "messages_contentieux_tous_retours",
2944 ),
2945 );
2946 //
2947 $links[] = array(
2948 "href" => "".OM_ROUTE_TAB."&obj=messages_contentieux_mes_retours",
2949 "class" => "messages_contentieux_mes_retours",
2950 "title" => _("Mes messages"),
2951 "right" => array(
2952 "messages_contentieux",
2953 "messages_contentieux_mes_retours",
2954 "messages_contentieux_mes_retours_tab",
2955 ),
2956 "open" => array("index.php|messages_contentieux_mes_retours[module=tab]", "index.php|messages_contentieux_mes_retours[module=form]", ),
2957 );
2958 //
2959 $links[] = array(
2960 "href" => "".OM_ROUTE_TAB."&obj=messages_contentieux_retours_ma_division",
2961 "class" => "messages_contentieux_retours_ma_division",
2962 "title" => _("Messages de ma division"),
2963 "right" => array(
2964 "messages_contentieux",
2965 "messages_contentieux_retours_ma_division",
2966 "messages_contentieux_retours_ma_division_tab",
2967 ),
2968 "open" => array("index.php|messages_contentieux_retours_ma_division[module=tab]", "index.php|messages_contentieux_retours_ma_division[module=form]", ),
2969 );
2970 //
2971 $links[] = array(
2972 "href" => "".OM_ROUTE_TAB."&obj=messages_contentieux_tous_retours",
2973 "class" => "messages_contentieux_tous_retours",
2974 "title" => _("Tous les messages"),
2975 "right" => array(
2976 "messages_contentieux",
2977 "messages_contentieux_tous_retours",
2978 "messages_contentieux_tous_retours_tab",
2979 ),
2980 "open" => array("index.php|messages_contentieux_tous_retours[module=tab]", "index.php|messages_contentieux_tous_retours[module=form]", ),
2981 );
2982
2983
2984 //
2985 $rubrik['links'] = $links;
2986 //
2987 $menu[] = $rubrik;
2988 // }}}
2989
2990 // {{{ Rubrique SUIVI
2991 //
2992 $rubrik = array(
2993 "title" => _("Suivi"),
2994 "class" => "suivi",
2995 "right" => "menu_suivi",
2996 );
2997 //
2998 $links = array();
2999 //
3000 $links[] = array(
3001 "href" => OM_ROUTE_DASHBOARD,
3002 "class" => "tableau-de-bord",
3003 "title" => _("tableau de bord"),
3004 "right" => "menu_suivi_dashboard",
3005 "open" => array("index.php|[module=dashboard]",),
3006 );
3007 $links[] = array(
3008 "class" => "category",
3009 "title" => _("suivi des pieces"),
3010 "right" => array(
3011 "instruction_suivi_retours_de_consultation", "instruction_suivi_mise_a_jour_des_dates",
3012 "instruction_suivi_envoi_lettre_rar", "instruction_suivi_bordereaux",
3013 "instruction_suivi_retours_de_consultation_consulter", "instruction_suivi_mise_a_jour_des_dates_consulter",
3014 "instruction_suivi_envoi_lettre_rar_consulter", "instruction_suivi_bordereaux_consulter",
3015 ),
3016 );
3017 //
3018 $links[] = array(
3019 "title" => "<hr/>",
3020 "right" => array(
3021 "instruction_suivi_retours_de_consultation", "instruction_suivi_mise_a_jour_des_dates",
3022 "instruction_suivi_envoi_lettre_rar", "instruction_suivi_bordereaux",
3023 "instruction_suivi_retours_de_consultation_consulter", "instruction_suivi_mise_a_jour_des_dates_consulter",
3024 "instruction_suivi_envoi_lettre_rar_consulter", "instruction_suivi_bordereaux_consulter",
3025 ),
3026 );
3027 //
3028 $links[] = array(
3029 "title" => "<hr/>",
3030 "right" => array(
3031 "instruction_suivi_mise_a_jour_des_dates", "instruction_suivi_mise_a_jour_des_dates_consulter",
3032 ),
3033 );
3034 //
3035 $links[] = array(
3036 "href" => "".OM_ROUTE_FORM."&obj=instruction_suivi_mise_a_jour_des_dates&action=170&idx=0",
3037 "class" => "suivi_mise_a_jour_des_dates",
3038 "title" => _("Mise a jour des dates"),
3039 "right" => array("instruction_suivi_mise_a_jour_des_dates", "instruction_suivi_mise_a_jour_des_dates_consulter", ),
3040 "open" => array("index.php|instruction_suivi_mise_a_jour_des_dates[module=tab]", "index.php|instruction_suivi_mise_a_jour_des_dates[module=form]"),
3041 );
3042 //
3043 $links[] = array(
3044 "title" => "<hr/>",
3045 "right" => array(
3046 "instruction_suivi_envoi_lettre_rar", "instruction_suivi_envoi_lettre_rar_consulter",
3047 ),
3048 );
3049 //
3050 $links[] = array(
3051 "href" => "".OM_ROUTE_FORM."&obj=instruction_suivi_envoi_lettre_rar&action=160&idx=0",
3052 "class" => "envoi_lettre_rar",
3053 "title" => _("envoi lettre AR"),
3054 "right" => array("instruction_suivi_envoi_lettre_rar", "instruction_suivi_envoi_lettre_rar_consulter", ),
3055 "open" => array("index.php|instruction_suivi_envoi_lettre_rar[module=tab]", "index.php|instruction_suivi_envoi_lettre_rar[module=form]"),
3056 );
3057 //
3058 $links[] = array(
3059 "title" => "<hr/>",
3060 "right" => array(
3061 "instruction_suivi_bordereaux", "instruction_suivi_bordereaux_consulter",
3062 ),
3063 );
3064 //
3065 $links[] = array(
3066 "href" => "".OM_ROUTE_FORM."&obj=instruction_suivi_bordereaux&action=150&idx=0",
3067 "class" => "bordereaux",
3068 "title" => _("Bordereaux"),
3069 "right" => array("instruction_suivi_bordereaux", "instruction_suivi_bordereaux_consulter", ),
3070 "open" => array("index.php|instruction_suivi_bordereaux[module=tab]", "index.php|instruction_suivi_bordereaux[module=form]"),
3071 );
3072 //
3073 $links[] = array(
3074 "href" => "".OM_ROUTE_FORM."&obj=bordereau_envoi_maire&action=190&idx=0",
3075 "class" => "bordereau_envoi_maire",
3076 "title" => _("Bordereau d'envoi au maire"),
3077 "right" => array("instruction_bordereau_envoi_maire","bordereau_envoi_maire"),
3078 "open" => array("index.php|bordereau_envoi_maire[module=form]",),
3079 );
3080 //
3081 $links[] = array(
3082 "class" => "category",
3083 "title" => _("Demandes d'avis"),
3084 "right" => array(
3085 "consultation_suivi_mise_a_jour_des_dates",
3086 "consultation_suivi_retours_de_consultation",
3087 ),
3088 );
3089 //
3090 $links[] = array(
3091 "href" => "".OM_ROUTE_FORM."&obj=consultation&idx=0&action=110",
3092 "class" => "demandes_avis_mise_a_jour_des_dates",
3093 "title" => _("Mise a jour des dates"),
3094 "right" => array("consultation_suivi_mise_a_jour_des_dates", ),
3095 "open" => array("index.php|consultation[module=form][action=110]"),
3096 );
3097 //
3098 $links[] = array(
3099 "href" => "".OM_ROUTE_FORM."&obj=consultation&idx=0&action=120",
3100 "class" => "consultation-retour",
3101 "title" => _("retours de consultation"),
3102 "right" => array("consultation_suivi_retours_de_consultation", ),
3103 "open" => array("index.php|consultation[module=form][action=120]", "index.php|consultation[module=form][action=100]", ),
3104 );
3105 // Catégorie COMMISSIONS
3106 $links[] = array(
3107 "class" => "category",
3108 "title" => _("commissions"),
3109 "right" => array(
3110 "commission",
3111 "commission_tab",
3112 "commission_demandes_passage",
3113 "commission_demandes_passage_tab",
3114 ),
3115 );
3116 //
3117 $links[] = array(
3118 "title" => "<hr/>",
3119 "right" => array(
3120 "commission",
3121 "commission_tab",
3122 "commission_demandes_passage",
3123 "commission_demandes_passage_tab",
3124 ),
3125 );
3126 //
3127 $links[] = array(
3128 "href" => "".OM_ROUTE_TAB."&obj=commission",
3129 "class" => "commissions",
3130 "title" => _("gestion"),
3131 "right" => array(
3132 "commission",
3133 ),
3134 "open" => array("index.php|commission[module=tab]", "index.php|commission[module=form]", ),
3135 );
3136 //
3137 $links[] = array(
3138 "href" => "".OM_ROUTE_TAB."&obj=commission_demandes_passage",
3139 "class" => "commissions-demande-passage",
3140 "title" => _("demandes"),
3141 "right" => array(
3142 "commission",
3143 "commission_demandes_passage",
3144 ),
3145 "open" => array("index.php|commission_demandes_passage[module=tab]", "index.php|commission_demandes_passage[module=form]", ),
3146 );
3147 //
3148 $rubrik['links'] = $links;
3149 //
3150 $menu[] = $rubrik;
3151 // }}}
3152
3153 // {{{ Rubrique DEMANDES D'AVIS
3154 //
3155 $rubrik = array(
3156 "title" => _("Demandes d'avis"),
3157 "class" => "demande_avis",
3158 "right" => "menu_demande_avis",
3159 );
3160 //
3161 $links = array();
3162 //
3163 $links[] = array(
3164 "href" => OM_ROUTE_DASHBOARD,
3165 "class" => "tableau-de-bord",
3166 "title" => _("tableau de bord"),
3167 "right" => "menu_demande_avis_dashboard",
3168 "open" => array("index.php|[module=dashboard]",),
3169 );
3170 //
3171 $links[] = array(
3172 "title" => "<hr/>",
3173 "right" => array(
3174 "demande_avis_encours", "demande_avis_encours_tab",
3175 "demande_avis_passee", "demande_avis_passee_tab",
3176 "demande_avis", "demande_avis_tab",
3177 ),
3178 );
3179 //
3180 $links[] = array(
3181 "href" => "".OM_ROUTE_TAB."&obj=demande_avis_encours",
3182 "class" => "demande_avis_encours",
3183 "title" => _("Demandes en cours"),
3184 "right" => array("demande_avis_encours", "demande_avis_encours_tab", ),
3185 "open" => array("index.php|demande_avis_encours[module=tab]", "index.php|demande_avis_encours[module=form]", ),
3186 );
3187
3188 $links[] = array(
3189 "href" => "".OM_ROUTE_TAB."&obj=demande_avis_passee",
3190 "class" => "demande_avis_passee",
3191 "title" => _("Demandes passees"),
3192 "right" => array("demande_avis_passee", "demande_avis_passee_tab", ),
3193 "open" => array("index.php|demande_avis_passee[module=tab]", "index.php|demande_avis_passee[module=form]", ),
3194 );
3195
3196 $links[] = array(
3197 "href" => "".OM_ROUTE_TAB."&obj=demande_avis",
3198 "class" => "demande_avis",
3199 "title" => _("Exports"),
3200 "right" => array("demande_avis", "demande_avis_tab", ),
3201 "open" => array("index.php|demande_avis[module=tab]", "index.php|demande_avis[module=form]", ),
3202 );
3203
3204 //
3205 $rubrik['links'] = $links;
3206 //
3207 $menu[] = $rubrik;
3208 // }}}
3209
3210
3211 // {{{ Rubrique NUMERISATION
3212 // Condition d'affichage de la rubrique
3213 if (isset($_SESSION['collectivite']) === true
3214 && $this->is_option_suivi_numerisation_enabled() === true) {
3215 //
3216 $rubrik = array(
3217 "title" => __("numerisation"),
3218 "class" => "numerisation",
3219 );
3220 //
3221 $links = array();
3222 //
3223 // --->
3224 $links[] = array(
3225 "class" => "category",
3226 "title" => __("traitement d'un lot"),
3227 "right" => array("num_dossier", "num_dossier_recuperation",
3228 "num_bordereau", "num_bordereau_tab", ) ,
3229 );
3230 //
3231 $links[] = array(
3232 "title" => "<hr/>",
3233 "right" => array("num_dossier_recuperation",
3234 "num_bordereau", "num_bordereau_tab", ) ,
3235 );
3236 //
3237 $links[] = array(
3238 "href" => OM_ROUTE_FORM."&obj=num_dossier_recuperation&idx=0&action=4",
3239 "class" => "num_dossier_recuperation",
3240 "title" => __("récupération du suivi des dossiers"),
3241 "right" => array( "num_dossier_recuperation", ) ,
3242 "open" => array( "index.php|num_dossier_recuperation[module=form]", ),
3243 );
3244 //
3245 $links[] = array(
3246 "title" => "<hr/>",
3247 "right" => array( "num_bordereau", "num_bordereau_tab", ) ,
3248 );
3249 //
3250 $links[] = array(
3251 "href" => OM_ROUTE_TAB."&obj=num_bordereau",
3252 "class" => "num_bordereau",
3253 "title" => __("tous les bordereaux"),
3254 "right" => array( "num_bordereau", "num_bordereau_tab", ),
3255 "open" => array("index.php|num_bordereau[module=tab]", "index.php|num_bordereau[module=form]", ),
3256 );
3257
3258 //
3259 // --->
3260 $links[] = array(
3261 "class" => "category",
3262 "title" => __("suivi dossier"),
3263 "right" => array("num_dossier_recuperation",
3264 "num_dossier", "num_dossier_tab",
3265 "num_dossier_a_attribuer", "num_dossier_a_attribuer_tab",
3266 "num_dossier_a_numeriser", "num_dossier_a_numeriser_tab",
3267 "num_dossier_traite", "num_dossier_traite_tab",
3268 ) ,
3269 );
3270 //
3271 $links[] = array(
3272 "title" => "<hr/>",
3273 "right" => array("num_dossier_recuperation",
3274 "num_dossier", "num_dossier_tab",
3275 "num_dossier_a_attribuer", "num_dossier_a_attribuer_tab",
3276 "num_dossier_a_numeriser", "num_dossier_a_numeriser_tab",
3277 "num_dossier_traite", "num_dossier_traite_tab",
3278 ) ,
3279 );
3280 //
3281 $links[] = array(
3282 "href" => OM_ROUTE_TAB."&obj=num_dossier_a_attribuer",
3283 "class" => "num_dossier_a_attribuer",
3284 "title" => __("num_dossier_a_attribuer"),
3285 "right" => array("num_dossier", "num_dossier_a_attribuer", "num_dossier_a_attribuer_tab",),
3286 "open" => array("index.php|num_dossier_a_attribuer[module=tab]","index.php|num_dossier_a_attribuer[module=form]", ),
3287 );
3288 //
3289 $links[] = array(
3290 "href" => OM_ROUTE_TAB."&obj=num_dossier_a_numeriser",
3291 "class" => "num_dossier_a_numeriser",
3292 "title" => __("num_dossier_a_numeriser"),
3293 "right" => array("num_dossier", "num_dossier_a_numeriser", "num_dossier_a_numeriser_tab",),
3294 "open" => array("index.php|num_dossier_a_numeriser[module=tab]","index.php|num_dossier_a_numeriser[module=form]", ),
3295 );
3296 //
3297 $links[] = array(
3298 "href" => OM_ROUTE_TAB."&obj=num_dossier_traite",
3299 "class" => "num_dossier_traite",
3300 "title" => __("num_dossier_traite"),
3301 "right" => array("num_dossier", "num_dossier_traite", "num_dossier_traite_tab",),
3302 "open" => array("index.php|num_dossier_traite[module=tab]","index.php|num_dossier_traite[module=form]", ),
3303 );
3304 //
3305 $links[] = array(
3306 "title" => "<hr/>",
3307 "right" => array( "num_dossier", "num_dossier_tab",) ,
3308 );
3309 //
3310 $links[] = array(
3311 "href" => OM_ROUTE_TAB."&obj=num_dossier",
3312 "class" => "num_dossier",
3313 "title" => __("tous les dossiers"),
3314 "right" => array("num_dossier", "num_dossier_tab",),
3315 "open" => array("index.php|num_dossier[module=tab]", "index.php|num_dossier[module=form]", ),
3316 );
3317
3318 //
3319 $rubrik['links'] = $links;
3320 //
3321 $menu["menu-rubrik-numerisation"] = $rubrik;
3322 // }}}
3323 }
3324
3325
3326 // Commentaire de la rubrique EXPORT qui n'est pas prévue d'être opérationnelle
3327 // dans cette version
3328 // {{{ Rubrique EXPORT
3329 //
3330 $rubrik = array(
3331 "title" => _("export / import"),
3332 "class" => "edition",
3333 "right" => "menu_export",
3334 );
3335 //
3336 $links = array();
3337
3338 //
3339 $links[] = array(
3340 "href" => "".OM_ROUTE_FORM."&obj=sitadel&action=6&idx=0",
3341 "class" => "sitadel",
3342 "title" => _("export sitadel"),
3343 "right" => "export_sitadel",
3344 "open" => "index.php|sitadel[module=form]",
3345 );
3346 //
3347 $links[] = array(
3348 "href" => "../app/versement_archives.php",
3349 "class" => "versement_archives",
3350 "title" => _("versement aux archives"),
3351 "right" => "versement_archives",
3352 "open" => "versement_archives.php|",
3353 );
3354 //
3355 $links[] = array(
3356 "href" => "../app/reqmo_pilot.php",
3357 "class" => "reqmo",
3358 "title" => _("statistiques a la demande"),
3359 "right" => "reqmo_pilot",
3360 "open" => "reqmo_pilot.php|",
3361 );
3362 //
3363 $links[] = array(
3364 "href" => OM_ROUTE_MODULE_REQMO,
3365 "class" => "reqmo",
3366 "title" => __("requetes memorisees"),
3367 "right" => "reqmo",
3368 "open" => array(
3369 "reqmo.php|",
3370 "index.php|[module=reqmo]",
3371 ),
3372 );
3373 //
3374 $rubrik['links'] = $links;
3375 //
3376 $menu[] = $rubrik;
3377 // }}}
3378
3379
3380 // {{{ Rubrique PARAMETRAGE
3381 //
3382 $rubrik = array(
3383 "title" => _("parametrage dossiers"),
3384 "class" => "parametrage-dossier",
3385 "right" => "menu_parametrage",
3386 );
3387 //
3388 $links = array();
3389 //
3390 $links[] = array(
3391 "class" => "category",
3392 "title" => _("dossiers"),
3393 "right" => array(
3394 "dossier_autorisation_type", "dossier_autorisation_type_tab",
3395 "dossier_autorisation_type_detaille",
3396 "dossier_autorisation_type_detaille_tab", "dossier_instruction_type",
3397 "dossier_instruction_type_tab", "cerfa", "cerfa_tab",
3398 ),
3399 );
3400 //
3401 $links[] = array(
3402 "title" => "<hr/>",
3403 "right" => array(
3404 "cerfa", "cerfa_tab",
3405 ),
3406 );
3407 //
3408 $links[] = array(
3409 "href" => "".OM_ROUTE_TAB."&obj=cerfa",
3410 "class" => "cerfa",
3411 "title" => _("cerfa"),
3412 "right" => array("cerfa", "cerfa_tab", ),
3413 "open" => array("index.php|cerfa[module=tab]", "index.php|cerfa[module=form]", ),
3414 );
3415 //
3416 $links[] = array(
3417 "title" => "<hr/>",
3418 "right" => array(
3419 "dossier_autorisation_type", "dossier_autorisation_type_tab",
3420 "dossier_autorisation_type_detaille",
3421 "dossier_autorisation_type_detaille_tab", "dossier_instruction_type",
3422 "dossier_instruction_type_tab",
3423 ),
3424 );
3425 //
3426 $links[] = array(
3427 "href" => "".OM_ROUTE_TAB."&obj=dossier_autorisation_type",
3428 "class" => "dossier_autorisation_type",
3429 "title" => _("type DA"),
3430 "right" => array("dossier_autorisation_type", "dossier_autorisation_type_tab", ),
3431 "open" => array("index.php|dossier_autorisation_type[module=tab]", "index.php|dossier_autorisation_type[module=form]", ),
3432 );
3433 //
3434 $links[] = array(
3435 "href" => "".OM_ROUTE_TAB."&obj=dossier_autorisation_type_detaille",
3436 "class" => "dossier_autorisation_type_detaille",
3437 "title" => _("type DA detaille"),
3438 "right" => array("dossier_autorisation_type_detaille", "dossier_autorisation_type_detaille_tab", ),
3439 "open" => array("index.php|dossier_autorisation_type_detaille[module=tab]", "index.php|dossier_autorisation_type_detaille[module=form]", ),
3440 );
3441 //
3442 $links[] = array(
3443 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_type",
3444 "class" => "dossier_instruction_type",
3445 "title" => _("type DI"),
3446 "right" => array("dossier_instruction_type", "dossier_instruction_type_tab", ),
3447 "open" => array("index.php|dossier_instruction_type[module=tab]", "index.php|dossier_instruction_type[module=form]", ),
3448 );
3449 //
3450 $links[] = array(
3451 "title" => "<hr/>",
3452 "right" => array(
3453 "contrainte", "contrainte_tab",
3454 "contrainte_souscategorie", "contrainte_souscategorie_tab",
3455 "contrainte_categorie", "contrainte_categorie_tab"
3456 ),
3457 );
3458 //
3459 $links[] = array(
3460 "href" => "".OM_ROUTE_TAB."&obj=contrainte",
3461 "class" => "contrainte",
3462 "title" => _("contrainte"),
3463 "right" => array("contrainte", "contrainte_tab", ),
3464 "open" => array(
3465 "index.php|contrainte[module=tab]",
3466 "index.php|contrainte[module=form][action=0]",
3467 "index.php|contrainte[module=form][action=1]",
3468 "index.php|contrainte[module=form][action=2]",
3469 "index.php|contrainte[module=form][action=3]",
3470 ),
3471 );
3472 //
3473 $links[] = array(
3474 "class" => "category",
3475 "title" => _("demandes"),
3476 "right" => array(
3477 "demande_type",
3478 "demande_type_tab", "demande_nature", "demande_nature_tab",
3479 ),
3480 );
3481 //
3482 $links[] = array(
3483 "title" => "<hr/>",
3484 "right" => array(
3485 "demande_type",
3486 "demande_type_tab", "demande_nature", "demande_nature_tab",
3487 ),
3488 );
3489 //
3490 $links[] = array(
3491 "href" => "".OM_ROUTE_TAB."&obj=demande_nature",
3492 "class" => "demande_nature",
3493 "title" => _("nature"),
3494 "right" => array("demande_nature", "demande_nature_tab", ),
3495 "open" => array("index.php|demande_nature[module=tab]", "index.php|demande_nature[module=form]", ),
3496 );
3497 //
3498 $links[] = array(
3499 "href" => "".OM_ROUTE_TAB."&obj=demande_type",
3500 "class" => "demande_type",
3501 "title" => _("type"),
3502 "right" => array("demande_type", "demande_type_tab",),
3503 "open" => array("index.php|demande_type[module=tab]", "index.php|demande_type[module=form]", ),
3504 );
3505 //
3506 $links[] = array(
3507 "class" => "category",
3508 "title" => _("workflows"),
3509 "right" => array(
3510 "workflows",
3511 "action", "action_tab", "etat",
3512 "etat_tab", "evenement", "evenement_tab", "bible", "bible_tab", "avis_decision",
3513 "avis_decision_tab", "avis_consultation", "avis_consultation_tab",
3514 ),
3515 );
3516 //
3517 $links[] = array(
3518 "title" => "<hr/>",
3519 "right" => array(
3520 "workflows",
3521 "action", "action_tab", "etat",
3522 "etat_tab", "evenement", "evenement_tab", "bible", "bible_tab", "avis_decision",
3523 "avis_decision_tab", "avis_consultation", "avis_consultation_tab",
3524 ),
3525 );
3526 //
3527 $links[] = array(
3528 "href" => "../app/workflows.php",
3529 "class" => "workflows",
3530 "title" => _("workflows"),
3531 "right" => array("workflows", ),
3532 "open" => array("workflows.php|", ),
3533 );
3534 //
3535 $links[] = array(
3536 "title" => "<hr/>",
3537 "right" => array(
3538 "evenement", "evenement_tab",
3539 ),
3540 );
3541 //
3542 $links[] = array(
3543 "href" => "".OM_ROUTE_TAB."&obj=evenement",
3544 "class" => "evenement",
3545 "title" => _("evenement"),
3546 "right" => array("evenement", "evenement_tab", ),
3547 "open" => array("index.php|evenement[module=tab]", "index.php|evenement[module=form]", ),
3548 );
3549 //
3550 $links[] = array(
3551 "title" => "<hr/>",
3552 "right" => array(
3553 "action", "action_tab", "etat",
3554 "etat_tab", "avis_decision",
3555 "avis_decision_tab",
3556 ),
3557 );
3558 //
3559 $links[] = array(
3560 "href" => "".OM_ROUTE_TAB."&obj=etat",
3561 "class" => "workflow-etat",
3562 "title" => _("etat"),
3563 "right" => array("etat", "etat_tab", ),
3564 "open" => array("index.php|etat[module=tab]", "index.php|etat[module=form]", ),
3565 );
3566 //
3567 $links[] = array(
3568 "href" => "".OM_ROUTE_TAB."&obj=avis_decision",
3569 "class" => "avis_decision",
3570 "title" => _("avis decision"),
3571 "right" => array("avis_decision", "avis_decision_tab", ),
3572 "open" => array("index.php|avis_decision[module=tab]", "index.php|avis_decision[module=form]", ),
3573 );
3574 //
3575 $links[] = array(
3576 "href" => "".OM_ROUTE_TAB."&obj=action",
3577 "class" => "action",
3578 "title" => _("action"),
3579 "right" => array("action", "action_tab", ),
3580 "open" => array("index.php|action[module=tab]", "index.php|action[module=form]", ),
3581 );
3582 //
3583 $links[] = array(
3584 "title" => "<hr/>",
3585 "right" => array(
3586 "bible", "bible_tab",
3587 ),
3588 );
3589 //
3590 $links[] = array(
3591 "href" => "".OM_ROUTE_TAB."&obj=bible",
3592 "class" => "bible",
3593 "title" => _("bible"),
3594 "right" => array("bible", "bible_tab", ),
3595 "open" => array("index.php|bible[module=tab]", "index.php|bible[module=form]", ),
3596 );
3597 //
3598 $links[] = array(
3599 "class" => "category",
3600 "title" => _("editions"),
3601 "right" => array(
3602 "om_etat", "om_etat_tab", "om_sousetat", "om_sousetat_tab",
3603 "om_lettretype", "om_lettretype_tab", "om_requete", "om_requete_tab",
3604 "om_logo", "om_logo_tab",
3605 ),
3606 );
3607 //
3608 $links[] = array(
3609 "title" => "<hr/>",
3610 "right" => array(
3611 "om_etat", "om_etat_tab", "om_lettretype", "om_lettretype_tab",
3612 ),
3613 );
3614 //
3615 $links[] = array(
3616 "href" => "".OM_ROUTE_TAB."&obj=om_etat",
3617 "class" => "om_etat",
3618 "title" => _("om_etat"),
3619 "right" => array("om_etat", "om_etat_tab", ),
3620 "open" => array("index.php|om_etat[module=tab]", "index.php|om_etat[module=form]", ),
3621 );
3622 //
3623 $links[] = array(
3624 "href" => "".OM_ROUTE_TAB."&obj=om_lettretype",
3625 "class" => "om_lettretype",
3626 "title" => _("om_lettretype"),
3627 "right" => array("om_lettretype", "om_lettretype_tab"),
3628 "open" => array("index.php|om_lettretype[module=tab]", "index.php|om_lettretype[module=form]", ),
3629 );
3630 //
3631 $links[] = array(
3632 "title" => "<hr/>",
3633 "right" => array(
3634 "om_logo", "om_logo_tab",
3635 ),
3636 );
3637 //
3638 $links[] = array(
3639 "href" => "".OM_ROUTE_TAB."&obj=om_logo",
3640 "class" => "om_logo",
3641 "title" => _("om_logo"),
3642 "right" => array("om_logo", "om_logo_tab", ),
3643 "open" => array("index.php|om_logo[module=tab]", "index.php|om_logo[module=form]", ),
3644 );
3645 //
3646 $rubrik['links'] = $links;
3647 //
3648 $menu[] = $rubrik;
3649 // }}}
3650
3651 // {{{ Rubrique PARAMETRAGE
3652 //
3653 $rubrik = array(
3654 "title" => _("parametrage"),
3655 "class" => "parametrage",
3656 "right" => "menu_parametrage",
3657 );
3658 //
3659 $links = array();
3660 //
3661 $links[] = array(
3662 "href" => "".OM_ROUTE_TAB."&obj=civilite",
3663 "class" => "civilite",
3664 "title" => _("civilite"),
3665 "right" => array("civilite", "civilite_tab", ),
3666 "open" => array("index.php|civilite[module=tab]", "index.php|civilite[module=form]", ),
3667 );
3668 //
3669 $links[] = array(
3670 "href" => "".OM_ROUTE_TAB."&obj=arrondissement",
3671 "class" => "arrondissement",
3672 "title" => _("arrondissement"),
3673 "right" => array("arrondissement", "arrondissement_tab", ),
3674 "open" => array("index.php|arrondissement[module=tab]", "index.php|arrondissement[module=form]", ),
3675 );
3676 //
3677 $links[] = array(
3678 "href" => "".OM_ROUTE_TAB."&obj=quartier",
3679 "class" => "quartier",
3680 "title" => _("quartier"),
3681 "right" => array("quartier", "quartier_tab", ),
3682 "open" => array("index.php|quartier[module=tab]", "index.php|quartier[module=form]", ),
3683 );
3684 //
3685 $links[] = array(
3686 "class" => "category",
3687 "title" => _("Organisation"),
3688 "right" => array(
3689 "direction", "direction_tab", "division", "division_tab", "instructeur_qualite",
3690 "instructeur_qualite_tab", "instructeur", "instructeur_tab", "groupe",
3691 "groupe_tab", "genre", "genre_tab", "signataire_arrete", "signataire_arrete_tab",
3692 "taxe_amenagement_tab", "taxe_amenagement",
3693 ),
3694 );
3695 $links[] = array(
3696 "title" => "<hr/>",
3697 "right" => array(
3698 "direction", "direction_tab", "division", "division_tab", "instructeur_qualite",
3699 "instructeur_qualite_tab", "instructeur", "instructeur_tab", "groupe",
3700 "groupe_tab", "genre", "genre_tab", "signataire_arrete", "signataire_arrete_tab",
3701 "taxe_amenagement_tab", "taxe_amenagement",
3702 ),
3703 );
3704 //
3705 $links[] = array(
3706 "href" => "".OM_ROUTE_TAB."&obj=genre",
3707 "class" => "genre",
3708 "title" => _("genre"),
3709 "right" => array("genre", "genre_tab", ),
3710 "open" => array("index.php|genre[module=tab]", "index.php|genre[module=form]", ),
3711 );
3712 //
3713 $links[] = array(
3714 "href" => "".OM_ROUTE_TAB."&obj=groupe",
3715 "class" => "groupe",
3716 "title" => _("groupe"),
3717 "right" => array("groupe", "groupe_tab", ),
3718 "open" => array("index.php|groupe[module=tab]", "index.php|groupe[module=form]", ),
3719 );
3720 //
3721 $links[] = array(
3722 "href" => "".OM_ROUTE_TAB."&obj=direction",
3723 "class" => "direction",
3724 "title" => _("direction"),
3725 "right" => array("direction", "direction_tab", ),
3726 "open" => array("index.php|direction[module=tab]", "index.php|direction[module=form]", ),
3727 );
3728 //
3729 $links[] = array(
3730 "href" => "".OM_ROUTE_TAB."&obj=division",
3731 "class" => "division",
3732 "title" => _("division"),
3733 "right" => array("division", "division_tab", ),
3734 "open" => array("index.php|division[module=tab]", "index.php|division[module=form]", ),
3735 );
3736 //
3737 $links[] = array(
3738 "href" => "".OM_ROUTE_TAB."&obj=instructeur_qualite",
3739 "class" => "instructeur_qualite",
3740 "title" => _("instructeur_qualite"),
3741 "right" => array("instructeur_qualite", "instructeur_qualite_tab", ),
3742 "open" => array("index.php|instructeur_qualite[module=tab]", "index.php|instructeur_qualite[module=form]", ),
3743 );
3744 //
3745 $links[] = array(
3746 "href" => "".OM_ROUTE_TAB."&obj=instructeur",
3747 "class" => "instructeur",
3748 "title" => _("instructeur"),
3749 "right" => array("instructeur", "instructeur_tab", ),
3750 "open" => array("index.php|instructeur[module=tab]", "index.php|instructeur[module=form]", ),
3751 );
3752 //
3753 $links[] = array(
3754 "href" => "".OM_ROUTE_TAB."&obj=signataire_arrete",
3755 "class" => "signataire_arrete",
3756 "title" => _("signataire arrete"),
3757 "right" => array("signataire_arrete", "signataire_arrete", ),
3758 "open" => array("index.php|signataire_arrete[module=tab]", "index.php|signataire_arrete[module=form]", ),
3759 );
3760 //
3761 $links[] = array(
3762 "href" => "".OM_ROUTE_TAB."&obj=taxe_amenagement",
3763 "class" => "taxe_amenagement",
3764 "title" => _("taxes"),
3765 "right" => array("taxe_amenagement", "taxe_amenagement_tab", ),
3766 "open" => array("index.php|taxe_amenagement[module=tab]", "index.php|taxe_amenagement[module=form]", ),
3767 );
3768 //
3769 $links[] = array(
3770 "class" => "category",
3771 "title" => _("gestion des commissions"),
3772 "right" => array(
3773 "commission_type", "commission_type_tab",
3774 ),
3775 );
3776 //
3777 $links[] = array(
3778 "title" => "<hr/>",
3779 "right" => array(
3780 "commission_type", "commission_type_tab",
3781 ),
3782 );
3783 //
3784 $links[] = array(
3785 "href" => "".OM_ROUTE_TAB."&obj=commission_type",
3786 "class" => "commission-type",
3787 "title" => _("commission_type"),
3788 "right" => array("commission_type", "commission_type_tab", ),
3789 "open" => array("index.php|commission_type[module=tab]", "index.php|commission_type[module=form]", ),
3790 );
3791 //
3792 $links[] = array(
3793 "class" => "category",
3794 "title" => _("gestion des consultations"),
3795 "right" => array(
3796 "avis_consultation", "avis_consultation_tab", "service", "service_tab",
3797 "service_categorie", "service_categorie_tab",
3798 "lien_service_service_categorie", "lien_service_service_categorie_tab",
3799 ),
3800 );
3801 //
3802 $links[] = array(
3803 "title" => "<hr/>",
3804 "right" => array(
3805 "avis_consultation", "avis_consultation_tab", "service", "service_tab",
3806 "service_categorie", "service_categorie_tab",
3807 "lien_service_service_categorie", "lien_service_service_categorie_tab",
3808 ),
3809 );
3810 //
3811 $links[] = array(
3812 "href" => "".OM_ROUTE_TAB."&obj=avis_consultation",
3813 "class" => "avis_consultation",
3814 "title" => _("avis consultation"),
3815 "right" => array("avis_consultation", "avis_consultation_tab", ),
3816 "open" => array("index.php|avis_consultation[module=tab]", "index.php|avis_consultation[module=form]", ),
3817 );
3818 //
3819 $links[] = array(
3820 "href" => "".OM_ROUTE_TAB."&obj=service",
3821 "class" => "service",
3822 "title" => _("service"),
3823 "right" => array("service", "service_tab", ),
3824 "open" => array("index.php|service[module=tab]", "index.php|service[module=form]", ),
3825 );
3826 $links[] = array(
3827 "href" => "".OM_ROUTE_TAB."&obj=service_categorie",
3828 "class" => "service_categorie",
3829 "title" => _("thematique des services"),
3830 "right" => array("service_categorie", "service_categorie_tab", ),
3831 "open" => array("index.php|service_categorie[module=tab]", "index.php|service_categorie[module=form]", ),
3832 );
3833 //
3834 $links[] = array(
3835 "class" => "category",
3836 "title" => _("Gestion des dossiers"),
3837 "right" => array(
3838 "dossier_autorisation_type", "dossier_autorisation_type_tab",
3839 "dossier_autorisation_type_detaille",
3840 "dossier_autorisation_type_detaille_tab", "dossier_instruction_type",
3841 "dossier_instruction_type_tab",
3842 "autorite_competente", "autorite_competente_tab",
3843 "affectation_automatique", "affectation_automatique_tab",
3844 ),
3845 );
3846 //
3847 $links[] = array(
3848 "title" => "<hr/>",
3849 "right" => array(
3850 "dossier_autorisation_type", "dossier_autorisation_type_tab",
3851 "dossier_autorisation_type_detaille",
3852 "dossier_autorisation_type_detaille_tab", "dossier_instruction_type",
3853 "dossier_instruction_type_tab",
3854 "autorite_competente", "autorite_competente_tab",
3855 "affectation_automatique", "affectation_automatique_tab",
3856
3857 ),
3858 );
3859 //
3860 $links[] = array(
3861 "href" => "".OM_ROUTE_TAB."&obj=etat_dossier_autorisation",
3862 "class" => "etat_dossier_autorisation",
3863 "title" => _("etat dossiers autorisations"),
3864 "right" => array("etat_dossier_autorisation", "etat_dossier_autorisation_tab", ),
3865 "open" => array("index.php|etat_dossier_autorisation[module=tab]", "index.php|etat_dossier_autorisation[module=form]", ),
3866 );
3867 //
3868 $links[] = array(
3869 "href" => "".OM_ROUTE_TAB."&obj=affectation_automatique",
3870 "class" => "affectation_automatique",
3871 "title" => _("affectation automatique"),
3872 "right" => array("affectation_automatique", "affectation_automatique_tab", ),
3873 "open" => array("index.php|affectation_automatique[module=tab]", "index.php|affectation_automatique[module=form]", ),
3874 );
3875 //
3876 $links[] = array(
3877 "href" => "".OM_ROUTE_TAB."&obj=autorite_competente",
3878 "class" => "autorite_competente",
3879 "title" => _("autorite")." "._("competente"),
3880 "right" => array("autorite_competente", "autorite_competente_tab", ),
3881 "open" => array("index.php|autorite_competente[module=tab]", "index.php|autorite_competente[module=form]", ),
3882 );
3883 //
3884 $links[] = array(
3885 "href" => "".OM_ROUTE_TAB."&obj=phase",
3886 "class" => "phase",
3887 "title" => _("phase"),
3888 "right" => array("phase", "phase_tab", ),
3889 "open" => array("index.php|phase[module=tab]", "index.php|phase[module=form]", ),
3890 );
3891
3892 //Gestion des pièces
3893 $links[] = array(
3894 "class" => "category",
3895 "title" => _("Gestion des pièces"),
3896 "right" => array(
3897 "document_numerise_type_categorie", "document_numerise_type_categorie_tab",
3898 "document_numerise_type",
3899 "document_numerise_type_tab", "document_numerise_traitement_metadonnees",
3900 "document_numerise_traitement_metadonnees_executer",
3901 ),
3902 );
3903 //
3904 $links[] = array(
3905 "title" => "<hr/>",
3906 "right" => array(
3907 "document_numerise_type_categorie", "document_numerise_type_categorie_tab",
3908 "document_numerise_type",
3909 "document_numerise_type_tab", "document_numerise_traitement_metadonnees",
3910 "document_numerise_traitement_metadonnees_executer",
3911 ),
3912 );
3913 //
3914 $links[] = array(
3915 "href" => "".OM_ROUTE_TAB."&obj=document_numerise_type_categorie",
3916 "class" => "document_numerise_type_categorie",
3917 "title" => _("Catégorie des pièces"),
3918 "right" => array(
3919 "document_numerise_type_categorie",
3920 "document_numerise_type_categorie_tab",
3921 ),
3922 "open" => array(
3923 "index.php|document_numerise_type_categorie[module=tab]",
3924 "index.php|document_numerise_type_categorie[module=form]",
3925 ),
3926 );
3927 //
3928 $links[] = array(
3929 "href" => "".OM_ROUTE_TAB."&obj=document_numerise_type",
3930 "class" => "document_numerise_type",
3931 "title" => _("Type des pièces"),
3932 "right" => array(
3933 "document_numerise_type",
3934 "document_numerise_type_tab",
3935 ),
3936 "open" => array(
3937 "index.php|document_numerise_type[module=tab]",
3938 "index.php|document_numerise_type[module=form][action=0]",
3939 "index.php|document_numerise_type[module=form][action=1]",
3940 "index.php|document_numerise_type[module=form][action=2]",
3941 "index.php|document_numerise_type[module=form][action=3]",
3942 ),
3943 );
3944 //
3945 $links[] = array(
3946 "href" => "".OM_ROUTE_FORM."&obj=document_numerise_traitement_metadonnees&action=100&idx=0",
3947 "class" => "document_numerise_traitement_metadonnees",
3948 "title" => _("Mise à jour des métadonnées"),
3949 "description" => _("Mettre à jour les métadonnées de tous les documents numérisés."),
3950 "right" => array(
3951 "document_numerise_traitement_metadonnees",
3952 "document_numerise_traitement_metadonnees_executer",
3953 ),
3954 "open" => array("index.php|document_numerise_traitement_metadonnees[module=form]", ),
3955 );
3956
3957 // Gestion des contentieux
3958 $links[] = array(
3959 "class" => "category",
3960 "title" => _("Gestion des contentieux"),
3961 "right" => array(
3962 "objet_recours", "objet_recours_tab", "moyen_souleve", "moyen_souleve_tab",
3963 "moyen_retenu_juge", "moyen_retenu_juge_tab",
3964 ),
3965 );
3966 //
3967 $links[] = array(
3968 "title" => "<hr/>",
3969 "right" => array(
3970 "objet_recours", "objet_recours_tab", "moyen_souleve", "moyen_souleve_tab",
3971 "moyen_retenu_juge", "moyen_retenu_juge_tab",
3972 ),
3973 );
3974 //
3975 $links[] = array(
3976 "href" => "".OM_ROUTE_TAB."&obj=objet_recours",
3977 "class" => "objet_recours",
3978 "title" => _("objet_recours"),
3979 "right" => array(
3980 "objet_recours", "objet_recours_tab",
3981 ),
3982 "open" => array(
3983 "index.php|objet_recours[module=tab]", "index.php|objet_recours[module=form]",
3984 ),
3985 );
3986 //
3987 $links[] = array(
3988 "href" => "".OM_ROUTE_TAB."&obj=moyen_souleve",
3989 "class" => "moyen_souleve",
3990 "title" => _("moyen_souleve"),
3991 "right" => array(
3992 "moyen_souleve", "moyen_souleve_tab",
3993 ),
3994 "open" => array(
3995 "index.php|moyen_souleve[module=tab]", "index.php|moyen_souleve[module=form]",
3996 ),
3997 );
3998 //
3999 $links[] = array(
4000 "href" => "".OM_ROUTE_TAB."&obj=moyen_retenu_juge",
4001 "class" => "moyen_retenu_juge",
4002 "title" => _("moyen_retenu_juge"),
4003 "right" => array(
4004 "moyen_retenu_juge", "moyen_retenu_juge_tab",
4005 ),
4006 "open" => array(
4007 "index.php|moyen_retenu_juge[module=tab]", "index.php|moyen_retenu_juge[module=form]",
4008 ),
4009 );
4010
4011 //
4012 $rubrik['links'] = $links;
4013 //
4014 $menu[] = $rubrik;
4015 // }}}
4016
4017 // {{{ Rubrique ADMINISTRATION
4018 //
4019 $rubrik = array(
4020 "title" => _("administration"),
4021 "class" => "administration",
4022 "right" => "menu_administration",
4023 );
4024 //
4025 $links = array();
4026 //
4027 $links[] = array(
4028 "href" => "".OM_ROUTE_TAB."&obj=om_collectivite",
4029 "class" => "collectivite",
4030 "title" => _("om_collectivite"),
4031 "right" => array("om_collectivite", "om_collectivite_tab", ),
4032 "open" => array("index.php|om_collectivite[module=tab]", "index.php|om_collectivite[module=form]", ),
4033 );
4034 //
4035 $links[] = array(
4036 "href" => "".OM_ROUTE_TAB."&obj=om_parametre",
4037 "class" => "parametre",
4038 "title" => _("om_parametre"),
4039 "right" => array("om_parametre", "om_parametre_tab", ),
4040 "open" => array("index.php|om_parametre[module=tab]", "index.php|om_parametre[module=form]", ),
4041 );
4042 //
4043 $links[] = array(
4044 "class" => "category",
4045 "title" => _("gestion des utilisateurs"),
4046 "right" => array(
4047 "om_utilisateur", "om_utilisateur_tab", "om_profil", "om_profil_tab",
4048 "om_droit", "om_droit_tab", "directory",
4049 ),
4050 );
4051 //
4052 $links[] = array(
4053 "title" => "<hr/>",
4054 "right" => array(
4055 "om_utilisateur", "om_utilisateur_tab", "om_profil", "om_profil_tab",
4056 "om_droit", "om_droit_tab",
4057 ),
4058 );
4059 //
4060 $links[] = array(
4061 "href" => "".OM_ROUTE_TAB."&obj=om_profil",
4062 "class" => "profil",
4063 "title" => _("om_profil"),
4064 "right" => array("om_profil", "om_profil_tab", ),
4065 "open" => array("index.php|om_profil[module=tab]", "index.php|om_profil[module=form]", ),
4066 );
4067 //
4068 $links[] = array(
4069 "href" => "".OM_ROUTE_TAB."&obj=om_droit",
4070 "class" => "droit",
4071 "title" => _("om_droit"),
4072 "right" => array("om_droit", "om_droit_tab", ),
4073 "open" => array("index.php|om_droit[module=tab]", "index.php|om_droit[module=form]", ),
4074 );
4075 //
4076 $links[] = array(
4077 "href" => "".OM_ROUTE_TAB."&obj=om_utilisateur",
4078 "class" => "utilisateur",
4079 "title" => _("om_utilisateur"),
4080 "right" => array("om_utilisateur", "om_utilisateur_tab", ),
4081 "open" => array(
4082 "index.php|om_utilisateur[module=tab]",
4083 "index.php|om_utilisateur[module=form][action=0]",
4084 "index.php|om_utilisateur[module=form][action=1]",
4085 "index.php|om_utilisateur[module=form][action=2]",
4086 "index.php|om_utilisateur[module=form][action=3]",
4087 ),
4088 );
4089 //
4090 $links[] = array(
4091 "title" => "<hr/>",
4092 "right" => array("om_utilisateur", "om_utilisateur_synchroniser", ),
4093 "parameters" => array("isDirectoryOptionEnabled" => true, ),
4094 );
4095 //
4096 $links[] = array(
4097 "href" => "".OM_ROUTE_FORM."&obj=om_utilisateur&idx=0&action=11",
4098 "class" => "annuaire",
4099 "title" => _("annuaire"),
4100 "right" => array("om_utilisateur", "om_utilisateur_synchroniser", ),
4101 "open" => array("index.php|om_utilisateur[module=form][action=11]", ),
4102 "parameters" => array("isDirectoryOptionEnabled" => true, ),
4103 );
4104 //
4105 $links[] = array(
4106 "class" => "category",
4107 "title" => _("tableaux de bord"),
4108 "right" => array(
4109 "om_widget", "om_widget_tab", "om_dashboard",
4110 ),
4111 );
4112 //
4113 $links[] = array(
4114 "title" => "<hr/>",
4115 "right" => array(
4116 "om_widget", "om_widget_tab", "om_dashboard",
4117 ),
4118 );
4119 //
4120 $links[] = array(
4121 "href" => "".OM_ROUTE_TAB."&obj=om_widget",
4122 "class" => "om_widget",
4123 "title" => _("om_widget"),
4124 "right" => array("om_widget", "om_widget_tab", ),
4125 "open" => array("index.php|om_widget[module=tab]", "index.php|om_widget[module=form]", ),
4126 );
4127 //
4128 $links[] = array(
4129 "href" => "".OM_ROUTE_FORM."&obj=om_dashboard&amp;idx=0&amp;action=4",
4130 "class" => "om_dashboard",
4131 "title" => _("composition"),
4132 "right" => array("om_dashboard", ),
4133 "open" => array("index.php|om_dashboard[module=form][action=4]", ),
4134 );
4135 //
4136 $links[] = array(
4137 "class" => "category",
4138 "title" => _("sig"),
4139 "right" => array(
4140 "om_sig_map", "om_sig_map_tab", "om_sig_flux", "om_sig_flux_tab", "om_sig_extent", "om_sig_extent_tab",
4141 ),
4142 "parameters" => array("option_localisation" => "sig_interne", ),
4143 );
4144 //
4145 $links[] = array(
4146 "title" => "<hr/>",
4147 "right" => array(
4148 "om_sig_map", "om_sig_map_tab", "om_sig_flux", "om_sig_flux_tab", "om_sig_extent", "om_sig_extent_tab",
4149 ),
4150 "parameters" => array("option_localisation" => "sig_interne", ),
4151 );
4152 //
4153 $links[] = array(
4154 "href" => "".OM_ROUTE_TAB."&obj=om_sig_extent",
4155 "class" => "om_sig_extent",
4156 "title" => _("om_sig_extent"),
4157 "right" => array("om_sig_extent", "om_sig_extent_tab", ),
4158 "open" => array("index.php|om_sig_extent[module=tab]", "index.php|om_sig_extent[module=form]", ),
4159 "parameters" => array("option_localisation" => "sig_interne", ),
4160 );
4161 //
4162 $links[] = array(
4163 "href" => "".OM_ROUTE_TAB."&obj=om_sig_map",
4164 "class" => "om_sig_map",
4165 "title" => _("om_sig_map"),
4166 "right" => array("om_sig_map", "om_sig_map_tab", ),
4167 "open" => array("index.php|om_sig_map[module=tab]", "index.php|om_sig_map[module=form]", ),
4168 "parameters" => array("option_localisation" => "sig_interne", ),
4169 );
4170 //
4171 $links[] = array(
4172 "href" => "".OM_ROUTE_TAB."&obj=om_sig_flux",
4173 "class" => "om_sig_flux",
4174 "title" => _("om_sig_flux"),
4175 "right" => array("om_sig_flux", "om_sig_flux_tab", ),
4176 "open" => array("index.php|om_sig_flux[module=tab]", "index.php|om_sig_flux[module=form]", ),
4177 "parameters" => array("option_localisation" => "sig_interne", ),
4178 );
4179 //
4180 $links[] = array(
4181 "class" => "category",
4182 "title" => _("options avancees"),
4183 "right" => array("import", "gen", "om_requete", "om_requete_tab",
4184 "om_sousetat", "om_sousetat_tab",),
4185 );
4186 //
4187 $links[] = array(
4188 "title" => "<hr/>",
4189 "right" => array(
4190 "interface_referentiel_erp",
4191 ),
4192 );
4193 //
4194 $links[] = array(
4195 "href" => "../app/settings.php?controlpanel=interface_referentiel_erp",
4196 "class" => "interface_referentiel_erp",
4197 "title" => _("interface_referentiel_erp"),
4198 "right" => array("interface_referentiel_erp", ),
4199 "open" => array("settings.php|[controlpanel=interface_referentiel_erp]", ),
4200 );
4201 //
4202 $links[] = array(
4203 "title" => "<hr/>",
4204 "right" => array(
4205 "om_sousetat", "om_sousetat_tab",
4206 ),
4207 );
4208 //
4209 $links[] = array(
4210 "href" => "".OM_ROUTE_TAB."&obj=om_sousetat",
4211 "class" => "om_sousetat",
4212 "title" => _("om_sousetat"),
4213 "right" => array("om_sousetat", "om_sousetat_tab", ),
4214 "open" => array("index.php|om_sousetat[module=tab]", "index.php|om_sousetat[module=form]", ),
4215 );
4216 //
4217 $links[] = array(
4218 "title" => "<hr/>",
4219 "right" => array("om_requete", "om_requete_tab", ),
4220 );
4221 //
4222 $links[] = array(
4223 "href" => "".OM_ROUTE_TAB."&obj=om_requete",
4224 "class" => "om_requete",
4225 "title" => _("om_requete"),
4226 "right" => array("om_requete", "om_requete_tab", ),
4227 "open" => array("index.php|om_requete[module=tab]", "index.php|om_requete[module=form]", ),
4228 );
4229 //
4230 $links[] = array(
4231 "title" => "<hr/>",
4232 "right" => array("import", ),
4233 );
4234 //
4235 $links[] = array(
4236 "href" => OM_ROUTE_MODULE_IMPORT,
4237 "class" => "import",
4238 "title" => __("Import"),
4239 "description" => __("Ce module permet l'intégration de données dans l'application depuis des fichiers CSV."),
4240 "right" => array("import", ),
4241 "open" => array(
4242 "import.php|",
4243 "index.php|[module=import]",
4244 ),
4245 );
4246 //
4247 $links[] = array(
4248 "href" => "../app/import_specific.php",
4249 "class" => "import_specific",
4250 "title" => _("Import specifique"),
4251 "right" => array("import", ),
4252 "open" => array("import_specific.php|", ),
4253 );
4254 //
4255 $links[] = array(
4256 "title" => "<hr/>",
4257 "right" => array("gen", ),
4258 );
4259 //
4260 $links[] = array(
4261 "title" => _("Generateur"),
4262 "href" => OM_ROUTE_MODULE_GEN,
4263 "class" => "generator",
4264 "right" => array("gen", ),
4265 "open" => array(
4266 "gen.php|","genauto.php|", "gensup.php|", "genfull.php|",
4267 "genetat.php|", "gensousetat.php|", "genlettretype.php|",
4268 "genimport.php|",
4269 ),
4270 );
4271 //
4272 $links[] = array(
4273 "href" => "".OM_ROUTE_FORM."&obj=contrainte&action=100&idx=0",
4274 "class" => "contrainte",
4275 "title" => _("synchronisation des contraintes"),
4276 "right" => array("contrainte", "contrainte_synchronisation", ),
4277 "open" => array("index.php|contrainte[module=form][action=100]", ),
4278 "parameters" => array(
4279 "option_sig" => "sig_externe",
4280 ),
4281 );
4282 //
4283 $links[] = array(
4284 "href" => "".OM_ROUTE_FORM."&obj=dossier_instruction&action=126&idx=0",
4285 "class" => "geocoder",
4286 "title" => _("Géolocalisation des dossiers"),
4287 "right" => array("dossier_instruction_geocoder", ),
4288 "open" => array("index.php|dossier_instruction[module=form][action=126]", ),
4289 "parameters" => array(
4290 "option_sig" => "sig_externe",
4291 ),
4292 );
4293 //
4294 $rubrik['links'] = $links;
4295 //
4296 $menu[] = $rubrik;
4297 $this->config__menu = $menu;
4298 }
4299
4300 /**
4301 * Récupère tous les résultats d'une requête SQL.
4302 *
4303 * @param string $query Requête SQL
4304 * @param boolean $force_return Force le retour d'un boolean en cas d'erreur
4305 *
4306 * @return array
4307 */
4308 function get_all_results_from_db_query($query = "", $force_return = false) {
4309 $res = $this->db->query($query);
4310 $this->addToLog(
4311 __METHOD__."(): db->query(\"".$query."\");",
4312 VERBOSE_MODE
4313 );
4314 $result = array(
4315 'code' => '',
4316 'message' => '',
4317 'result' => array(),
4318 );
4319 if ($this->isDatabaseError($res, $force_return) !== false) {
4320 $result['code'] = 'KO';
4321 $result['message'] = __("Erreur de base de donnees. Contactez votre administrateur.");
4322 return $result;
4323 }
4324 $result['code'] = 'OK';
4325 while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
4326 array_push($result['result'], $row);
4327 }
4328 $res->free();
4329 return $result;
4330 }
4331
4332 /**
4333 * Récupère un résultat d'une requête SQL.
4334 *
4335 * @param string $query Requête SQL
4336 * @param boolean $force_return Force le retour d'un boolean en cas d'erreur
4337 *
4338 * @return array
4339 */
4340 function get_one_result_from_db_query($query = "", $force_return = false) {
4341 $res = $this->db->getone($query);
4342 $this->addToLog(
4343 __METHOD__."(): db->getone(\"".$query."\");",
4344 VERBOSE_MODE
4345 );
4346 $result = array(
4347 'code' => '',
4348 'message' => '',
4349 'result' => array(),
4350 );
4351 if ($this->isDatabaseError($res, $force_return) !== false) {
4352 $result['code'] = 'KO';
4353 $result['message'] = __("Erreur de base de donnees. Contactez votre administrateur.");
4354 return $result;
4355 }
4356 $result['code'] = 'OK';
4357 $result['result'] = $res;
4358 return $result;
4359 }
4360
4361 /**
4362 * Instanciation de la classe 'edition'.
4363 * (surcharge de la fonction pour ajouter la prise en compte
4364 * de la surcharge locale de la classe om_edition).
4365 *
4366 * @param array $args Arguments à passer au constructeur.
4367 * @return edition
4368 */
4369 function get_inst__om_edition($args = array()) {
4370 if (file_exists("../obj/om_edition.class.php")) {
4371 require_once "../obj/om_edition.class.php";
4372 $class_name = "om_edition";
4373 } else {
4374 require_once PATH_OPENMAIRIE."om_edition.class.php";
4375 $class_name = "edition";
4376 }
4377 return new $class_name();
4378 }
4379
4380 /**
4381 * Instanciation de la classe 'reqmo'.
4382 * (surcharge de la fonction pour ajouter la prise en compte
4383 * de la surcharge locale de la classe om_edition).
4384 *
4385 * @param array $args Arguments à passer au constructeur.
4386 * @return edition
4387 */
4388 function get_inst__om_reqmo($args = array()) {
4389 if (file_exists("../obj/om_reqmo.class.php")) {
4390 require_once "../obj/om_reqmo.class.php";
4391 $class_name = "om_reqmo";
4392 } else {
4393 require_once PATH_OPENMAIRIE."om_reqmo.class.php";
4394 $class_name = "reqmo";
4395 }
4396 return new $class_name();
4397 }
4398
4399 /**
4400 * Permet d'enregistrer un fichier dans la table 'storage'.
4401 *
4402 * @return mixed Identifiant du fichier dans la table storage ou false.
4403 */
4404 function store_file($filecontent, $filemetadata, $type, $info = null, $collectivite = null) {
4405 if ($collectivite === null) {
4406 $get_collectivite = $this->getCollectivite();
4407 $collectivite = $get_collectivite['om_collectivite_idx'];
4408 }
4409 $uid = $this->storage->create($filecontent, $filemetadata);
4410 if ($uid == 'OP_FAILURE') {
4411 return false;
4412 }
4413 $inst_storage = $this->get_inst__om_dbform(array(
4414 "obj" => "storage",
4415 "idx" => "]",
4416 ));
4417 $val = array(
4418 "storage" => '',
4419 "file" => "NEW",
4420 "creation_date" => date("Y-m-d"),
4421 "creation_time" => date("G:i:s"),
4422 "uid" => $uid,
4423 "filename" => $filemetadata["filename"],
4424 "size" => $filemetadata["size"],
4425 "mimetype" => $filemetadata["mimetype"],
4426 "type" => $type,
4427 "info" => $info,
4428 "om_collectivite" => $collectivite,
4429 );
4430 $ret = $inst_storage->ajouter($val);
4431 if ($ret !== true) {
4432 return false;
4433 }
4434 // Récupère l'identifiant dans le storage
4435 $id = $inst_storage->get_storage_id_by_uid($uid);
4436 //
4437 return $id;
4438 }
4439
4440 /**
4441 * Surcharge de la fonction d'affichage pour ajouter
4442 * un détecteur de bloqueur de pub (cassant l'application).
4443 *
4444 * @return void
4445 */
4446 function displayHTMLFooter() {
4447 parent::displayHTMLFooter();
4448 if (in_array($this->flag, array("nohtml", "login", "logout", "anonym")) !== true) {
4449 $this->ad_blocker_detector();
4450 }
4451 }
4452
4453 /**
4454 * Affiche un bloc de code Javascript
4455 * responsable de détecter les bloqueurs de pub
4456 * et d'afficher un message le cas échéant.
4457 */
4458 protected function ad_blocker_detector() {
4459
4460 printf(
4461 '<script type="text/javascript">
4462 var blocked = [];
4463 // jquery has not loaded
4464 if(typeof($) == "undefined" && typeof(jQuery) == "undefined") {
4465 blocked.push("jquery");
4466 }
4467 // tinyMCE has not loaded
4468 if(typeof(tinyMCE) == "undefined") {
4469 blocked.push("tinyMCE");
4470 }
4471 // locale has not loaded
4472 if(typeof(locale) == "undefined") {
4473 blocked.push("locale");
4474 }
4475 // om_layout has not loaded
4476 if(typeof(om_initialize_content) == "undefined") {
4477 blocked.push("om_layout");
4478 }
4479 // app script has not loaded
4480 if(typeof(app_script_t4Fv4a59uSU7MwpJ59Qp) == "undefined") {
4481 blocked.push("app_script");
4482 }
4483
4484 // something was blocked
4485 if(blocked.length > 0) {
4486
4487 // removing every node in the body
4488 while(document.body.firstChild) { document.body.removeChild(document.body.firstChild); }
4489
4490 // creating the message (node) and its style
4491 var msgNode = document.createElement("p");
4492 msgNode.id = "adblocker-detected";
4493 msgNode.style.position = "relative";
4494 msgNode.style.width = "calc(100%% - 60px)";
4495 msgNode.style.margin = "20px auto";
4496 msgNode.style.padding = "20px";
4497 msgNode.style.background = "#FEF8F6";
4498 msgNode.style.color = "#cd0a0a";
4499 msgNode.style.border = "1px solid #cd0a0a";
4500 msgNode.style.borderRadius = "4px";
4501 msgNode.innerHTML = "%s";
4502
4503 // appending the message (node) to the body
4504 document.body.insertBefore(msgNode, document.body.firstChild);
4505 }
4506 </script>',
4507 sprintf(
4508 '<span>%s</span><br/><br/><span>%s</span><br/><br/><span>%s</span>',
4509 __("Un bloqueur de publicité a été détecté, et ceci empêche l'application de fonctionner normalement."),
4510 __("Afin de rétablir le bon fonctionnement, il vous est nécessaire d'ajouter l'application à la liste blanche des applications autorisées (<small>pour cela, référez-vous à la documentation de votre extension bloqueuse de publicité</small>)."),
4511 __("<em>Pour information, ceci se produit parce que l'application se nomme openADS, or les bloqueurs de publicité ont tendance à bloquer tout ce qui contient la chaîne de caractères 'ads' (<small>publicité</small> en anglais) comme c'est le cas dans le nom open<strong>ADS</strong>.</em>")
4512 )
4513 );
4514 }
4515
4516 }

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26