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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12654 - (show annotations)
Mon Aug 1 16:58:31 2022 UTC (2 years, 6 months ago) by softime
File size: 226994 byte(s)
* Fusion de la branche d'intégration 5.12.0-develop 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 * Constante donnant le code de la catégorie de document numérisé liée à Plat'AU
92 */
93 (defined("CODE_CATEGORIE_DOC_NUM_PLATAU") ? "" : define('CODE_CATEGORIE_DOC_NUM_PLATAU', 'PLATAU'));
94
95 /**
96 *
97 */
98 require_once PATH_OPENMAIRIE."om_application.class.php";
99
100 /**
101 *
102 */
103 class utils extends application {
104
105 /**
106 * Gestion du nom de l'application.
107 *
108 * @var mixed Configuration niveau application.
109 */
110 protected $_application_name = "openADS";
111
112 /**
113 * Titre HTML.
114 *
115 * @var mixed Configuration niveau application.
116 */
117 protected $html_head_title = ":: openMairie :: openADS";
118
119 /**
120 * Gestion du nom de la session.
121 *
122 * @var mixed Configuration niveau application.
123 */
124 protected $_session_name = "openads";
125
126 /**
127 * Gestion du favicon de l'application.
128 *
129 * @var mixed Configuration niveau application.
130 */
131 var $html_head_favicon = '../app/img/favicon.ico';
132
133 /**
134 * Gestion du mode de gestion des permissions.
135 *
136 * @var mixed Configuration niveau application.
137 */
138 protected $config__permission_by_hierarchical_profile = false;
139
140 // {{{
141
142 /**
143 * SURCHARGE DE LA CLASSE OM_APPLICATION.
144 *
145 * @see Documentation sur la méthode parent 'om_application:getCollectivite'.
146 */
147 function getCollectivite($om_collectivite_idx = null) {
148 // On vérifie si une valeur a été passée en paramètre ou non.
149 if ($om_collectivite_idx === null) {
150 // Cas d'utilisation n°1 : nous sommes dans le cas où on
151 // veut récupérer les informations de la collectivité de
152 // l'utilisateur et on stocke l'info dans un flag.
153 $is_get_collectivite_from_user = true;
154 // On initialise l'identifiant de la collectivité
155 // à partir de la variable de session de l'utilisateur.
156 $om_collectivite_idx = $_SESSION['collectivite'];
157 } else {
158 // Cas d'utilisation n°2 : nous sommes dans le cas où on
159 // veut récupérer les informations de la collectivité
160 // passée en paramètre et on stocke l'info dans le flag.
161 $is_get_collectivite_from_user = false;
162 }
163 //
164 $collectivite_parameters = parent::getCollectivite($om_collectivite_idx);
165
166 //// BEGIN - SURCHARGE OPENADS
167
168 // Ajout du paramétrage du sig pour la collectivité
169 if (file_exists("../dyn/var.inc")) {
170 include "../dyn/var.inc";
171 }
172 if (file_exists("../dyn/sig.inc.php")) {
173 include "../dyn/sig.inc.php";
174 }
175 if (!isset($sig_externe)) {
176 $sig_externe = "sig-default";
177 }
178 $idx_multi = $this->get_idx_collectivite_multi();
179
180 if (isset($collectivite_parameters['om_collectivite_idx'])
181 && isset($conf[$sig_externe][$collectivite_parameters['om_collectivite_idx']])
182 && isset($conf[$sig_externe]["sig_treatment_mod"])
183 && isset($collectivite_parameters["option_sig"])
184 && $collectivite_parameters["option_sig"] == "sig_externe"
185 ) {
186
187 // Cas numéro 1 : conf sig définie sur la collectivité et option sig active
188 $collectivite_parameters["sig"] = $conf[$sig_externe][$collectivite_parameters['om_collectivite_idx']];
189 $collectivite_parameters["sig"]["sig_treatment_mod"] = $conf[$sig_externe]["sig_treatment_mod"];
190
191 } elseif($idx_multi != ''
192 && isset($conf[$sig_externe][$idx_multi])
193 && isset($conf[$sig_externe]["sig_treatment_mod"])
194 && isset($collectivite_parameters["option_sig"])
195 && $collectivite_parameters["option_sig"] == "sig_externe") {
196 // Cas numéro : conf sig définie sur la collectivité multi et
197 // option_sig activé pour la collectivité mono
198 $collectivite_parameters["sig"] = $conf[$sig_externe][$idx_multi];
199 $collectivite_parameters["sig"]["sig_treatment_mod"] = $conf[$sig_externe]["sig_treatment_mod"];
200 }
201
202 //// END - SURCHARGE OPENADS
203
204 // Si on se trouve dans le cas d'utilisation n°1
205 if ($is_get_collectivite_from_user === true) {
206 // Alors on stocke dans l'attribut collectivite le tableau de
207 // paramètres pour utilisation depuis la méthode 'getParameter'.
208 $this->collectivite = $collectivite_parameters;
209 }
210 // On retourne le tableau de paramètres.
211 return $collectivite_parameters;
212 }
213
214 /**
215 * Affiche un bloc d'information.
216 *
217 * @param string $class Classe CSS.
218 * @param string $message Message à afficher.
219 *
220 * @return void
221 */
222 function display_panel_information($class = "", $message = "", $tableau=null, $legend=null, $id_suffixe='') {
223 if (!defined('REST_REQUEST')) {
224 if ($tableau !== null) {
225 $message .= '<fieldset id="fieldset-message-tab_'.$id_suffixe.'" class="cadre ui-corner-all ui-widget-content startClosed collapsed">';
226 $message .= '<legend class="ui-corner-all ui-widget-content ui-state-active">'.$legend.'</legend>';
227 $message .= '<div id="fieldset-message-tab-content" class="fieldsetContent" style="display: none;">';
228 $message .= '<ul>';
229 foreach ($tableau as $value) {
230 $message .= "<li>".$value."</li>";
231 }
232 $message .= '</ul>';
233 $message .= '</div>';
234 $message .= '</fieldset>';
235 }
236 //
237 if ($class == "ok") {
238 $class = "valid";
239 }
240 //
241 echo "\n<div class=\"panel_information ui-widget ui-corner-all ui-state-highlight ui-state-".$class."\">\n";
242 echo "<p>\n";
243 echo "\t<span class=\"ui-icon ui-icon-info\"><!-- --></span> \n\t";
244 echo "<span class=\"text\">";
245 echo $message;
246 echo "</span>";
247 echo "\n</p>\n";
248 echo "</div>\n";
249 }
250 }
251
252 /**
253 * Retourne l'identifiant de la collectivité multi ou l'identifiant de la
254 * seule collectivité dans le cas d'une installation mono.
255 *
256 * @return integer Identifiant de la collectivité multi.
257 */
258 public function get_idx_collectivite_multi() {
259 // Récupère l'identifiant de la collectivité de niveau 2
260 $sql = "SELECT om_collectivite FROM ".DB_PREFIXE."om_collectivite WHERE niveau = '2'";
261 $idx = $this->db->getOne($sql);
262 $this->addToLog(__METHOD__.": db->getOne(\"".$sql."\");", VERBOSE_MODE);
263 $this->isDatabaseError($idx);
264
265 // S'il n'y a pas de collectivité de niveau 2
266 if ($idx == null || $idx == '') {
267
268 // Compte le nombre de collectivité
269 $sql = "SELECT count(om_collectivite) FROM ".DB_PREFIXE."om_collectivite";
270 $count = $this->db->getOne($sql);
271 $this->addToLog(__METHOD__.": db->getOne(\"".$sql."\");", VERBOSE_MODE);
272 $this->isDatabaseError($count);
273
274 // S'il y qu'une collectivité
275 if ($count == 1) {
276
277 // Récupère l'identifiant de la seule collectivité
278 $sql = "SELECT om_collectivite FROM ".DB_PREFIXE."om_collectivite WHERE niveau = '1'";
279 $idx = $this->db->getOne($sql);
280 $this->addToLog(__METHOD__.": db->getOne(\"".$sql."\");", VERBOSE_MODE);
281 $this->isDatabaseError($idx);
282 }
283
284 }
285
286 // Retourne l'identifiant
287 return $idx;
288 }
289
290
291 /**
292 * Retourne l'identifiant de la collectivité de l'element de la table passée
293 * en paramètre.
294 *
295 * @param string $table Table de l'element.
296 * @param mixed $id Identifiant de l'element.
297 *
298 * @return string identifiant de la collectivite ou false si l'element n'existe pas.
299 */
300 public function get_collectivite_of_element($table, $id) {
301 $instance = $this->get_inst__om_dbform(array(
302 "obj" => $table,
303 "idx" => $id,
304 ));
305 if($instance->getVal($instance->clePrimaire) != '') {
306 return $instance->getVal('om_collectivite');
307 }
308 return false;
309 }
310
311
312 /**
313 * Retourne vrai si la collectivité passée en paramètre ou la collectivité
314 * de l'utilisateur connecté est mono.
315 *
316 * @param string $id Identifiant de la collectivité.
317 *
318 * @return boolean
319 */
320 public function isCollectiviteMono($id = null) {
321 // Si on ne passe pas de collectivité en argument
322 if ($id == null) {
323 // On vérifie la collectivité stockée en session de l'utilisateur
324 // connecté
325 $res = false;
326 if ($_SESSION['niveau'] === '1') {
327 //
328 $res = true;
329 }
330 //
331 return $res;
332 }
333
334 // Requête SQL
335 $sql = "SELECT niveau FROM ".DB_PREFIXE."om_collectivite WHERE om_collectivite = ".$id;
336 $niveau = $this->db->getOne($sql);
337 $this->addToLog(__METHOD__.": db->getOne(\"".$sql."\");", VERBOSE_MODE);
338 $this->isDatabaseError($niveau);
339
340 //
341 if ($niveau === '1') {
342 //
343 return true;
344 }
345 //
346 return false;
347 }
348
349 // }}}
350
351 // {{{
352
353 var $om_utilisateur = array();
354 var $user_is_instr = NULL;
355 var $user_is_service = NULL;
356 public $user_is_tiers = NULL;
357 var $user_is_admin = NULL;
358 var $user_is_service_ext = NULL;
359 public $user_is_tiers_ext = NULL;
360 var $user_is_qualificateur = NULL;
361 var $user_is_chef = NULL;
362 var $user_is_divisionnaire = NULL;
363 var $user_is_service_int = NULL;
364 public $user_is_tiers_int = NULL;
365
366 /**
367 * Méthode de récupération des informations de l'utilisateur connecté.
368 */
369 function getUserInfos() {
370
371 // Si l'utilisateur est loggé $_SESSION existe
372 if(isset($_SESSION['login']) AND !empty($_SESSION['login'])) {
373
374 // Récupération des infos utilisateur
375 $sqlUser = "SELECT om_utilisateur, nom, email, login, om_collectivite, om_profil ".
376 "FROM ".DB_PREFIXE."om_utilisateur WHERE login = '".$_SESSION['login']."'";
377 $resUser=$this->db->query($sqlUser);
378 $this->addToLog("getUserInfos(): db->query(\"".$sqlUser."\");", VERBOSE_MODE);
379 if ( database::isError($resUser)){
380 die();
381 }
382 $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);
383
384 // Récupère le profil et test si c'est un
385 $sqlProfil = "SELECT libelle FROM ".DB_PREFIXE."om_profil WHERE om_profil = ".$this->om_utilisateur['om_profil'];
386 $resProfil=$this->db->getOne($sqlProfil);
387 $this->addToLog("getUserInfos(): db->getOne(\"".$sqlProfil."\");", VERBOSE_MODE);
388 if (database::isError($resProfil)){
389 die();
390 }
391 // Sauvegarde le libelle du profil
392 $this->om_utilisateur["libelle_profil"] = $resProfil;
393
394 // si c'est un administrateur technique
395 // XXX Mauvaise méthode, il faut utiliser isAccredited
396 if ($resProfil == "ADMINISTRATEUR TECHNIQUE"
397 || $resProfil == "ADMINISTRATEUR FONCTIONNEL") {
398 $this->user_is_admin = true;
399 } else {
400 $this->user_is_admin = false;
401 }
402
403 //si c'est un service externe
404 if ($resProfil == "SERVICE CONSULTÉ") {
405 $this->user_is_service_ext = true;
406 } else {
407 $this->user_is_service_ext = false;
408 }
409
410 //si c'est un service interne
411 if ($resProfil == "SERVICE CONSULTÉ INTERNE") {
412 $this->user_is_service_int = true;
413 } else {
414 $this->user_is_service_int = false;
415 }
416
417 // TODO : a vérifié parce que je me contente de copier le traitement pour les services
418 // je ne sais pas si ce sera utile ou pas
419 //si c'est un tiers externe
420 if ($resProfil == "TIERS CONSULTÉ") {
421 $this->user_is_tiers_ext = true;
422 } else {
423 $this->user_is_tiers_ext = false;
424 }
425
426 //si c'est un tiers interne
427 if ($resProfil == "TIERS CONSULTÉ INTERNE") {
428 $this->user_is_tiers_int = true;
429 } else {
430 $this->user_is_tiers_int = false;
431 }
432
433 // si c'est un qualificateur
434 if ($resProfil == "QUALIFICATEUR") {
435 $this->user_is_qualificateur = true;
436 } else {
437 $this->user_is_qualificateur = false;
438 }
439
440 // si c'est un chef de service
441 if ($resProfil == "CHEF DE SERVICE") {
442 $this->user_is_chef = true;
443 } else {
444 $this->user_is_chef = false;
445 }
446
447 // si c'est un divisionnaire
448 if ($resProfil == "DIVISIONNAIRE") {
449 $this->user_is_divisionnaire = true;
450 } else {
451 $this->user_is_divisionnaire = false;
452 }
453
454 // Récupération des infos instructeur
455 $sqlInstr = "SELECT instructeur.instructeur, instructeur.nom, instructeur.telephone,
456 division.division, division.code, division.libelle ".
457 "FROM ".DB_PREFIXE."instructeur INNER JOIN ".DB_PREFIXE."division ON division.division=instructeur.division ".
458 "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
459 $resInstr=$this->db->query($sqlInstr);
460 $this->addToLog("getUserInfos(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);
461 if ( database::isError($resInstr)){
462 die();
463 }
464 $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);
465 // Si il y a un resultat c'est un instructeur
466 if (is_array($tempInstr) === true && count($tempInstr) > 0) {
467 $this->user_is_instr=true;
468 $this->om_utilisateur = array_merge($this->om_utilisateur,$tempInstr);
469 } else {
470 $this->user_is_instr=false;
471 }
472
473 // Récupération des infos de services consultés
474 $sqlServ = sprintf(
475 'SELECT
476 service.service,
477 service.abrege,
478 service.libelle
479 FROM
480 %1$sservice
481 INNER JOIN %1$slien_service_om_utilisateur
482 ON lien_service_om_utilisateur.service=service.service
483 WHERE
484 lien_service_om_utilisateur.om_utilisateur = %2$s',
485 DB_PREFIXE,
486 $this->om_utilisateur['om_utilisateur']
487 );
488 $resServ = $this->db->query($sqlServ);
489 $this->addToLog("getUserInfos(): db->query(\"".$sqlServ."\");", VERBOSE_MODE);
490 if ( database::isError($resServ)){
491 die();
492 }
493
494 while ($tempServ =& $resServ->fetchRow(DB_FETCHMODE_ASSOC)) {
495 $this->om_utilisateur['service'][]=$tempServ;
496 }
497 // Si il y a un resultat c'est un utilisateur de service
498 if(isset($this->om_utilisateur['service'])) {
499 $this->user_is_service=true;
500 } else {
501 $this->user_is_service=false;
502 }
503
504
505 // Récupération des infos de tiers consultés
506 $sqlTiers = sprintf(
507 'SELECT
508 tiers_consulte.tiers_consulte,
509 tiers_consulte.abrege,
510 tiers_consulte.libelle
511 FROM
512 %1$slien_om_utilisateur_tiers_consulte
513 INNER JOIN %1$stiers_consulte
514 ON lien_om_utilisateur_tiers_consulte.tiers_consulte=tiers_consulte.tiers_consulte
515 WHERE
516 lien_om_utilisateur_tiers_consulte.om_utilisateur = %2$s',
517 DB_PREFIXE,
518 $this->om_utilisateur['om_utilisateur']
519 );
520 $resTiers = $this->db->query($sqlTiers);
521 $this->addToLog("getUserInfos(): db->query(\"".$sqlTiers."\");", VERBOSE_MODE);
522 $this->isDatabaseError($resTiers);
523
524 while ($tempTiers = $resTiers->fetchRow(DB_FETCHMODE_ASSOC)) {
525 $this->om_utilisateur['tiers'][] = $tempTiers;
526 }
527
528 // Si il y a un resultat c'est un utilisateur de tiers
529 $this->user_is_tiers = false;
530 if (isset($this->om_utilisateur['tiers'])) {
531 $this->user_is_tiers = true;
532 }
533 }
534 }
535
536 /**
537 * getter user_is_service
538 */
539 function isUserService() {
540 //
541 if (is_null($this->user_is_service)) {
542 //
543 $this->getUserInfos();
544 }
545 //
546 return $this->user_is_service;
547 }
548
549 /**
550 * getter user_is_tiers
551 */
552 function isUserTiers() {
553 //
554 if (is_null($this->user_is_tiers)) {
555 //
556 $this->getUserInfos();
557 }
558 //
559 return $this->user_is_tiers;
560 }
561
562 /**
563 * getter user_is_instr
564 */
565 function isUserInstructeur() {
566 //
567 if (is_null($this->user_is_instr)) {
568 //
569 $this->getUserInfos();
570 }
571 //
572 return $this->user_is_instr;
573 }
574
575 function isUserAdministrateur() {
576 //
577 if (is_null($this->user_is_admin)) {
578 //
579 $this->getUserInfos();
580 }
581 //
582 return $this->user_is_admin;
583 }
584
585 /**
586 * getter user_is_service_ext
587 */
588 function isUserServiceExt() {
589 //
590 if (is_null($this->user_is_service_ext)) {
591 //
592 $this->getUserInfos();
593 }
594 //
595 return $this->user_is_service_ext;
596 }
597
598 /**
599 * getter user_is_service_int
600 */
601 function isUserServiceInt() {
602 //
603 if (is_null($this->user_is_service_int)) {
604 //
605 $this->getUserInfos();
606 }
607 //
608 return $this->user_is_service_int;
609 }
610
611 /**
612 * getter user_is_qualificateur
613 */
614 function isUserQualificateur() {
615 //
616 if (is_null($this->user_is_qualificateur)) {
617 //
618 $this->getUserInfos();
619 }
620 //
621 return $this->user_is_qualificateur;
622 }
623
624 /**
625 * getter user_is_chef
626 */
627 function isUserChef() {
628 //
629 if (is_null($this->user_is_chef)) {
630 //
631 $this->getUserInfos();
632 }
633 //
634 return $this->user_is_chef;
635 }
636
637 /**
638 * getter user_is_divisionnaire
639 */
640 function isUserDivisionnaire() {
641 //
642 if (is_null($this->user_is_divisionnaire)) {
643 //
644 $this->getUserInfos();
645 }
646 //
647 return $this->user_is_divisionnaire;
648 }
649
650 /**
651 * Méthode permettant de définir si l'utilisateur connecté peut ajouter un
652 * événement d'instruction
653 *
654 * @param integer $idx identifiant du dossier
655 * @param string $obj objet
656 *
657 * @return boolean true si il peut false sinon
658 */
659 function isUserCanAddObj($idx, $obj) {
660 // Si il à le droit "bypass" il peut ajouter
661 if($this->isAccredited($obj."_ajouter_bypass") === true) {
662 return true;
663 }
664 if($this->isAccredited(array($obj."_ajouter", $obj), "OR") === false) {
665 return false;
666 }
667 $return = false;
668
669 $object_instance = $this->get_inst__om_dbform(array(
670 "obj" => $obj,
671 "idx" => "]",
672 ));
673 // Si il n'est pas dans la même division on défini le retour comme faux
674 // à moins qu'il ai un droit de changement de decision
675 if($this->isUserInstructeur() === true &&
676 ($object_instance->getDivisionFromDossier($idx) == $_SESSION["division"] or
677 ($obj == "instruction" &&
678 $object_instance->isInstrCanChangeDecision($idx) === true))) {
679
680 $return = true;
681 }
682
683 return $return;
684 }
685
686
687 /**
688 * Ajout de variables de session contenant la division pour permettre une
689 * utilisation plus efficace dans les requetes.
690 *
691 * @param array $utilisateur Tableau d'informations de l'utilisateur.
692 */
693 function triggerAfterLogin($utilisateur = NULL) {
694 // Récupération de la division de l'utilisateur.
695 $sql = "SELECT instructeur.division, division.code
696 FROM ".DB_PREFIXE."instructeur
697 LEFT JOIN ".DB_PREFIXE."division
698 ON instructeur.division = division.division
699 WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";
700 $res = $this->db->query($sql);
701 $this->addToLog(
702 __METHOD__."(): db->query(\"".$sql."\");",
703 VERBOSE_MODE
704 );
705 if (database::isError($res)) {
706 die();
707 }
708 $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
709 // Enregistrement de la division en session
710 if (isset($row["division"]) && $row["division"] != NULL) {
711 $_SESSION["division"] = $row["division"];
712 $_SESSION["division_code"] = $row["code"];
713 } else {
714 $_SESSION["division"] = "0";
715 $_SESSION["division_code"] = "";
716 }
717 // Récupération du paramétrage des groupes de l'utilisateur.
718 $sqlGroupes = "SELECT groupe.code, lien_om_utilisateur_groupe.confidentiel, lien_om_utilisateur_groupe.enregistrement_demande, groupe.libelle
719 FROM ".DB_PREFIXE."groupe
720 RIGHT JOIN ".DB_PREFIXE."lien_om_utilisateur_groupe ON
721 lien_om_utilisateur_groupe.groupe = groupe.groupe
722 WHERE lien_om_utilisateur_groupe.login = '".$utilisateur["login"] ."'
723 ORDER BY libelle";
724 $resGroupes = $this->db->query($sqlGroupes);
725 $this->addToLog(
726 __METHOD__."(): db->query(\"".$sqlGroupes."\");",
727 VERBOSE_MODE
728 );
729 if (database::isError($resGroupes)) {
730 die();
731 }
732 // Si aucun résultat alors récupération du paramétrage des groupes du profil
733 if ($resGroupes->numRows() === 0) {
734 $sqlGroupes = "SELECT groupe.code, lien_om_profil_groupe.confidentiel, lien_om_profil_groupe.enregistrement_demande, groupe.libelle
735 FROM ".DB_PREFIXE."groupe
736 RIGHT JOIN ".DB_PREFIXE."lien_om_profil_groupe ON
737 lien_om_profil_groupe.groupe = groupe.groupe
738 AND om_profil = ".$utilisateur["om_profil"] ."
739 ORDER BY libelle";
740 $resGroupes = $this->db->query($sqlGroupes);
741 $this->addToLog(
742 __METHOD__."(): db->query(\"".$sqlGroupes."\");",
743 VERBOSE_MODE
744 );
745 if (database::isError($resGroupes)) {
746 die();
747 }
748 }
749 $_SESSION["groupe"] = array();
750 // Enregistrement des groupe en session
751 while ($row = $resGroupes->fetchrow(DB_FETCHMODE_ASSOC)) {
752 if ($row["confidentiel"] === 't') {
753 $row["confidentiel"] = true;
754 } else {
755 $row["confidentiel"] = false;
756 }
757 if ($row["enregistrement_demande"] === 't') {
758 $row["enregistrement_demande"] = true;
759 } else {
760 $row["enregistrement_demande"] = false;
761 }
762 $_SESSION["groupe"][$row["code"]] = array(
763 "confidentiel" => $row["confidentiel"],
764 "enregistrement_demande" => $row["enregistrement_demande"],
765 "libelle" => $row["libelle"],
766 );
767 }
768 }
769
770 // Affichage des actions supplémentaires
771 function displayActionExtras() {
772 // Affichage de la division si l'utilisateur en possède une
773 if ($_SESSION["division"] != 0) {
774 echo "\t\t\t<li class=\"action-division\">";
775 echo "(".$_SESSION['division_code'].")";
776 echo "</li>\n";
777 }
778 }
779
780 // }}}
781
782
783 // {{{ GESTION DES FICHIERS
784
785 /**
786 *
787 */
788 function notExistsError ($explanation = NULL) {
789 // message
790 $message_class = "error";
791 $message = _("Cette page n'existe pas.");
792 $this->addToMessage ($message_class, $message);
793 //
794 $this->setFlag(NULL);
795 $this->display();
796
797 //
798 die();
799 }
800
801 // }}}
802 /**
803 * Retourne le statut du dossier d'instruction
804 * @param string $idx Identifiant du dossier d'instruction
805 * @return string Le statut du dossier d'instruction
806 */
807 function getStatutDossier($idx){
808
809 $statut = '';
810
811 //Si l'identifiant du dossier d'instruction fourni est correct
812 if ( $idx != '' ){
813
814 //On récupère le statut de l'état du dossier à partir de l'identifiant du
815 //dossier d'instruction
816 $sql = "SELECT etat.statut
817 FROM ".DB_PREFIXE."dossier
818 LEFT JOIN
819 ".DB_PREFIXE."etat
820 ON
821 dossier.etat = etat.etat
822 WHERE dossier ='".$idx."'";
823 $statut = $this->db->getOne($sql);
824 $this->addToLog("getStatutDossier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
825 if ( database::isError($statut)){
826 die();
827 }
828 }
829 return $statut;
830 }
831
832 /**
833 * Formate le champ pour le type Timestamp
834 * @param date $date_str Date
835 * @param boolean $show Format pour l'affichage
836 * @return mixed False si le traitement échoue ou la date formatée
837 */
838 function formatTimestamp ($date_str, $show = true) {
839
840 // Sépare la date et l'heure
841 $date = explode(" ", $date_str);
842 if (count($date) != 2) {
843 return false;
844 }
845
846 // Date en BDD
847 $date_db = explode ('-', $date[0]);
848 // Date en affichage
849 $date_show = explode ('/', $date[0]);
850
851 // Contrôle la composition de la date
852 if (count ($date_db) != 3 and count ($date_show) != 3) {
853 return false;
854 }
855
856 if (count ($date_db) == 3) {
857 // Vérifie que c'est une date valide
858 if (!checkdate($date_db[1], $date_db[2], $date_db[0])) {
859 return false;
860 }
861 // Si c'est pour l'affichage de la date
862 if ($show == true) {
863 return $date_db [2]."/".$date_db [1]."/".$date_db [0]." ".$date[1];
864 } else {
865 return $date[0];
866 }
867 }
868
869 //
870 if (count ($date_show) == 3) {
871 // Vérifie que c'est une date valide
872 if (!checkdate($date_show[1], $date_show[0], $date_show[2])) {
873 return false;
874 }
875 // Si c'est pour l'affichage de la date
876 if ($show == true) {
877 return $date[0];
878 } else {
879 return $date_show [2]."-".$date_show [1]."-".$date_show [0]." ".$date[1];
880 }
881
882 }
883 return false;
884
885 }
886
887 /**
888 * Permet de calculer la liste des parcelles à partir de la chaîne passée en paramètre
889 * et la retourner sous forme d'un tableau associatif
890 *
891 * @param string $strParcelles Chaîne de la parcelles.
892 * @param string $collectivite_idx Collectivite de la parcelle.
893 *
894 * @return array (array(prefixe, quartier, section, parcelle), ...)
895 */
896 function parseParcelles($strParcelles, $collectivite_idx = null) {
897
898 // Séparation des lignes
899 $references = explode(";", $strParcelles);
900 $liste_parcelles = array();
901
902 // On boucle sur chaque ligne pour ajouter la liste des parcelles de chaque ligne
903 foreach ($references as $parcelles) {
904 // Si le contenu de la parcelle est vide on passe à la suite
905 if ($parcelles == ""){
906 break;
907 }
908 // Tableau des champs de la ligne de références cadastrales
909 $reference_tab = array();
910 // On récupère le quartier
911 preg_match('/^[0-9]{3}/', $parcelles, $matches);
912 if (empty($matches) === false) {
913 $reference_tab[] = $matches[0];
914 }
915
916 // Le dernier chiffre de la parcelle est soit au caractère 9 soit au caractère 8
917 // Ceci nous permet de savoir si il y a une ou deux lettres dans la section
918 if (substr($parcelles, 8, 1) == ''
919 || substr($parcelles, 8, 1) == "A"
920 || substr($parcelles, 8, 1) == "/" ) {
921 //
922 $only_one_letter = true;
923 $regex_for_section = '/^[a-zA-Z]{1}/';
924
925 } else if ( preg_match('/^[0-9]+$/', substr($parcelles, 8, 1)) == 1 ) {
926 $only_one_letter = false;
927 $regex_for_section = '/^[0-9a-zA-Z]{2}/';
928 }
929
930 // On récupère la section
931 preg_match($regex_for_section, substr($parcelles, 3), $matches);
932 if (empty($matches) === false) {
933 $reference_tab[] = $matches[0];
934 }
935
936 // On récupère la parcelle
937 preg_match('/^[0-9]{4}/', substr($parcelles, $only_one_letter === true ? 4 : 5 ), $matches);
938 if (empty($matches) === false) {
939 $reference_tab[] = $matches[0];
940 }
941
942 // On vérifie que la référence cadastrale possède au moins un séparateur
943 if ( substr($parcelles, $only_one_letter === true ? 8 : 9 ) !== false ) {
944 // Initialisation du tableau qui va contenir les séparateurs et les parcelles non triés
945 $sep_parc_tab = array();
946
947 // On récupère les séparateurs et les parcelles dans un tableau
948 $sep_parc_tab = preg_split('/(A)|(\/)/', substr($parcelles, $only_one_letter === true ? 8 : 9 ), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
949
950 // Si le tableau est rempli on boucle sur les séparateurs + parcelles pour les ajouter dans le tableau
951 if ( empty($sep_parc_tab) === false ) {
952 foreach ($sep_parc_tab as $value) {
953 $reference_tab[] = $value;
954 }
955 }
956 }
957
958 // Calcul des parcelles
959 $quartier = $reference_tab[0];
960 $sect = $reference_tab[1];
961
962 $ancien_ref_parc = "";
963 for ($i=2; $i < count($reference_tab); $i+=2) {
964 if($collectivite_idx != null) {
965 // Récupération du code impot de l'arrondissement
966 $collectivite = $this->getCollectivite($collectivite_idx);
967 $parc["prefixe"] = $this->get_arrondissement_code_impot($quartier);
968 }
969 $parc["quartier"] = $quartier;
970 // Met en majuscule si besoin
971 $parc["section"] = strtoupper($sect);
972 if( $ancien_ref_parc == "" OR $reference_tab[$i-1] == "/") {
973 // 1ere parcelle ou parcelle individuelle
974 // Compléte par des "0" le début de la chaîne si besoin
975 $parc["parcelle"] = str_pad($reference_tab[$i], 4, "0", STR_PAD_LEFT);
976 // Ajout d'une parcelle à la liste
977 $liste_parcelles[] = $parc;
978 } elseif ($reference_tab[$i-1] == "A") {
979 // Interval de parcelles
980 for ($j=$ancien_ref_parc+1; $j <= $reference_tab[$i]; $j++) {
981 // Compléte par des "0" le début de la chaîne si besoin
982 $parc["parcelle"] = str_pad($j, 4, "0", STR_PAD_LEFT);
983 // Ajout d'une parcelle à la liste
984 $liste_parcelles[] = $parc;
985 }
986 }
987 //Gestion des erreurs
988 else{
989
990 echo _("Une erreur de formattage a ete detecte dans la reference cadastrale du dossier ").$this->row['dossier'];
991 }
992 // Sauvegarde de la référence courante de parcelle
993 $ancien_ref_parc = $reference_tab[$i];
994 }
995 }
996
997 return $liste_parcelles;
998 }
999
1000
1001 /**
1002 * Récupère le code impôt par rapport au quartier.
1003 *
1004 * @param string $quartier Numéro de quartier.
1005 * @return string Code impôts.
1006 */
1007 protected function get_arrondissement_code_impot($quartier) {
1008 // Initialisation
1009 $code_impots = "";
1010 // Si le quartier fournis est correct
1011 if ($quartier != "") {
1012 // Requête SQL
1013 $sql = "SELECT
1014 arrondissement.code_impots
1015 FROM
1016 ".DB_PREFIXE."arrondissement
1017 LEFT JOIN
1018 ".DB_PREFIXE."quartier
1019 ON
1020 quartier.arrondissement = arrondissement.arrondissement
1021 WHERE
1022 quartier.code_impots = '".$quartier."'";
1023
1024 }
1025 $code_impots = $this->db->getOne($sql);
1026 if ($code_impots === null) {
1027 $code_impots = "";
1028 }
1029 $this->isDatabaseError($code_impots);
1030 // Retour
1031 return $code_impots;
1032 }
1033
1034
1035 /**
1036 * Formate les parcelles en ajoutant le code impôt
1037 * @param array $liste_parcelles Tableau des parcelles
1038 * @return string Liste des parcelles formatées
1039 */
1040 function formatParcelleToSend($liste_parcelles) {
1041
1042 //
1043 $wParcelle = array();
1044
1045 //Formatage des références cadastrales pour l'envoi
1046 foreach ($liste_parcelles as $value) {
1047
1048 // On ajoute les données dans le tableau que si quartier + section + parcelle
1049 // a été fourni
1050 if ($value["quartier"] !== ""
1051 && $value["section"] !== ""
1052 && $value["parcelle"] !== ""){
1053
1054 //On récupère le code impôt de l'arrondissement
1055 $arrondissement = $this->getCodeImpotByQuartier($value["quartier"]);
1056
1057 //On ajoute la parcelle, si un arrondissement a été trouvé
1058 if ($arrondissement!=="") {
1059 //
1060 $wParcelle[] = $arrondissement.$value["quartier"].
1061 str_pad($value["section"], 2, " ", STR_PAD_LEFT).
1062 $value["parcelle"];
1063 }
1064 }
1065 }
1066
1067 //
1068 return $wParcelle;
1069 }
1070
1071 /**
1072 * Récupère le code impôt par rapport au quartier
1073 * @param string $quartier Numéro de quartier
1074 * @return string Code impôt
1075 */
1076 function getCodeImpotByQuartier($quartier) {
1077
1078 $arrondissement = "";
1079
1080 // Si le quartier fournis est correct
1081 if ($quartier != "") {
1082
1083 // Requête SQL
1084 $sql = "SELECT
1085 arrondissement.code_impots
1086 FROM
1087 ".DB_PREFIXE."arrondissement
1088 LEFT JOIN
1089 ".DB_PREFIXE."quartier
1090 ON
1091 quartier.arrondissement = arrondissement.arrondissement
1092 WHERE
1093 quartier.code_impots = '".$quartier."'";
1094 $this->addToLog("getCodeImpotByQuartier() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1095 $arrondissement = $this->db->getOne($sql);
1096 $this->isDatabaseError($arrondissement);
1097 }
1098
1099 // Retour
1100 return $arrondissement;
1101 }
1102
1103
1104 /**
1105 * Retourne true si tous les paramètres du SIG externe ont bien été définis
1106 * @return bool true/false
1107 */
1108 public function issetSIGParameter($idx) {
1109 $collectivite_idx = $this->get_collectivite_of_element("dossier", $idx);
1110 $collectivite = $this->getCollectivite($collectivite_idx);
1111 if(isset($collectivite["sig"])) {
1112 return true;
1113 } else {
1114 return false;
1115 }
1116 }
1117
1118 /**
1119 * Permet de vérifier que des champs existe dans une table
1120 * @param array $list_fields Liste des champs à tester
1121 * @param string $table Table où les champs doivent exister
1122 * @return mixed Retourne les champs qui n'existent pas
1123 * ou true
1124 */
1125 public function check_field_exist($list_fields, $table) {
1126
1127 // Instance de la classe en paramètre
1128 $object = $this->get_inst__om_dbform(array(
1129 "obj" => $table,
1130 "idx" => "]",
1131 ));
1132
1133 // Récupère les champs de la table
1134 foreach ($object->champs as $champ) {
1135 $list_column[] = $champ;
1136 }
1137
1138 // Tableau des champs en erreur
1139 $error_fields = array();
1140
1141 // Pour chaque champ à tester
1142 foreach ($list_fields as $value) {
1143
1144 // S'il n'apparaît pas dans la liste des champs possible
1145 if (!in_array($value, $list_column)) {
1146
1147 // Alors le champ est ajouté au tableau des erreurs
1148 $error_fields[] = $value;
1149 }
1150 }
1151
1152 // Si le tableau des erreurs n'est pas vide on le retourne
1153 if (count($error_fields) > 0) {
1154 return $error_fields;
1155 }
1156
1157 // Sinon on retourne le booléen true
1158 return true;
1159
1160 }
1161
1162 /*
1163 *
1164 */
1165 /**
1166 * Récupère la lettre type lié à un événement
1167 * @param integer $evenement L'identifiant de l'événement
1168 * @return integer Retourne l'idenfiant de la lettre-type ou true
1169 */
1170 function getLettreType($evenement){
1171
1172 $lettretype = NULL;
1173
1174 $sql =
1175 "SELECT
1176 lettretype
1177 FROM
1178 ".DB_PREFIXE."evenement
1179 WHERE
1180 evenement = $evenement";
1181
1182 $this->addToLog("getLettreType() : db->query(\"".$sql."\")", VERBOSE_MODE);
1183 $res = $this->db->query($sql);
1184 if ( database::isError($res)){
1185 die();
1186 }
1187
1188 if ( $res->numrows() > 0 ){
1189
1190 $row=& $res->fetchRow(DB_FETCHMODE_ASSOC);
1191 $lettretype = $row['lettretype'];
1192 }
1193
1194 return $lettretype;
1195 }
1196
1197 /**
1198 * Retourne le type de dossier d'autorisation du dossier courant :
1199 * @param $idxDossier Le numéro du dossier d'instruction
1200 * @return le code du type détaillée de dossier d'autorisation
1201 **/
1202 function getDATDCode($idxDossier) {
1203 $sql = "SELECT dossier_autorisation_type_detaille.code
1204 FROM ".DB_PREFIXE."dossier_autorisation_type_detaille
1205 INNER JOIN ".DB_PREFIXE."dossier_autorisation
1206 ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille =
1207 dossier_autorisation.dossier_autorisation_type_detaille
1208 INNER JOIN ".DB_PREFIXE."dossier ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
1209 WHERE dossier.dossier = '".$idxDossier."'";
1210 $res = $this->db->getOne($sql);
1211 $this->addToLog("getDATDCode() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
1212 if ( database::isError($res)){
1213 die();
1214 }
1215 return $res;
1216 }
1217
1218 /**
1219 * Retourne le type de dossier d'autorisation du dossier courant :
1220 * @param $idxDossier Le numéro du dossier d'instruction
1221 * @return le code du type de dossier d'autorisation
1222 **/
1223 function getDATCode($idxDossier) {
1224 $sql = "
1225 SELECT
1226 dossier_autorisation_type.code
1227 FROM
1228 ".DB_PREFIXE."dossier_autorisation_type
1229 INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
1230 ON dossier_autorisation_type.dossier_autorisation_type=dossier_autorisation_type_detaille.dossier_autorisation_type
1231 INNER JOIN ".DB_PREFIXE."dossier_autorisation
1232 ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille=dossier_autorisation.dossier_autorisation_type_detaille
1233 INNER JOIN ".DB_PREFIXE."dossier
1234 ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation
1235 WHERE
1236 dossier.dossier = '".$idxDossier."'
1237 ";
1238 $res = $this->db->getOne($sql);
1239 $this->addToLog(__METHOD__."(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
1240 if ( database::isError($res)){
1241 die();
1242 }
1243 return $res;
1244 }
1245
1246 /**
1247 * Permet de copier un enregistrement
1248 * @param mixed $idx Identifiant de l'enregistrment
1249 * @param string $obj Objet de l'enregistrment
1250 * @param string $objsf Objets associés
1251 * @return array Tableau des nouveaux id et du message
1252 */
1253 function copier($idx, $obj, $objsf) {
1254
1255 // Tableau de résultat
1256 $resArray = array();
1257 // Message retourné à l'utilisateur
1258 $message = "";
1259 // Type du message (valid ou error)
1260 $message_type = "valid";
1261
1262 // Requête SQL permettant de récupérer les informations sur l'objet métier
1263 $sql = "SELECT *
1264 FROM ".DB_PREFIXE.$obj."
1265 WHERE ".$obj." = ".$idx;
1266 $res = $this->db->query($sql);
1267 $this->isDatabaseError($res);
1268
1269 // Valeurs clonées
1270 $valF = array();
1271 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1272 // Recupère la valeur
1273 $valF = $row;
1274 }
1275
1276 // Valeurs non clonées
1277 // Identifiant modifié pour que ça soit un ajout
1278 $valF[$obj] = "]";
1279 // Instance de l'objet métier
1280 $clone_obj = $this->get_inst__om_dbform(array(
1281 "obj" => $obj,
1282 "idx" => "]",
1283 ));
1284 // Si dans l'objet métier la fonction "copier" existe
1285 if (method_exists($clone_obj, "update_for_copy")) {
1286 // Traitement sur les valeurs du duplicata
1287 $valF = $clone_obj->update_for_copy($valF, $objsf, DEBUG);
1288 // Recupère les messages retourné par la fonction
1289 $message .= $valF['message'];
1290 // Supprime les messages de la liste des valeurs
1291 unset($valF['message']);
1292 }
1293 // Ajoute le duplicata
1294 $clone_obj->ajouter($valF);
1295 // Si aucune erreur se produit dans la classe instanciée
1296 if ($clone_obj->correct === true) {
1297 // Récupère l'identifiant de l'objet créé
1298 $clone_obj_id = $clone_obj->valF[$obj];
1299
1300 // Message
1301 $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 />";
1302 $message .= sprintf(
1303 '<a class="om-prev-icon" id="action-link--copy-of-%s-%s" href="%s">%s</a><br/><br/>',
1304 $obj,
1305 $idx,
1306 sprintf(
1307 '%s&obj=%s&action=3&idx=%s',
1308 OM_ROUTE_FORM,
1309 $obj,
1310 $clone_obj_id
1311 ),
1312 ("Cliquer ici pour accéder à la copie")
1313 );
1314 // Ajout de l'identifant au tableau des résultat
1315 $resArray[$obj.'_'.$idx] = $clone_obj_id;
1316
1317 // S'il y a au moins un objet metier associé
1318 if ($objsf != "") {
1319 // Liste des objet métier associés
1320 $list_objsf = explode(",", $objsf);
1321 // Pour chaque objet associé
1322 foreach ($list_objsf as $key => $objsf) {
1323 // Requête SQL permettant de récupérer les informations sur
1324 // l'objet métier associé
1325 $sql = "SELECT *
1326 FROM ".DB_PREFIXE.$objsf."
1327 WHERE ".$obj." = ".$idx;
1328 $res = $this->db->query($sql);
1329 $this->isDatabaseError($res);
1330
1331 // Pour chaque élément associé
1332 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1333 // Identifiant de l'objet associé à copier
1334 $idxsf = $row[$objsf];
1335
1336 // Valeurs clonées
1337 $valF = $row;
1338 // Valeurs non clonées
1339 $valF[$obj] = $clone_obj_id;
1340 // Identifiant modifié pour que ça soit un ajout
1341 $valF[$objsf] = "]";
1342 // Instance de l'objet métier associé
1343 $clone_objsf = $this->get_inst__om_dbform(array(
1344 "obj" => $objsf,
1345 "idx" => "]",
1346 ));
1347 // Si dans l'objet métier associé
1348 // la fonction "copier" existe
1349 if (method_exists($clone_objsf, "update_for_copy")) {
1350 // Traitement sur les valeurs du duplicata
1351 $valF = $clone_objsf->update_for_copy($valF, $objsf, DEBUG);
1352 // Recupère les messages retourné par la fonction
1353 $message .= $valF['message'];
1354 // Supprime les messages de la liste des valeurs
1355 unset($valF['message']);
1356 }
1357 // Ajoute le duplicata
1358 $clone_objsf->ajouter($valF);
1359 // Si aucune erreur se produit dans la classe instanciée
1360 if ($clone_objsf->correct === true) {
1361 // Récupère l'identifiant de l'objet créé
1362 $clone_objsf_id = $clone_objsf->valF[$objsf];
1363
1364 // Message
1365 $message .= sprintf(
1366 _("La copie de l'enregistrement %s avec l'identifiant %s s'est effectuee avec succes"),
1367 "<span class='bold'>"._($objsf)."</span>",
1368 "<span class='bold'>".$idxsf."</span>"
1369 )."<br />";
1370
1371 // Ajout de l'identifant au tableau des résultat
1372 $resArray[$objsf.'_'.$row[$objsf]] = $clone_objsf_id;
1373 } else {
1374
1375 // Message d'erreur récupéré depuis la classe
1376 $message .= $clone_objsf->msg;
1377 // Type du message
1378 $message_type = "error";
1379 }
1380 }
1381 }
1382 }
1383 //
1384 } else {
1385
1386 // Message d'erreur récupéré depuis la classe
1387 $message .= $clone_obj->msg;
1388 // Type du message
1389 $message_type = "error";
1390 }
1391
1392 // Ajout du message au tableau des résultats
1393 $resArray['message'] = $message;
1394 // Ajout du type de message au tableau des résultats
1395 $resArray['message_type'] = $message_type;
1396
1397 // Retourne le tableau des résultats
1398 return $resArray;
1399 }
1400
1401 /**
1402 * Cette fonction prend en entrée le ou les paramètres du &contrainte qui sont entre
1403 * parenthèses (un ensemble de paramètres séparés par des points-virgules). Elle
1404 * sépare les paramètres et leurs valeurs puis construit et retourne un tableau
1405 * associatif qui contient pour les groupes et sous-groupes :
1406 * - un tableau de valeurs, avec un nom de groupe ou sous-groupe par ligne
1407 * pour les autres options :
1408 * - la valeur de l'option
1409 *
1410 * @param string $contraintes_param Chaîne contenant tous les paramètres
1411 *
1412 * @return array Tableau associatif avec paramètres et valeurs séparés
1413 */
1414 function explodeConditionContrainte($contraintes_param) {
1415
1416 // Initialisation des variables
1417 $return = array();
1418 $listGroupes = "";
1419 $listSousgroupes = "";
1420 $service_consulte = "";
1421 $affichage_sans_arborescence = "";
1422
1423 // Sépare toutes les conditions avec leurs valeurs et les met dans un tableau
1424 $contraintes_params = explode(";", $contraintes_param);
1425
1426 // Pour chaque paramètre de &contraintes
1427 foreach ($contraintes_params as $value) {
1428 // Récupère le mot-clé "liste_groupe" et les valeurs du paramètre
1429 if (strstr($value, "liste_groupe=")) {
1430 // On enlève le mots-clé "liste_groupe=", on garde les valeurs
1431 $listGroupes = str_replace("liste_groupe=", "", $value);
1432 }
1433 // Récupère le mot-clé "liste_ssgroupe" et les valeurs du paramètre
1434 if (strstr($value, "liste_ssgroupe=")) {
1435 // On enlève le mots-clé "liste_ssgroupe=", on garde les valeurs
1436 $listSousgroupes = str_replace("liste_ssgroupe=", "", $value);
1437 }
1438 // Récupère le mot-clé "service_consulte" et la valeur du paramètre
1439 if (strstr($value, "service_consulte=")) {
1440 // On enlève le mots-clé "service_consulte=", on garde sa valeur
1441 $service_consulte = str_replace("service_consulte=", "", $value);
1442 }
1443 // Récupère le mot-clé "affichage_sans_arborescence" et la valeur du
1444 // paramètre
1445 if (strstr($value, "affichage_sans_arborescence=")) {
1446 // On enlève le mots-clé "affichage_sans_arborescence=", on garde la valeur
1447 $affichage_sans_arborescence = str_replace("affichage_sans_arborescence=", "", $value);
1448 }
1449 }
1450
1451 // Récupère dans des tableaux la liste des groupes et sous-groupes qui
1452 // doivent être utilisés lors du traitement de la condition
1453 if ($listGroupes != "") {
1454 $listGroupes = array_map('trim', explode(",", $listGroupes));
1455 }
1456 if ($listSousgroupes != "") {
1457 $listSousgroupes = array_map('trim', explode(",", $listSousgroupes));
1458 }
1459
1460 // Tableau à retourner
1461 $return['groupes'] = $listGroupes;
1462 $return['sousgroupes'] = $listSousgroupes;
1463 $return['service_consulte'] = $service_consulte;
1464 $return['affichage_sans_arborescence'] = $affichage_sans_arborescence;
1465 return $return;
1466 }
1467
1468 /**
1469 * Méthode qui complète la clause WHERE de la requête SQL de récupération des
1470 * contraintes, selon les paramètres fournis. Elle permet d'ajouter une condition sur
1471 * les groupes, sous-groupes et les services consultés.
1472 *
1473 * @param $string $part Contient tous les paramètres fournis à &contraintes séparés
1474 * par des points-virgules, tel que définis dans l'état.
1475 * array[] $conditions Paramètre optionnel, contient les conditions déjà explosées
1476 * par la fonction explodeConditionContrainte()
1477 *
1478 * @return string Contient les clauses WHERE à ajouter à la requête SQL principale.
1479 */
1480 function traitement_condition_contrainte($part, $conditions = NULL) {
1481
1482 // Initialisation de la condition
1483 $whereContraintes = "";
1484 // Lorsqu'on a déjà les conditions explosées dans le paramètre $conditions, on
1485 // utilise ces données. Sinon, on appelle la méthode qui explose la chaîne de
1486 // caractères contenant l'ensemble des paramètres.
1487 if (is_array($conditions)){
1488 $explodeConditionContrainte = $conditions;
1489 }
1490 else {
1491 $explodeConditionContrainte = $this->explodeConditionContrainte($part);
1492 }
1493 // Récupère les groupes, sous-groupes et service_consulte pour la condition
1494 $groupes = $explodeConditionContrainte['groupes'];
1495 $sousgroupes = $explodeConditionContrainte['sousgroupes'];
1496 $service_consulte = $explodeConditionContrainte['service_consulte'];
1497
1498 // Pour chaque groupe
1499 if ($groupes != "") {
1500 foreach ($groupes as $key => $groupe) {
1501 // Si le groupe n'est pas vide
1502 if (!empty($groupe)) {
1503 // Choisit l'opérateur logique
1504 $op_logique = $key > 0 ? 'OR' : 'AND (';
1505 // Ajoute la condition
1506 $whereContraintes .= " ".$op_logique." lower(trim(both E'\n\r\t' from contrainte.groupe)) = lower('"
1507 .pg_escape_string($groupe)."')";
1508 }
1509 }
1510 // S'il y a des valeurs dans groupe
1511 if (count($groupes) > 0) {
1512 // Ferme la parenthèse
1513 $whereContraintes .= " ) ";
1514 }
1515 }
1516
1517 // Pour chaque sous-groupe
1518 if ($sousgroupes != "") {
1519 foreach ($sousgroupes as $key => $sousgroupe) {
1520 // Si le sous-groupe n'est pas vide
1521 if (!empty($sousgroupe)) {
1522 // Choisit l'opérateur logique
1523 $op_logique = $key > 0 ? 'OR' : 'AND (';
1524 // Ajoute la condition
1525 $whereContraintes .= " ".$op_logique." lower(trim(both E'\n\r\t' from contrainte.sousgroupe)) = lower('"
1526 .pg_escape_string($sousgroupe)."')";
1527 }
1528 }
1529 // S'il y a des valeurs dans sous-groupe
1530 if (count($sousgroupes) > 0) {
1531 // Ferme la parenthèse
1532 $whereContraintes .= " ) ";
1533 }
1534 }
1535
1536 // Si l'option service_consulte n'est pas vide
1537 if ($service_consulte != "") {
1538 // Ajoute la condition
1539 $whereContraintes .= " AND service_consulte = cast(lower('".$service_consulte."') as boolean) ";
1540 }
1541
1542 // Condition retournée
1543 return $whereContraintes;
1544 }
1545
1546 /**
1547 * Calcule une date par l'ajout ou la soustraction de mois ou de jours.
1548 *
1549 * @param date $date Date de base (format dd-mm-yyyy)
1550 * @param integer $delay Délais à ajouter
1551 * @param string $operator Opérateur pour le calcul ("-" ou "+")
1552 * @param string $type Type de calcul (mois ou jour)
1553 *
1554 * @return date Date calculée
1555 */
1556 function mois_date($date, $delay, $operator = "+", $type = "mois") {
1557 // On force le type du paramètre $delay
1558 $delay = intval($delay);
1559
1560 // Si un type n'est pas définit
1561 if ($type != "mois" && $type != "jour") {
1562 //
1563 return null;
1564 }
1565
1566 // Si aucune date n'a été fournie ou si ce n'est pas une date correctement
1567 // formatée
1568 if ( is_null($date) || $date == "" ||
1569 preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/', $date) == 0 ){
1570 return null;
1571 }
1572
1573 // Si l'opérateur n'est pas définit
1574 if ($operator != "+" && $operator != "-") {
1575 //
1576 return null;
1577 }
1578
1579 // Découpage de la date
1580 $temp = explode("-", $date);
1581 $day = (int) $temp[2];
1582 $month = (int) $temp[1];
1583 $year = (int) $temp[0];
1584
1585 // Si c'est un calcul sur des mois
1586 // Le calcul par mois ne se fait pas comme le calcul par jour car
1587 // les fonctions PHP ne réalisent pas les calculs réglementaires
1588 if ($type == "mois") {
1589
1590 // Si c'est une addition
1591 if ($operator == '+') {
1592 // Année à ajouter
1593 $year += floor($delay / 12);
1594 // Mois restant
1595 $nb_month = ($delay % 12);
1596 // S'il y a des mois restant
1597 if ($nb_month != 0) {
1598 // Ajout des mois restant
1599 $month += $nb_month;
1600 // Si ça dépasse le mois 12 (décembre)
1601 if ($month > 12) {
1602 // Soustrait 12 au mois
1603 $month -= 12;
1604 // Ajoute 1 à l'année
1605 $year += 1;
1606 }
1607 }
1608 }
1609
1610 // Si c'est une soustraction
1611 if ($operator == "-") {
1612 // Année à soustraire
1613 $year -= floor($delay / 12);
1614 // Mois restant
1615 $nb_month = ($delay % 12);
1616 // S'il y a des mois restant
1617 if ($nb_month != 0) {
1618 // Soustrait le délais
1619 $month -= $nb_month;
1620 // Si ça dépasse le mois 1 (janvier)
1621 if ($month < 1) {
1622 // Soustrait 12 au mois
1623 $month += 12;
1624 // Ajoute 1 à l'année
1625 $year -= 1;
1626 }
1627 }
1628 }
1629
1630 // Calcul du nombre de jours dans le mois sélectionné
1631 switch($month) {
1632 // Mois de février
1633 case "2":
1634 if ($year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0) {
1635 $day_max = 29;
1636 } else {
1637 $day_max = 28;
1638 }
1639 break;
1640 // Mois d'avril, juin, septembre et novembre
1641 case "4":
1642 case "6":
1643 case "9":
1644 case "11":
1645 $day_max = 30;
1646 break;
1647 // Mois de janvier, mars, mai, juillet, août, octobre et décembre
1648 default:
1649 $day_max = 31;
1650 }
1651
1652 // Si le jour est supérieur au jour maximum du mois
1653 if ($day > $day_max) {
1654 // Le jour devient le jour maximum
1655 $day = $day_max;
1656 }
1657
1658 // Compléte le mois et le jour par un 0 à gauche si c'est un chiffre
1659 $month = str_pad($month, 2, "0", STR_PAD_LEFT);
1660 $day = str_pad($day, 2, "0", STR_PAD_LEFT);
1661
1662 // Résultat du calcul
1663 $date_result = $year."-".$month."-".$day;
1664 }
1665
1666 // Si c'est un calcul sur des jours
1667 if ($type == "jour") {
1668 //
1669 $datetime = new DateTime($date);
1670 // Si le délai est un numérique
1671 if (is_numeric($delay)) {
1672 // Modifie la date
1673 $datetime->modify($operator.$delay.' days');
1674 }
1675 // Résultat du calcul
1676 $date_result = $datetime->format('Y-m-d');
1677 }
1678
1679 // Retourne la date calculée
1680 return $date_result;
1681 }
1682
1683 /**
1684 * Vérifie la valididité d'une date.
1685 *
1686 * @param string $pDate Date à vérifier
1687 *
1688 * @return boolean
1689 */
1690 function check_date($pDate) {
1691
1692 // Vérifie si c'est une date valide
1693 if (preg_match("/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/", $pDate, $date)
1694 && checkdate($date[2], $date[3], $date[1])
1695 && $date[1] >= 1900) {
1696 //
1697 return true;
1698 }
1699
1700 //
1701 return false;
1702 }
1703
1704 /**
1705 * Permet de tester le bypass
1706 *
1707 * @param string $obj le nom de l'objet
1708 * @param string $permission_suffix
1709 * @return boolean
1710 */
1711 function can_bypass($obj="", $permission_suffix=""){
1712 //On teste le droit bypass
1713 if ($permission_suffix!=""&&$obj!=""&&
1714 $this->isAccredited($obj."_".$permission_suffix."_bypass")){
1715 return true;
1716 }
1717 return false;
1718 }
1719
1720
1721 /**
1722 * Vérifie l'option de numérisation.
1723 *
1724 * @return boolean
1725 */
1726 public function is_option_digitalization_folder_enabled() {
1727 //
1728 if ($this->getParameter("option_digitalization_folder") !== true) {
1729 //
1730 return false;
1731 }
1732 //
1733 return true;
1734 }
1735
1736
1737 /**
1738 * Vérifie l'option de suppression d'un dossier d'instruction.
1739 *
1740 * @return boolean
1741 */
1742 public function is_option_suppression_dossier_instruction_enabled($om_collectivite=null) {
1743 //
1744 $parameters = $this->getCollectivite($om_collectivite);
1745 //
1746 if (isset($parameters['option_suppression_dossier_instruction']) === true
1747 && $parameters['option_suppression_dossier_instruction'] === 'true') {
1748 //
1749 return true;
1750 }
1751
1752 //
1753 return false;
1754 }
1755
1756
1757
1758 /**
1759 * Vérifie que l'option d'accès au portail citoyen est activée.
1760 *
1761 * @param integer $om_collectivite Identifiant de la collectivité.
1762 *
1763 * @return boolean
1764 */
1765 public function is_option_citizen_access_portal_enabled($om_collectivite=null) {
1766 //
1767 $parameters = $this->getCollectivite($om_collectivite);
1768 //
1769 if (isset($parameters['option_portail_acces_citoyen']) === true
1770 && $parameters['option_portail_acces_citoyen'] === 'true') {
1771 //
1772 return true;
1773 }
1774
1775 //
1776 return false;
1777 }
1778
1779
1780 /**
1781 * Vérifie que l'option du SIG est activée.
1782 *
1783 * @return boolean
1784 */
1785 public function is_option_sig_enabled($om_collectivite=null) {
1786 //
1787 $parameters = $this->getCollectivite($om_collectivite);
1788 //
1789 if (isset($parameters['option_sig']) === true
1790 && $parameters['option_sig'] === 'sig_externe') {
1791 //
1792 return true;
1793 }
1794 //
1795 return false;
1796 }
1797
1798 /**
1799 * Vérifie que l'option du SIG est activée.
1800 *
1801 * @return boolean
1802 */
1803 public function is_option_ws_synchro_contrainte_enabled($om_collectivite=null) {
1804 //
1805 $parameters = $this->getCollectivite($om_collectivite);
1806 //
1807 if (isset($parameters['option_ws_synchro_contrainte']) === true
1808 && $parameters['option_ws_synchro_contrainte'] === 'true') {
1809 //
1810 return true;
1811 }
1812 //
1813 return false;
1814 }
1815
1816
1817 /**
1818 * Vérifie que l'option de simulation des taxes est activée.
1819 *
1820 * @param integer $om_collectivite Identifiant de la collectivité.
1821 *
1822 * @return boolean
1823 */
1824 public function is_option_simulation_taxes_enabled($om_collectivite=null) {
1825 //
1826 $parameters = $this->getCollectivite($om_collectivite);
1827 //
1828 if (isset($parameters['option_simulation_taxes']) === true
1829 && $parameters['option_simulation_taxes'] === 'true') {
1830 //
1831 return true;
1832 }
1833
1834 //
1835 return false;
1836 }
1837
1838 /**
1839 * Vérifie que l'option de prévisualisation de l'édition est activée.
1840 *
1841 * @param integer $om_collectivite Identifiant de la collectivité.
1842 *
1843 * @return boolean
1844 */
1845 public function is_option_preview_pdf_enabled($om_collectivite=null) {
1846 //
1847 $parameters = $this->getCollectivite($om_collectivite);
1848 //
1849 if (isset($parameters['option_previsualisation_edition']) === true
1850 && $parameters['option_previsualisation_edition'] === 'true') {
1851 //
1852 return true;
1853 }
1854
1855 //
1856 return false;
1857 }
1858
1859 /**
1860 * Vérifie que l'option de rédaction libre de l'édition est activée.
1861 *
1862 * @param integer $om_collectivite Identifiant de la collectivité.
1863 *
1864 * @return boolean
1865 */
1866 public function is_option_redaction_libre_enabled($om_collectivite=null) {
1867 //
1868 $parameters = $this->getCollectivite($om_collectivite);
1869 //
1870 if (isset($parameters['option_redaction_libre']) === true
1871 && $parameters['option_redaction_libre'] === 'true') {
1872 //
1873 return true;
1874 }
1875
1876 //
1877 return false;
1878 }
1879
1880
1881 /**
1882 * Vérifie que l'option de finalisation automatique des instructions tacites
1883 * et retours est activée..
1884 *
1885 * @param integer $om_collectivite Identifiant de la collectivité.
1886 *
1887 * @return boolean
1888 */
1889 public function is_option_finalisation_auto_enabled($om_collectivite = null) {
1890 //
1891 $parameters = $this->getCollectivite($om_collectivite);
1892 //
1893 if (isset($parameters['option_final_auto_instr_tacite_retour']) === true
1894 && $parameters['option_final_auto_instr_tacite_retour'] === 'true') {
1895 //
1896 return true;
1897 }
1898
1899 //
1900 return false;
1901 }
1902
1903 /**
1904 * Vérifie que l'option de trouillotage numérique automatique des
1905 * pièces est activée.
1906 *
1907 * @param integer $om_collectivite Identifiant de la collectivité.
1908 *
1909 * @return boolean
1910 */
1911 public function is_option_trouillotage_numerique_enabled($om_collectivite = null) {
1912 //
1913 $parameters = $this->getCollectivite($om_collectivite);
1914 //
1915 if (isset($parameters['option_trouillotage_numerique']) === true
1916 && $parameters['option_trouillotage_numerique'] === 'true') {
1917 //
1918 return true;
1919 }
1920 //
1921 return false;
1922 }
1923
1924 /**
1925 * Vérifie que l'option de saisie du numéro de dossier est activée.
1926 *
1927 * @param integer $om_collectivite Identifiant de la collectivité.
1928 *
1929 * @return boolean
1930 */
1931 public function is_option_dossier_saisie_numero_enabled($om_collectivite=null) {
1932 //
1933 $parameters = $this->getCollectivite($om_collectivite);
1934 //
1935 if (isset($parameters['option_dossier_saisie_numero']) === true
1936 && $parameters['option_dossier_saisie_numero'] === 'true') {
1937 //
1938 return true;
1939 }
1940
1941 //
1942 return false;
1943 }
1944
1945 /**
1946 * Vérifie que l'option de saisie du numéro de dossier est activée.
1947 *
1948 * @param integer $om_collectivite Identifiant de la collectivité.
1949 *
1950 * @return boolean
1951 */
1952 public function is_option_dossier_saisie_numero_complet_enabled($om_collectivite=null) {
1953 //
1954 $parameters = $this->getCollectivite($om_collectivite);
1955 //
1956 if (isset($parameters['option_dossier_saisie_numero_complet']) === true
1957 && $parameters['option_dossier_saisie_numero_complet'] === 'true') {
1958 //
1959 return true;
1960 }
1961
1962 //
1963 return false;
1964 }
1965
1966 /**
1967 * Vérifie que l'option de la commune associée à un dossier est activée.
1968 *
1969 * @param integer $om_collectivite Identifiant de la collectivité.
1970 *
1971 * @return boolean
1972 */
1973 public function is_option_dossier_commune_enabled($om_collectivite=null) {
1974 $parameters = $this->getCollectivite($om_collectivite);
1975 return (
1976 isset($parameters['option_dossier_commune']) &&
1977 $parameters['option_dossier_commune'] === 'true');
1978 }
1979
1980 /**
1981 * Vérifie que l'option de récupération de la division de l'instructeur
1982 * affecté pour la numérotation des dossiers est activée.
1983 *
1984 * @param integer $om_collectivite Identifiant de la collectivité.
1985 *
1986 * @return boolean
1987 */
1988 public function is_option_instructeur_division_numero_dossier_enabled($om_collectivite=null) {
1989 //
1990 $parameters = $this->getCollectivite($om_collectivite);
1991 //
1992 if (isset($parameters['option_instructeur_division_numero_dossier']) === true
1993 && $parameters['option_instructeur_division_numero_dossier'] === 'true') {
1994 //
1995 return true;
1996 }
1997
1998 //
1999 return false;
2000 }
2001
2002 /**
2003 * Vérifie que l'option pour afficher les un surlignage en couleur des
2004 * numéros des dossiers dans les listings est activée.
2005 *
2006 * @param integer $om_collectivite Identifiant de la collectivité.
2007 *
2008 * @return boolean
2009 */
2010 public function is_option_afficher_couleur_dossier($om_collectivite=null) {
2011 //
2012 $parameters = $this->getCollectivite($om_collectivite);
2013 //
2014 if (isset($parameters['option_afficher_couleur_dossier']) === true
2015 && $parameters['option_afficher_couleur_dossier'] === 'true') {
2016 //
2017 return true;
2018 }
2019
2020 //
2021 return false;
2022 }
2023
2024 /**
2025 * Vérifie que l'option du suivi de numérisation est activée.
2026 * Les utilisateurs de la collectivité de niveau 2 peuvent accéder aux
2027 * fonctionnalités du suivi de numérisation même si l'option est activée seulement
2028 * sur une collectivité de niveau 1.
2029 *
2030 * @param integer $om_collectivite Identifiant de la collectivité.
2031 *
2032 * @return boolean
2033 */
2034 public function is_option_suivi_numerisation_enabled($om_collectivite=null) {
2035 //
2036 $parameters = $this->getCollectivite($om_collectivite);
2037 //
2038 if (isset($parameters['option_suivi_numerisation']) === true
2039 && $parameters['option_suivi_numerisation'] === 'true') {
2040 //
2041 return true;
2042 }
2043
2044 // Si l'utilisateur fait partie de la collectivité de niveau 2
2045 // et qu'au moins une des communes à l'option de numérisation activée
2046 if ($this->has_collectivite_multi() === true) {
2047 $query = sprintf('
2048 SELECT valeur
2049 FROM %1$som_parametre
2050 WHERE libelle = \'%2$s\'
2051 ',
2052 DB_PREFIXE,
2053 'option_suivi_numerisation'
2054 );
2055 $res = $this->get_one_result_from_db_query(
2056 $query,
2057 true
2058 );
2059 if ($res['code'] === 'OK'
2060 && $res['result'] === 'true') {
2061 //
2062 return true;
2063 }
2064 }
2065
2066 //
2067 return false;
2068 }
2069
2070 // Mode MC
2071 public function is_option_om_collectivite_entity_enabled($om_collectivite=null) {
2072 //
2073 $parameters = $this->getCollectivite($om_collectivite);
2074 //
2075 if (isset($parameters['option_om_collectivite_entity']) === true
2076 && $parameters['option_om_collectivite_entity'] === 'true') {
2077 //
2078 return true;
2079 }
2080
2081 //
2082 return false;
2083 }
2084
2085 public function is_option_date_depot_mairie_enabled($om_collectivite=null) {
2086 //
2087 $parameters = $this->getCollectivite($om_collectivite);
2088 //
2089 if (isset($parameters['option_date_depot_mairie']) === true
2090 && $parameters['option_date_depot_mairie'] === 'true') {
2091 //
2092 return true;
2093 }
2094
2095 //
2096 return false;
2097 }
2098
2099 /**
2100 * [is_option_date_depot_mairie_enabled description]
2101 * @param [type] $om_collectivite [description]
2102 * @return boolean [description]
2103 */
2104 public function is_option_renommer_collectivite_enabled($om_collectivite=null) {
2105 //
2106 $parameters = $this->getCollectivite($om_collectivite);
2107 //
2108 if (isset($parameters['option_renommer_collectivite']) === true
2109 && $parameters['option_renommer_collectivite'] === 'true') {
2110 //
2111 return true;
2112 }
2113
2114 //
2115 return false;
2116 }
2117
2118 /**
2119 * [is_option_mode_service_consulte_enabled description]
2120 * @param [type] $om_collectivite [description]
2121 * @return boolean [description]
2122 */
2123 public function is_option_mode_service_consulte_enabled($om_collectivite=null) {
2124 //
2125 $parameters = $this->getCollectivite($om_collectivite);
2126 //
2127 if (isset($parameters['option_mode_service_consulte']) === true
2128 && $parameters['option_mode_service_consulte'] === 'true') {
2129 //
2130 return true;
2131 }
2132
2133 //
2134 return false;
2135 }
2136
2137 /**
2138 * Vérifie si l'option de notification automatique de dépôt de dossier
2139 * par voie dématérialisée est active ou pas.
2140 *
2141 * @param integer $om_collectivite identifiant de la collectivité
2142 * @return boolean
2143 */
2144 public function is_option_notification_depot_demat_enabled($om_collectivite=null) {
2145 $parameters = $this->getCollectivite($om_collectivite);
2146
2147 if (isset($parameters['option_notification_depot_demat']) === true
2148 && $parameters['option_notification_depot_demat'] === 'true') {
2149 return true;
2150 }
2151 return false;
2152 }
2153
2154 /**
2155 * Méthode permettant de récupérer le paramètrage de l'option
2156 * option_notification
2157 *
2158 * @param integer identifiant de la collectivité dont on veux le paramétrage
2159 * @return string la valeur du paramètre ou null si il n'est pas défini
2160 */
2161 public function get_param_option_notification($om_collectivite=null) {
2162 //
2163 $parameters = $this->getCollectivite($om_collectivite);
2164 //
2165 if (isset($parameters['option_notification']) === true) {
2166 return $parameters['option_notification'];
2167 }
2168 //
2169 return null;
2170 }
2171
2172 /**
2173 * Méthode permettant de récupérer le paramètrage de l'option
2174 * param_operateur
2175 *
2176 * @param integer identifiant de la collectivité. Par défaut, il est null
2177 * @return array
2178 */
2179 public function get_option_param_operateur($om_collectivite=null) {
2180
2181 $parameters = $this->getCollectivite($om_collectivite);
2182
2183 if (isset($parameters['param_operateur']) === true) {
2184 $param_operateur = json_decode($parameters['param_operateur']);
2185 return $param_operateur;
2186 }
2187
2188 return null;
2189 }
2190
2191 /**
2192 * Méthode permettant de récupérer le paramètrage de l'option
2193 * option_notification
2194 *
2195 * @return boolean
2196 */
2197 public function get_parametre_notification_url_acces($om_collectivite=null) {
2198 //
2199 $parameters = $this->getCollectivite($om_collectivite);
2200 //
2201 if (isset($parameters['parametre_notification_url_acces']) === true) {
2202 return $parameters['parametre_notification_url_acces'];
2203 }
2204 //
2205 return null;
2206 }
2207
2208 /**
2209 * Permet de récupérer le paramètre 'param_base_path_metadata_url_di'
2210 *
2211 * @param integer $om_collectivite Identifiant de la collectivité.
2212 * @return mixed Chaine de caractères ou null
2213 */
2214 public function get_param_base_path_metadata_url_di($om_collectivite=null) {
2215 //
2216 $parameters = $this->getCollectivite($om_collectivite);
2217 //
2218 if (isset($parameters['param_base_path_metadata_url_di']) === true) {
2219 return $parameters['param_base_path_metadata_url_di'];
2220 }
2221 //
2222 return null;
2223 }
2224
2225 /**
2226 * Méthode permettant de récupérer le corps et le titre du mail de notification
2227 * selon le type de notification voulu.
2228 *
2229 * @return boolean
2230 */
2231 public function get_notification_parametre_courriel_type($om_collectivite=null, $typeNotification = 'notification_demandeur') {
2232 $paramDefaut = array(
2233 'parametre_courriel_type_titre' => __("[openADS] Notification concernant votre dossier [DOSSIER]"),
2234 'parametre_courriel_type_message' => __("Bonjour, veuillez prendre connaissance du(des) document(s) suivant(s) :<br>[LIEN_TELECHARGEMENT_DOCUMENT]<br>[LIEN_TELECHARGEMENT_ANNEXE]"),
2235 );
2236 // Il existe 3 type de notification des demandeurs. Si la notification voulu appartiens a un de ces 3 types
2237 // alors ce sont les paramétre de la notification des demandeurs qui doivent être récupéré
2238 if (in_array($typeNotification, array('notification_instruction', 'notification_recepisse', 'notification_decision'))) {
2239 $typeNotification = 'notification_demandeur';
2240 }
2241 // Construit le nom de la méthode selon le type de notification
2242 // si la méthode existe elle est appellé sinon on renvoie le message défini par défaut
2243 $method = sprintf('get_%1$s_parametre_courriel_type', $typeNotification);
2244 if (method_exists($this, $method)) {
2245 $param = $this->$method($om_collectivite);
2246 // Si le titre du message n'a pas été récupéré c'est le titre par défaut qui est utilisé
2247 $param['parametre_courriel_type_titre'] =
2248 ! array_key_exists('parametre_courriel_type_titre', $param) ?
2249 $paramDefaut['parametre_courriel_type_titre'] :
2250 $param['parametre_courriel_type_titre'];
2251 // Si le corps du message n'a pas été récupéré c'est le titre par défaut qui est utilisé
2252 $param['parametre_courriel_type_message'] =
2253 ! array_key_exists('parametre_courriel_type_message', $param) ?
2254 $paramDefaut['parametre_courriel_type_message'] :
2255 $param['parametre_courriel_type_message'];
2256 return $param;
2257 }
2258 return $paramDefaut;
2259 }
2260
2261 /**
2262 * Permet de récupérer les phrases types composant la notification aux pétitionnaires.
2263 *
2264 * @param integer $om_collectivite Identifiant de la collectivité.
2265 *
2266 * @return array Tableau contenant les phrases types.
2267 */
2268 private function get_notification_demandeur_parametre_courriel_type($om_collectivite = null) {
2269 // Phrases types par défaut
2270 $result = array();
2271 // Récupération des paramètres
2272 $parameters = $this->getCollectivite($om_collectivite);
2273 // Vérification de l'existance des paramètres titre et message
2274 if (isset($parameters['parametre_courriel_type_message']) === true
2275 && $parameters['parametre_courriel_type_message'] !== null
2276 && $parameters['parametre_courriel_type_message'] !== '') {
2277 //
2278 $result['parametre_courriel_type_message'] = $parameters['parametre_courriel_type_message'];
2279 }
2280 if (isset($parameters['parametre_courriel_type_titre']) === true
2281 && $parameters['parametre_courriel_type_titre'] !== null
2282 && $parameters['parametre_courriel_type_titre'] !== '') {
2283 //
2284 $result['parametre_courriel_type_titre'] = $parameters['parametre_courriel_type_titre'];
2285 }
2286 //
2287 return $result;
2288 }
2289
2290 /**
2291 * Permet de récupérer les phrases types composant la notification aux services
2292 * consultés.
2293 *
2294 * @param integer $om_collectivite Identifiant de la collectivité.
2295 *
2296 * @return array Tableau contenant les phrases types.
2297 */
2298 private function get_notification_service_consulte_parametre_courriel_type($om_collectivite = null) {
2299 // Phrases types par défaut
2300 $result = array();
2301 // Récupération des paramètres
2302 $parameters = $this->getCollectivite($om_collectivite);
2303 // Vérification de l'existance des paramètres titre et message
2304 if (isset($parameters['parametre_courriel_service_type_message']) === true
2305 && $parameters['parametre_courriel_service_type_message'] !== null
2306 && $parameters['parametre_courriel_service_type_message'] !== '') {
2307 //
2308 $result['parametre_courriel_type_message'] = $parameters['parametre_courriel_service_type_message'];
2309 }
2310 if (isset($parameters['parametre_courriel_service_type_titre']) === true
2311 && $parameters['parametre_courriel_service_type_titre'] !== null
2312 && $parameters['parametre_courriel_service_type_titre'] !== '') {
2313 //
2314 $result['parametre_courriel_type_titre'] = $parameters['parametre_courriel_service_type_titre'];
2315 }
2316 //
2317 return $result;
2318 }
2319
2320 /**
2321 * Permet de récupérer les phrases types composant la notification aux tiers consultés.
2322 *
2323 * @param integer $om_collectivite Identifiant de la collectivité.
2324 *
2325 * @return array Tableau contenant les phrases types.
2326 */
2327 private function get_notification_tiers_consulte_parametre_courriel_type($om_collectivite = null) {
2328 // Phrases types par défaut
2329 $result = array();
2330 // Récupération des paramètres
2331 $parameters = $this->getCollectivite($om_collectivite);
2332 // Vérification de l'existance des paramètres titre et message
2333 if (isset($parameters['parametre_courriel_tiers_type_message']) === true
2334 && $parameters['parametre_courriel_tiers_type_message'] !== null
2335 && $parameters['parametre_courriel_type_message'] !== '') {
2336 //
2337 $result['parametre_courriel_type_message'] = $parameters['parametre_courriel_tiers_type_message'];
2338 }
2339 if (isset($parameters['parametre_courriel_tiers_type_titre']) === true
2340 && $parameters['parametre_courriel_tiers_type_titre'] !== null
2341 && $parameters['parametre_courriel_tiers_type_titre'] !== '') {
2342 //
2343 $result['parametre_courriel_type_titre'] = $parameters['parametre_courriel_tiers_type_titre'];
2344 }
2345 //
2346 return $result;
2347 }
2348
2349 /**
2350 * Permet de récupérer les phrases types composant la notification automatique du
2351 * dépôt de dossiers dématérialisés.
2352 *
2353 * @param integer $om_collectivite Identifiant de la collectivité.
2354 *
2355 * @return array Tableau contenant les phrases types.
2356 */
2357 private function get_notification_depot_demat_parametre_courriel_type($om_collectivite = null) {
2358 // Phrases types par défaut
2359 $result = array();
2360 // Récupération des paramètres
2361 $parameters = $this->getCollectivite($om_collectivite);
2362 // Vérification de l'existance des paramètres titre et message
2363 if (isset($parameters['param_courriel_de_notification_depot_demat_message']) === true
2364 && $parameters['param_courriel_de_notification_depot_demat_message'] !== null
2365 && $parameters['param_courriel_de_notification_depot_demat_message'] !== '') {
2366
2367 $result['parametre_courriel_type_message'] =
2368 $parameters['param_courriel_de_notification_depot_demat_message'];
2369 }
2370 if (isset($parameters['param_courriel_de_notification_depot_demat_titre']) === true
2371 && $parameters['param_courriel_de_notification_depot_demat_titre'] !== null
2372 && $parameters['param_courriel_de_notification_depot_demat_titre'] !== '') {
2373
2374 $result['parametre_courriel_type_titre'] =
2375 $parameters['param_courriel_de_notification_depot_demat_titre'];
2376 }
2377 return $result;
2378 }
2379
2380 /**
2381 * Permet de récupérer les phrases types composant la notification aux services
2382 * consultés.
2383 *
2384 * @param integer $om_collectivite Identifiant de la collectivité.
2385 *
2386 * @return array Tableau contenant les phrases types.
2387 */
2388 public function get_notification_commune_parametre_courriel_type($om_collectivite = null) {
2389 // Phrases types par défaut
2390 $result = array();
2391 // Récupération des paramètres
2392 $parameters = $this->getCollectivite($om_collectivite);
2393 // Vérification de l'existance des paramètres titre et message
2394 if (isset($parameters['param_courriel_de_notification_commune_modele_depuis_instruction']) === true
2395 && $parameters['param_courriel_de_notification_commune_modele_depuis_instruction'] !== null
2396 && $parameters['param_courriel_de_notification_commune_modele_depuis_instruction'] !== '') {
2397 //
2398 $result['parametre_courriel_type_message'] = $parameters['param_courriel_de_notification_commune_modele_depuis_instruction'];
2399 }
2400 if (isset($parameters['param_courriel_de_notification_commune_objet_depuis_instruction']) === true
2401 && $parameters['param_courriel_de_notification_commune_objet_depuis_instruction'] !== null
2402 && $parameters['param_courriel_de_notification_commune_objet_depuis_instruction'] !== '') {
2403 //
2404 $result['parametre_courriel_type_titre'] = $parameters['param_courriel_de_notification_commune_objet_depuis_instruction'];
2405 }
2406 //
2407 return $result;
2408 }
2409
2410 /**
2411 * Récupère la liste des mails paramétrés pour l'envoi de notification email aux
2412 * communes
2413 *
2414 * @param integer $om_collectivite Identifiant de la collectivité.
2415 *
2416 * @return array Liste des adresses emails.
2417 */
2418 public function get_param_courriel_de_notification_commune($om_collectivite = null) {
2419 $listeEmail = array();
2420 // Récupération des paramètres
2421 $parameters = $this->getCollectivite($om_collectivite);
2422 // Récupération du contenu du paramèrtre
2423 if (! empty($parameters['param_courriel_de_notification_commune'])) {
2424 $listeEmail = explode("\n", $parameters['param_courriel_de_notification_commune']);
2425 }
2426 return $listeEmail;
2427 }
2428
2429 function is_type_dossier_platau($dossier_autorisation) {
2430 $inst_da = $this->get_inst__om_dbform(array(
2431 "obj" => "dossier_autorisation",
2432 "idx" => $dossier_autorisation,
2433 ));
2434
2435 $inst_datd = $inst_da->get_inst_dossier_autorisation_type_detaille();
2436
2437 if ($inst_datd->getVal('dossier_platau') === true || $inst_datd->getVal('dossier_platau') === 't'){
2438 return true;
2439 }
2440
2441 return false;
2442 }
2443
2444
2445
2446
2447 /**
2448 * Vérifie que l'option du lien Google Street View est activée.
2449 *
2450 * @param integer $om_collectivite Identifiant de la collectivité.
2451 *
2452 * @return boolean
2453 */
2454 public function is_option_streetview_enabled($om_collectivite=null) {
2455 //
2456 $parameters = $this->getCollectivite($om_collectivite);
2457 //
2458 if (isset($parameters['option_streetview']) === true
2459 && $parameters['option_streetview'] === 'true') {
2460 //
2461 return true;
2462 }
2463
2464 //
2465 return false;
2466 }
2467
2468 /**
2469 * Vérifie que l'option d'affichage en lecture seule de la date
2470 * de l'événement d'instruction est activée.
2471 *
2472 * @param integer $om_collectivite Identifiant de la collectivité.
2473 *
2474 * @return boolean
2475 */
2476 public function is_option_date_evenement_instruction_lecture_seule($om_collectivite=null) {
2477 //
2478 $parameters = $this->getCollectivite($om_collectivite);
2479 //
2480 if (isset($parameters['option_date_evenement_instruction_lecture_seule']) === true
2481 && $parameters['option_date_evenement_instruction_lecture_seule'] === 'true') {
2482 //
2483 return true;
2484 }
2485
2486 //
2487 return false;
2488 }
2489
2490 /**
2491 * Vérifie que l'option référentiel ERP est activée.
2492 *
2493 * @param integer $om_collectivite Identifiant de la collectivité.
2494 *
2495 * @return boolean
2496 */
2497 public function is_option_geolocalisation_auto_contrainte_enabled($om_collectivite=null) {
2498 //
2499 $parameters = $this->getCollectivite($om_collectivite);
2500 //
2501 if (isset($parameters['option_geolocalisation_auto_contrainte']) === true
2502 && $parameters['option_geolocalisation_auto_contrainte'] === 'true') {
2503 //
2504 return true;
2505 }
2506
2507 //
2508 return false;
2509 }
2510
2511 /**
2512 * Vérifie que l'option de renommage des documents numérisés ajoutés par
2513 * une tâches "add_piece" est activée.
2514 *
2515 * Cette option doit être globale, c'est-à-dire soit sur la collectivité de
2516 * niveau 2, soit désactivée.
2517 *
2518 * @param integer $om_collectivite Identifiant de la collectivité.
2519 *
2520 * @return boolean
2521 */
2522 public function is_option_renommage_document_numerise_tache_enabled($om_collectivite=null) {
2523 //
2524 $parameters = $this->getCollectivite($om_collectivite);
2525 //
2526 if (isset($parameters['option_renommage_document_numerise_tache']) === true
2527 && $parameters['option_renommage_document_numerise_tache'] === 'true') {
2528 //
2529 return true;
2530 }
2531
2532 //
2533 return false;
2534 }
2535
2536 /**
2537 * Vérifie le niveau de la collectivité de l'utilisateur connecté
2538 *
2539 * @return boolean
2540 */
2541 function has_collectivite_multi() {
2542 $idx_multi = $this->get_idx_collectivite_multi();
2543 if (intval($_SESSION['collectivite']) === intval($idx_multi)) {
2544 return true;
2545 }
2546 return false;
2547 }
2548
2549
2550 /**
2551 * Pour un path absolu donné, retourne le relatif à la racine de
2552 * l'application.
2553 *
2554 * @param string $absolute Chemin absolu.
2555 *
2556 * @return mixed Faux si échec sinon chemin relatif.
2557 */
2558 public function get_relative_path($absolute) {
2559 if ($this->get_path_app() === false) {
2560 return false;
2561 }
2562 $path_app = $this->get_path_app();
2563 return str_replace($path_app, '', $absolute);
2564 }
2565
2566
2567 /**
2568 * Retourne le path absolu de la racine de l'application
2569 *
2570 * @return mixed Faux si échec sinon chemin absolu
2571 */
2572 public function get_path_app() {
2573 $match = array();
2574 preg_match( '/(.*)\/[a-zA-Z0-9]+\/\.\.\/core\/$/', PATH_OPENMAIRIE, $match);
2575 // On vérifie qu'il n'y a pas d'erreur
2576 if (isset($match[1]) === false) {
2577 return false;
2578 }
2579 return $match[1];
2580 }
2581
2582 /**
2583 * Compose un tableau et retourne son code HTML
2584 *
2585 * @param string $id ID CSS du conteneur
2586 * @param array $headers entêtes de colonnes
2587 * @param array $rows lignes
2588 * @return string code HTML
2589 */
2590 public function compose_generate_table($id, $headers, $rows) {
2591 //
2592 $html = '';
2593 // Début conteneur
2594 $html .= '<div id="'.$id.'">';
2595 // Début tableau
2596 $html .= '<table class="tab-tab">';
2597 // Début entête
2598 $html .= '<thead>';
2599 $html .= '<tr class="ui-tabs-nav ui-accordion ui-state-default tab-title">';
2600 // Colonnes
2601 $nb_colonnes = count($headers);
2602 $index_last_col = $nb_colonnes - 1;
2603 foreach ($headers as $i => $header) {
2604 if ($i === 0) {
2605 $col = ' firstcol';
2606 }
2607 if ($i === $index_last_col) {
2608 $col = ' lastcol';
2609 }
2610 $html .= '<th class="title col-'.$i.$col.'">';
2611 $html .= '<span class="name">';
2612 $html .= $header;
2613 $html .= '</span>';
2614 $html .= '</th>';
2615 }
2616 // Fin entête
2617 $html .= '</tr>';
2618 $html .= '</thead>';
2619 // Début corps
2620 $html .= '<tbody>';
2621 // Lignes
2622 foreach ($rows as $cells) {
2623 // Début ligne
2624 $html .= '<tr class="tab-data">';
2625 // Cellules
2626 foreach ($cells as $j => $cell) {
2627 if ($j === 0) {
2628 $col = ' firstcol';
2629 }
2630 if ($j === $index_last_col) {
2631 $col = ' lastcol';
2632 }
2633 $html .= '<td class="title col-'.$j.$col.'">';
2634 $html .= '<span class="name">';
2635 $html .= $cell;
2636 $html .= '</span>';
2637 $html .= '</td>';
2638 }
2639 // Fin ligne
2640 $html .= "</tr>";
2641 }
2642 // Fin corps
2643 $html .= '</tbody>';
2644 // Fin tableau
2645 $html .= '</table>';
2646 // Fin conteneur
2647 $html .= '</div>';
2648 //
2649 return $html;
2650 }
2651
2652 /**
2653 * Retourne le login de l'utilisateur connecté + entre parenthèses son nom
2654 * s'il en a un.
2655 *
2656 * @return string myLogin OU myLogin (myName)
2657 */
2658 public function get_connected_user_login_name() {
2659 // Requête et stockage des informations de l'user connecté
2660 $this->getUserInfos();
2661 // Si le nom existe et est défini on le récupère
2662 $nom = "";
2663 if (isset($this->om_utilisateur["nom"])
2664 && !empty($this->om_utilisateur["nom"])) {
2665 $nom = trim($this->om_utilisateur["nom"]);
2666 }
2667 // Définition de l'émetteur : obligatoirement son login
2668 $emetteur = $_SESSION['login'];
2669 // Définition de l'émetteur : + éventuellement son nom
2670 if ($nom != "") {
2671 $emetteur .= " (".$nom.")";
2672 }
2673 // Retour
2674 return $emetteur;
2675 }
2676
2677 /**
2678 * Cette méthode permet d'interfacer le module 'Settings'.
2679 */
2680 function view_module_settings() {
2681 //
2682 require_once "../obj/settings.class.php";
2683 $settings = new settings();
2684 $settings->view_main();
2685 }
2686
2687
2688 /**
2689 * Vérifie que l'option référentiel ERP est activée.
2690 *
2691 * @param integer $om_collectivite Identifiant de la collectivité.
2692 *
2693 * @return boolean
2694 */
2695 public function is_option_referentiel_erp_enabled($om_collectivite=null) {
2696 //
2697 $parameters = $this->getCollectivite($om_collectivite);
2698 //
2699 if (isset($parameters['option_referentiel_erp']) === true
2700 && $parameters['option_referentiel_erp'] === 'true') {
2701 //
2702 return true;
2703 }
2704
2705 //
2706 return false;
2707 }
2708
2709 /**
2710 * Vérifie que l'option d'affichage de la miniature des fichiers est activée.
2711 *
2712 * @param integer $om_collectivite Identifiant de la collectivité.
2713 *
2714 * @return boolean
2715 */
2716 public function is_option_miniature_fichier_enabled($om_collectivite=null) {
2717 //
2718 $parameters = $this->getCollectivite($om_collectivite);
2719 //
2720 if (isset($parameters['option_miniature_fichier']) === true
2721 && $parameters['option_miniature_fichier'] === 'true') {
2722 //
2723 return true;
2724 }
2725
2726 //
2727 return false;
2728 }
2729
2730
2731 /**
2732 * Interface avec le référentiel ERP.
2733 */
2734 function send_message_to_referentiel_erp($code, $infos) {
2735 //
2736 require_once "../obj/interface_referentiel_erp.class.php";
2737 $interface_referentiel_erp = new interface_referentiel_erp();
2738 $ret = $interface_referentiel_erp->send_message_to_referentiel_erp($code, $infos);
2739 return $ret;
2740 }
2741
2742 /**
2743 * Récupère la liste des identifiants des collectivités
2744 *
2745 * @param string $return_type 'string' ou 'array' selon que l'on retourne
2746 * respectivement une chaîne ou un tableau
2747 * @param string $separator caractère(s) séparateur(s) employé(s) lorsque
2748 * l'on retourne une chaîne, inutilisé si tableau
2749 * @return mixed possibilité de boolean/string/array :
2750 * false si erreur BDD sinon résultat
2751 */
2752 public function get_list_id_collectivites($return_type = 'string', $separator = ',') {
2753 $sql = "
2754 SELECT
2755 array_to_string(
2756 array_agg(om_collectivite),
2757 '".$separator."'
2758 ) as list_id_collectivites
2759 FROM ".DB_PREFIXE."om_collectivite";
2760 $list = $this->db->getone($sql);
2761 $this->addTolog(
2762 __FILE__." - ".__METHOD__." : db->getone(\"".$sql."\");",
2763 VERBOSE_MODE
2764 );
2765 if ($this->isDatabaseError($list, true)) {
2766 return false;
2767 }
2768 if ($return_type === 'array') {
2769 return explode($separator, $list);
2770 }
2771 return $list;
2772 }
2773
2774 /**
2775 * Teste si l'utilisateur connecté appartient au groupe indiqué en paramètre
2776 * ou s'il a le goupe bypass.
2777 *
2778 * @param string $groupe Code du groupe : ADS / CTX / CU / RU / ERP.
2779 * @return boolean vrai si utilisateur appartient au groupe fourni
2780 */
2781 public function is_user_in_group($groupe) {
2782 if (isset($_SESSION['groupe']) === true
2783 && (array_key_exists($groupe, $_SESSION['groupe']) === true
2784 || array_key_exists("bypass", $_SESSION['groupe']) === true)) {
2785 return true;
2786 }
2787 return false;
2788 }
2789
2790 /**
2791 * CONDITION - can_user_access_dossiers_confidentiels_from_groupe
2792 *
2793 * Permet de savoir si le type de dossier d'autorisation du dossier courant est
2794 * considéré comme confidentiel ou si l'utilisateur a le groupe bypass.
2795 *
2796 * @param string $groupe Code du groupe : ADS / CTX / CU / RU / ERP.
2797 * @return boolean true si l'utilisateur à accès aux dossiers confidentiels du groupe
2798 * passé en paramètre, sinon false.
2799 *
2800 */
2801 public function can_user_access_dossiers_confidentiels_from_groupe($groupe) {
2802 if ((isset($_SESSION['groupe'][$groupe]['confidentiel']) === true
2803 AND $_SESSION['groupe'][$groupe]['confidentiel'] === true)
2804 || array_key_exists("bypass", $_SESSION['groupe']) === true) {
2805 return true;
2806 }
2807 return false;
2808 }
2809
2810 public function starts_with($haystack, $needle) {
2811 $length = strlen($needle);
2812 return (substr($haystack, 0, $length) === $needle);
2813 }
2814
2815 public function ends_with($haystack, $needle) {
2816 $length = strlen($needle);
2817 if ($length == 0) {
2818 return true;
2819 }
2820 return (substr($haystack, -$length) === $needle);
2821 }
2822
2823 /**
2824 * Récupère le type définit dans la base de données des champs d'une table
2825 * entière ou d'un champs si celui-ci est précisé.
2826 *
2827 * Liste des types BDD :
2828 * - int4
2829 * - varchar
2830 * - bool
2831 * - numeric
2832 * - text
2833 *
2834 * @param string $table Nom de la table.
2835 * @param string $column Nom de la colonne (facultatif).
2836 *
2837 * @return array
2838 */
2839 public function get_type_from_db($table, $column = null) {
2840 // Composition de la requête
2841 $sql_select = ' SELECT column_name, udt_name ';
2842 $sql_from = ' FROM information_schema.columns ';
2843 $sql_where = ' WHERE table_schema = \''.str_replace('.', '', DB_PREFIXE).'\' AND table_name = \''.$table.'\' ';
2844 $sql_order = ' ORDER BY ordinal_position ';
2845
2846 // Si une colonne est précisé
2847 if ($column !== null || $column !== '') {
2848 //
2849 $sql_where .= ' AND column_name = \''.$column.'\' ';
2850 }
2851
2852 // Requête SQL
2853 $sql = $sql_select.$sql_from.$sql_where.$sql_order;
2854 // Exécution de la requête
2855 $res = $this->db->query($sql);
2856 // Log
2857 $this->addToLog(__METHOD__."() : db->query(\"".$sql."\");", VERBOSE_MODE);
2858 // Erreur BDD
2859 $this->isDatabaseError($res);
2860 //
2861 $list_type = array();
2862 while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
2863 $list_type[$row['column_name']] = $row['udt_name'];
2864 }
2865
2866 // Retourne la liste des codes
2867 return $list_type;
2868 }
2869
2870
2871 /**
2872 * Cette méthode permet de récupérer le code de division correspondant
2873 * au dossier sur lequel on se trouve.
2874 *
2875 * Méthode identique à la méthode getDivisionFromDossier() de la classe
2876 * om_dbform à l'exception d'un cas de récupération du numéro de dossier par
2877 * la méthode getVal(). Cette exception permet d'utiliser cette méthode dans
2878 * les scripts instanciant seulement la classe utils tel que les *.inc.php.
2879 *
2880 * @param string $dossier Identifiant du dossier d'instruction.
2881 *
2882 * @return string Code de la division du dossier en cours
2883 */
2884 public function get_division_from_dossier_without_inst($dossier = null) {
2885
2886 // Cette méthode peut être appelée plusieurs fois lors d'une requête.
2887 // Pour éviter de refaire le traitement de recherche de la division
2888 // alors on vérifie si nous ne l'avons pas déjà calculé.
2889 if (isset($this->_division_from_dossier) === true
2890 && $this->_division_from_dossier !== null) {
2891 // Log
2892 $this->addToLog(__METHOD__."() : retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
2893 // On retourne la valeur déjà calculée
2894 return $this->_division_from_dossier;
2895 }
2896
2897 // Récupère le paramétre retourformulaire présent dans l'URL
2898 $retourformulaire = $this->getParameter("retourformulaire");
2899 // Récupère le paramétre idxformulaire présent dans l'URL
2900 $idxformulaire = $this->getParameter("idxformulaire");
2901
2902 // Si le dossier n'est pas passé en paramètre de la méthode
2903 if ($dossier === null) {
2904
2905 // La méthode de récupération du dossier diffère selon le contexte
2906 // du formulaire
2907 if ($retourformulaire === "dossier"
2908 || $retourformulaire === "dossier_instruction"
2909 || $retourformulaire === "dossier_instruction_mes_encours"
2910 || $retourformulaire === "dossier_instruction_tous_encours"
2911 || $retourformulaire === "dossier_instruction_mes_clotures"
2912 || $retourformulaire === "dossier_instruction_tous_clotures"
2913 || $retourformulaire === "dossier_contentieux_mes_infractions"
2914 || $retourformulaire === "dossier_contentieux_toutes_infractions"
2915 || $retourformulaire === "dossier_contentieux_mes_recours"
2916 || $retourformulaire === "dossier_contentieux_tous_recours") {
2917
2918 // Récupère le numéro du dossier depuis le paramètre
2919 // idxformulaire présent dans l'URL
2920 $dossier = $idxformulaire;
2921 }
2922 //
2923 if ($retourformulaire === "lot") {
2924
2925 // Requête SQL
2926 $sql = sprintf("SELECT dossier FROM ".DB_PREFIXE."lot WHERE lot = %s", $idxformulaire);
2927 // Récupère l'identifiant du dossier
2928 $dossier = $this->db->getone($sql);
2929 // Log
2930 $this->addToLog(__METHOD__."() : db->query(\"".$dossier."\");", VERBOSE_MODE);
2931 // Erreur BDD
2932 $this->isDatabaseError($dossier);
2933 }
2934 }
2935
2936 // À cette étape si le dossier n'est toujours pas récupéré alors la
2937 // division ne pourra pas être récupérée
2938 if ($dossier === null) {
2939 //
2940 return null;
2941 }
2942
2943 // Requête SQL
2944 $sql = sprintf("SELECT division FROM ".DB_PREFIXE."dossier WHERE dossier = '%s'", $dossier);
2945 // Récupère l'identifiant de la division du dossier
2946 $this->_division_from_dossier = $this->db->getOne($sql);
2947 // Log
2948 $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\")", VERBOSE_MODE);
2949 // Erreur BDD
2950 $this->isDatabaseError($this->_division_from_dossier);
2951
2952 //
2953 return $this->_division_from_dossier;
2954
2955 }
2956
2957 /**
2958 *
2959 */
2960 function setDefaultValues() {
2961 $this->addHTMLHeadCss(
2962 array(
2963 "../app/lib/chosen/chosen.min.css",
2964 ),
2965 21
2966 );
2967 $this->addHTMLHeadJs(
2968 array(
2969 "../app/lib/chosen/chosen.jquery.min.js",
2970 ),
2971 21
2972 );
2973
2974 $this->addHTMLHeadCss(
2975 array(
2976 "../app/lib/gridjs/mermaid.min.css",
2977 ),
2978 22
2979 );
2980 $this->addHTMLHeadJs(
2981 array(
2982 "../app/lib/gridjs/gridjs.min.js",
2983 ),
2984 22
2985 );
2986 }
2987
2988 /**
2989 * SURCHARGE
2990 *
2991 * Cette methode permet d'affecter des parametres dans un attribut de
2992 * l'objet.
2993 *
2994 * @return void
2995 */
2996 function setMoreParams() {
2997 // Ajoute une feuille de style CSS spécifique pour coloriser les dossiers
2998 // dans les listings
2999 $specific_css_datd_color = $this->specific_css_datd_color();
3000 if ($specific_css_datd_color !== false) {
3001 $this->setHTMLHeadExtras($specific_css_datd_color);
3002 }
3003 //
3004 parent::setMoreParams();
3005 }
3006
3007 /**
3008 * Génère une feuille de style CSS en fonction des couleurs récupérés depuis
3009 * les datd.
3010 *
3011 * @return mixed String or False
3012 */
3013 public function specific_css_datd_color() {
3014 if (isset($_SESSION['collectivite']) === false) {
3015 return false;
3016 }
3017 if ($this->is_option_afficher_couleur_dossier() === false) {
3018 return false;
3019 }
3020 $query = sprintf('
3021 SELECT code, couleur
3022 FROM %1$sdossier_autorisation_type_detaille
3023 ',
3024 DB_PREFIXE
3025 );
3026 $res = $this->get_all_results_from_db_query($query, true);
3027 $style = "<style>";
3028 foreach ($res['result'] as $key => $value) {
3029 if ($value['couleur'] !== ''
3030 && $value['couleur'] !== null) {
3031 //
3032 $style .= sprintf(
3033 ' .datd-%1$s {border-bottom: 2px solid; border-image: linear-gradient(to right, #%2$s, #%2$s 20%%, transparent 70%%) 1;} ',
3034 $value['code'],
3035 $value['couleur']
3036 );
3037 } else {
3038 $style .= sprintf(
3039 ' .datd-%1$s {border-bottom: 2px solid transprent;} ',
3040 $value['code']
3041 );
3042 }
3043 }
3044 $style .= "</style>";
3045 //
3046 return $style;
3047 }
3048
3049 /**
3050 * Permet de définir la configuration des liens du footer.
3051 *
3052 * @return void
3053 */
3054 protected function set_config__footer() {
3055 $footer = array();
3056 // Documentation du site
3057 $footer[] = array(
3058 "title" => __("Documentation"),
3059 "description" => __("Acceder a l'espace documentation de l'application"),
3060 "href" => "http://docs.openmairie.org/?project=openads&version=5.12&format=html&path=manuel_utilisateur",
3061 "target" => "_blank",
3062 "class" => "footer-documentation",
3063 );
3064
3065 // Portail openMairie
3066 $footer[] = array(
3067 "title" => __("openMairie.org"),
3068 "description" => __("Site officiel du projet openMairie"),
3069 "href" => "http://www.openmairie.org/catalogue/openads",
3070 "target" => "_blank",
3071 "class" => "footer-openmairie",
3072 );
3073 //
3074 $this->config__footer = $footer;
3075 }
3076
3077 /**
3078 * Surcharge - set_config__menu().
3079 *
3080 * @return void
3081 */
3082 protected function set_config__menu() {
3083 //
3084 $menu = array();
3085
3086 // {{{ Rubrique AUTORISATION
3087 //
3088 $rubrik = array(
3089 "title" => _("Autorisation"),
3090 "class" => "autorisation",
3091 "right" => "menu_autorisation",
3092 );
3093 //
3094 $links = array();
3095
3096 $links[] = array(
3097 "href" => "".OM_ROUTE_TAB."&obj=dossier_autorisation",
3098 "class" => "dossier_autorisation",
3099 "title" => _("Dossiers d'autorisation"),
3100 "right" => array("dossier_autorisation", "dossier_autorisation_tab", ),
3101 "open" => array("index.php|dossier_autorisation[module=tab]", "index.php|dossier_autorisation[module=form]", ),
3102 );
3103
3104 // Lien vers les dossiers d'autorisations qui ont une demande d'avis
3105 $links[] = array(
3106 "href" => "".OM_ROUTE_TAB."&obj=dossier_autorisation_avis",
3107 "class" => "dossier_autorisation",
3108 "title" => _("Dossiers d'autorisation"),
3109 "right" => array(
3110 "dossier_autorisation_avis",
3111 "dossier_autorisation_avis_tab",
3112 ),
3113 "open" => array("index.php|dossier_autorisation_avis[module=tab]", "index.php|dossier_autorisation[module=form]", ),
3114 );
3115
3116 //
3117 $rubrik['links'] = $links;
3118 //
3119 $menu[] = $rubrik;
3120 // }}}
3121
3122 // {{{ Rubrique GUICHET UNIQUE
3123 //
3124 $rubrik = array(
3125 "title" => _("Guichet Unique"),
3126 "class" => "guichet_unique",
3127 "right" => "menu_guichet_unique",
3128 );
3129 //
3130 $links = array();
3131 //
3132 $links[] = array(
3133 "href" => OM_ROUTE_DASHBOARD,
3134 "class" => "tableau-de-bord",
3135 "title" => _("tableau de bord"),
3136 "right" => "menu_guichet_unique_dashboard",
3137 "open" => array("index.php|[module=dashboard]",),
3138 );
3139 //
3140 $links[] = array(
3141 "class" => "category",
3142 "title" => _("nouvelle demande"),
3143 "right" => array(
3144 "demande",
3145 "demande_nouveau_dossier_ajouter",
3146 "demande_dossier_encours_ajouter", "demande_dossier_encours_tab",
3147 "demande_autre_dossier_ajouter", "demande_autre_dossier_tab",
3148 "demande_consulter","demande_tab",
3149 ),
3150 );
3151 $links[] = array(
3152 "title" => "<hr/>",
3153 "right" => array(
3154 "demande",
3155 "demande_dossier_encours_ajouter",
3156 "demande_dossier_encours_ajouter", "demande_dossier_encours_tab",
3157 ),
3158 );
3159 $links[] = array(
3160 "href" => "".OM_ROUTE_FORM."&obj=demande_nouveau_dossier&amp;action=0&amp;advs_id=&amp;tricol=&amp;valide=&amp;retour=tab&amp;new=",
3161 "class" => "nouveau-dossier",
3162 "title" => _("nouveau dossier"),
3163 "right" => array(
3164 "demande",
3165 "demande_nouveau_dossier_ajouter",
3166 ),
3167 "open" => array("index.php|demande_nouveau_dossier[module=form]",),
3168 );
3169 $links[] = array(
3170 "href" => "".OM_ROUTE_TAB."&obj=demande_dossier_encours",
3171 "class" => "dossier-existant",
3172 "title" => _("dossier en cours"),
3173 "right" => array(
3174 "demande",
3175 "demande_dossier_encours_ajouter",
3176 "demande_dossier_encours_tab",
3177 ),
3178 "open" => array("index.php|demande_dossier_encours[module=tab]", "index.php|demande_dossier_encours[module=form]"),
3179 );
3180 $links[] = array(
3181 "href" => "".OM_ROUTE_TAB."&obj=demande_autre_dossier",
3182 "class" => "autre-dossier",
3183 "title" => _("autre dossier"),
3184 "right" => array(
3185 "demande",
3186 "demande_autre_dossier_ajouter",
3187 "demande_autre_dossier_tab",
3188 ),
3189 "open" => array("index.php|demande_autre_dossier[module=tab]", "index.php|demande_autre_dossier[module=form]"),
3190 );
3191 $links[] = array(
3192 "title" => "<hr/>",
3193 "right" => array(
3194 "demande",
3195 "demande_consulter",
3196 "demande_tab"
3197 ),
3198 );
3199 $links[] = array(
3200 "href" => "".OM_ROUTE_TAB."&obj=demande",
3201 "class" => "pdf",
3202 "title" => _("recepisse"),
3203 "right" => array(
3204 "demande",
3205 "demande_consulter",
3206 "demande_tab"
3207 ),
3208 "open" => array("index.php|demande[module=tab]","index.php|demande[module=form]"),
3209 );
3210 $links[] = array(
3211 "title" => "<hr/>",
3212 "right" => array(
3213 "petitionnaire_frequent",
3214 "petitionnaire_frequent_consulter",
3215 "petitionnaire_frequent_tab"
3216 ),
3217 );
3218 $links[] = array(
3219 "href" => "".OM_ROUTE_TAB."&obj=petitionnaire_frequent",
3220 "class" => "petitionnaire_frequent",
3221 "title" => _("petitionnaire_frequent"),
3222 "right" => array(
3223 "petitionnaire_frequent",
3224 "petitionnaire_frequent_consulter",
3225 "petitionnaire_frequent_tab"
3226 ),
3227 "open" => array("index.php|petitionnaire_frequent[module=tab]","index.php|petitionnaire_frequent[module=form]"),
3228 );
3229 //
3230 $links[] = array(
3231 "class" => "category",
3232 "title" => _("affichage reglementaire"),
3233 "right" => array(
3234 "affichage_reglementaire_registre",
3235 "affichage_reglementaire_attestation",
3236 ),
3237 );
3238 $links[] = array(
3239 "title" => "<hr/>",
3240 "right" => array(
3241 "affichage_reglementaire_registre",
3242 "affichage_reglementaire_attestation",
3243 ),
3244 );
3245 $links[] = array(
3246 "href" => "".OM_ROUTE_FORM."&obj=demande_affichage_reglementaire_registre&action=110&idx=0",
3247 "class" => "affichage_reglementaire_registre",
3248 "title" => _("registre"),
3249 "right" => array(
3250 "affichage_reglementaire_registre",
3251 ),
3252 "open" => array("index.php|demande_affichage_reglementaire_registre[module=tab]", "index.php|demande_affichage_reglementaire_registre[module=form]"),
3253 );
3254 $links[] = array(
3255 "href" => "".OM_ROUTE_FORM."&obj=demande_affichage_reglementaire_attestation&action=120&idx=0",
3256 "class" => "affichage_reglementaire_attestation",
3257 "title" => _("attestation"),
3258 "right" => array(
3259 "affichage_reglementaire_attestation",
3260 ),
3261 "open" => array("index.php|demande_affichage_reglementaire_attestation[module=tab]", "index.php|demande_affichage_reglementaire_attestation[module=form]"),
3262 );
3263 //
3264 $rubrik['links'] = $links;
3265 //
3266 $menu[] = $rubrik;
3267 // }}}
3268
3269 // {{{ Rubrique QUALIFICATION
3270 //
3271 $rubrik = array(
3272 "title" => _("Qualification"),
3273 "class" => "qualification",
3274 "right" => "qualification_menu",
3275 );
3276 //
3277 $links = array();
3278 //
3279 $links[] = array(
3280 "href" => OM_ROUTE_DASHBOARD,
3281 "class" => "tableau-de-bord",
3282 "title" => _("tableau de bord"),
3283 "right" => "menu_qualification_dashboard",
3284 "open" => array("index.php|[module=dashboard]",),
3285 );
3286
3287 //
3288 $links[] = array(
3289 "href" => "".OM_ROUTE_TAB."&obj=dossier_qualifier_qualificateur",
3290 "class" => "dossier_qualifier_qualificateur",
3291 "title" => _("dossiers a qualifier"),
3292 "right" => array(
3293 "dossier_qualifier_qualificateur",
3294 "dossier_qualifier_qualificateur_tab",
3295 ),
3296 "open" => array("index.php|dossier_qualifier_qualificateur[module=tab]", "index.php|dossier_instruction[module=form]", ),
3297 );
3298
3299 //
3300 $rubrik['links'] = $links;
3301 //
3302 $menu[] = $rubrik;
3303 // }}}
3304
3305 // {{{ Rubrique INSTRUCTION
3306 //
3307 $rubrik = array(
3308 "title" => _("instruction"),
3309 "class" => "instruction",
3310 "right" => "menu_instruction",
3311 );
3312 //
3313 $links = array();
3314 //
3315 $links[] = array(
3316 "href" => OM_ROUTE_DASHBOARD,
3317 "class" => "tableau-de-bord",
3318 "title" => _("tableau de bord"),
3319 "right" => "menu_instruction_dashboard",
3320 "open" => array("index.php|[module=dashboard]",),
3321 );
3322 // Catégorie DOSSIERS D'INSTRUCTION
3323 $links[] = array(
3324 "class" => "category",
3325 "title" => _("dossiers d'instruction"),
3326 "right" => array(
3327 "dossier_instruction_mes_encours", "dossier_instruction_mes_encours_tab",
3328 "dossier_instruction_tous_encours", "dossier_instruction_tous_encours_tab",
3329 "dossier_instruction_mes_clotures", "dossier_instruction_mes_clotures_tab",
3330 "dossier_instruction_tous_clotures", "dossier_instruction_tous_clotures_tab",
3331 "dossier_instruction", "dossier_instruction_tab",
3332 "PC_modificatif", "PC_modificatif_tab",
3333 ),
3334 );
3335 $links[] = array(
3336 "title" => "<hr/>",
3337 "right" => array(
3338 "dossier_instruction_mes_encours", "dossier_instruction_mes_encours_tab",
3339 "dossier_instruction_tous_encours", "dossier_instruction_tous_encours_tab",
3340 ),
3341 );
3342 //
3343 $links[] = array(
3344 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_mes_encours",
3345 "class" => "dossier_instruction_mes_encours",
3346 "title" => _("mes encours"),
3347 "right" => array("dossier_instruction_mes_encours", "dossier_instruction_mes_encours_tab", ),
3348 "open" => array("index.php|dossier_instruction_mes_encours[module=tab]", "index.php|dossier_instruction_mes_encours[module=form]", ),
3349 );
3350 //
3351 $links[] = array(
3352 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_tous_encours",
3353 "class" => "dossier_instruction_tous_encours",
3354 "title" => _("tous les encours"),
3355 "right" => array("dossier_instruction_tous_encours", "dossier_instruction_tous_encours_tab", ),
3356 "open" => array("index.php|dossier_instruction_tous_encours[module=tab]", "index.php|dossier_instruction_tous_encours[module=form]", ),
3357 );
3358 //
3359 $links[] = array(
3360 "title" => "<hr/>",
3361 "right" => array(
3362 "dossier_instruction_mes_clotures", "dossier_instruction_mes_clotures_tab",
3363 "dossier_instruction_tous_clotures", "dossier_instruction_tous_clotures_tab",
3364 ),
3365 );
3366 //
3367 $links[] = array(
3368 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_mes_clotures",
3369 "class" => "dossier_instruction_mes_clotures",
3370 "title" => _("mes clotures"),
3371 "right" => array("dossier_instruction_mes_clotures", "dossier_instruction_mes_clotures_tab", ),
3372 "open" => array("index.php|dossier_instruction_mes_clotures[module=tab]", "index.php|dossier_instruction_mes_clotures[module=form]", ),
3373 );
3374 //
3375 $links[] = array(
3376 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_tous_clotures",
3377 "class" => "dossier_instruction_tous_clotures",
3378 "title" => _("tous les clotures"),
3379 "right" => array("dossier_instruction_tous_clotures", "dossier_instruction_tous_clotures_tab", ),
3380 "open" => array("index.php|dossier_instruction_tous_clotures[module=tab]", "index.php|dossier_instruction_tous_clotures[module=form]", ),
3381 );
3382 //
3383 $links[] = array(
3384 "title" => "<hr/>",
3385 "right" => array(
3386 "dossier_instruction", "dossier_instruction_tab",
3387 ),
3388 );
3389 //
3390 $links[] = array(
3391 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction",
3392 "class" => "dossier_instruction_recherche",
3393 "title" => _("recherche"),
3394 "right" => array("dossier_instruction", "dossier_instruction_tab", ),
3395 "open" => array("index.php|dossier_instruction[module=tab]", "index.php|dossier_instruction[module=form]", ),
3396 );
3397
3398 // Catégorier Qualification
3399 $links[] = array(
3400 "class" => "category",
3401 "title" => _("qualification"),
3402 "right" => array("dossier_qualifier", "architecte_frequent",),
3403 );
3404 //
3405 $links[] = array(
3406 "title" => "<hr/>",
3407 "right" => array("dossier_qualifier", "architecte_frequent", ),
3408 );
3409 //
3410 $links[] = array(
3411 "href" => "".OM_ROUTE_TAB."&obj=dossier_qualifier",
3412 "class" => "dossier_qualifier",
3413 "title" => _("dossiers a qualifier"),
3414 "right" => array("dossier_qualifier", "dossier_qualifier_tab", ),
3415 "open" => array("index.php|dossier_qualifier[module=tab]", "index.php|dossier_qualifier[module=form]", ),
3416 );
3417 //
3418 $links[] = array(
3419 "href" => "".OM_ROUTE_TAB."&obj=architecte_frequent",
3420 "class" => "architecte_frequent",
3421 "title" => _("architecte_frequent"),
3422 "right" => array("architecte_frequent", "architecte_frequent_tab", ),
3423 "open" => array("index.php|architecte_frequent[module=tab]", "index.php|architecte_frequent[module=form]", ),
3424 );
3425 // Catégorie CONSULTATIONS
3426 $links[] = array(
3427 "class" => "category",
3428 "title" => _("consultations"),
3429 "right" => array(
3430 "consultation",
3431 "consultation_mes_retours",
3432 "consultation_retours_ma_division",
3433 "consultation_tous_retours",
3434 ),
3435 );
3436 $links[] = array(
3437 "title" => "<hr/>",
3438 "right" => array(
3439 "consultation",
3440 "consultation_mes_retours",
3441 "consultation_retours_ma_division",
3442 "consultation_tous_retours",
3443 ),
3444 );
3445 $links[] = array(
3446 "href" => "".OM_ROUTE_TAB."&obj=consultation_mes_retours",
3447 "class" => "consultation_mes_retours",
3448 "title" => _("Mes retours"),
3449 "right" => array(
3450 "consultation",
3451 "consultation_mes_retours",
3452 "consultation_mes_retours_tab",
3453 ),
3454 "open" => array("index.php|consultation_mes_retours[module=tab]", "index.php|consultation_mes_retours[module=form]", ),
3455 );
3456 $links[] = array(
3457 "href" => "".OM_ROUTE_TAB."&obj=consultation_retours_ma_division",
3458 "class" => "consultation_retours_ma_division",
3459 "title" => _("Retours de ma division"),
3460 "right" => array(
3461 "consultation",
3462 "consultation_retours_ma_division",
3463 "consultation_retours_ma_division_tab",
3464 ),
3465 "open" => array("index.php|consultation_retours_ma_division[module=tab]", "index.php|consultation_retours_ma_division[module=form]", ),
3466 );
3467 $links[] = array(
3468 "href" => "".OM_ROUTE_TAB."&obj=consultation_tous_retours",
3469 "class" => "consultation_tous_retours",
3470 "title" => _("Tous les retours"),
3471 "right" => array(
3472 "consultation_tous_retours",
3473 "consultation_tous_retours_tab",
3474 ),
3475 "open" => array("index.php|consultation_tous_retours[module=tab]", "index.php|consultation_tous_retours[module=form]", ),
3476 );
3477 // Catégorie MESSAGES
3478 $links[] = array(
3479 "class" => "category",
3480 "title" => _("Messages"),
3481 "right" => array(
3482 "messages",
3483 "messages_mes_retours",
3484 "messages_retours_ma_division",
3485 "messages_tous_retours",
3486 ),
3487 );
3488 //
3489 $links[] = array(
3490 "title" => "<hr/>",
3491 "right" => array(
3492 "messages",
3493 "messages_mes_retours",
3494 "messages_retours_ma_division",
3495 "messages_tous_retours",
3496 ),
3497 );
3498 //
3499 $links[] = array(
3500 "href" => "".OM_ROUTE_TAB."&obj=messages_mes_retours",
3501 "class" => "messages_mes_retours",
3502 "title" => _("Mes messages"),
3503 "right" => array(
3504 "messages",
3505 "messages_mes_retours",
3506 "messages_mes_retours_tab",
3507 ),
3508 "open" => array("index.php|messages_mes_retours[module=tab]", "index.php|messages_mes_retours[module=form]", ),
3509 );
3510 //
3511 $links[] = array(
3512 "href" => "".OM_ROUTE_TAB."&obj=messages_retours_ma_division",
3513 "class" => "messages_retours_ma_division",
3514 "title" => _("Messages de ma division"),
3515 "right" => array(
3516 "messages",
3517 "messages_retours_ma_division",
3518 "messages_retours_ma_division_tab",
3519 ),
3520 "open" => array("index.php|messages_retours_ma_division[module=tab]", "index.php|messages_retours_ma_division[module=form]", ),
3521 );
3522 //
3523 $links[] = array(
3524 "href" => "".OM_ROUTE_TAB."&obj=messages_tous_retours",
3525 "class" => "messages_tous_retours",
3526 "title" => _("Tous les messages"),
3527 "right" => array(
3528 "messages",
3529 "messages_tous_retours",
3530 "messages_tous_retours_tab",
3531 ),
3532 "open" => array("index.php|messages_tous_retours[module=tab]", "index.php|messages_tous_retours[module=form]", ),
3533 );
3534 // Catégorie COMMISSIONS
3535 $links[] = array(
3536 "class" => "category",
3537 "title" => _("commissions"),
3538 "right" => array(
3539 "commission_mes_retours",
3540 "commission_mes_retours_tab",
3541 "commission_retours_ma_division",
3542 "commission_retours_ma_division_tab",
3543 "commission_tous_retours",
3544 "commission_tous_retours_tab",
3545 ),
3546 );
3547 $links[] = array(
3548 "title" => "<hr/>",
3549 "right" => array(
3550 "commission_mes_retours",
3551 "commission_mes_retours_tab",
3552 "commission_retours_ma_division",
3553 "commission_retours_ma_division_tab",
3554 "commission_tous_retours",
3555 "commission_tous_retours_tab",
3556 ),
3557 );
3558 $links[] = array(
3559 "href" => "".OM_ROUTE_TAB."&obj=commission_mes_retours",
3560 "class" => "commission_mes_retours",
3561 "title" => _("Mes retours"),
3562 "right" => array(
3563 "commission_mes_retours",
3564 "commission_mes_retours_tab",
3565 ),
3566 "open" => array("index.php|commission_mes_retours[module=tab]", "index.php|commission_mes_retours[module=form]", ),
3567 );
3568 $links[] = array(
3569 "href" => "".OM_ROUTE_TAB."&obj=commission_retours_ma_division",
3570 "class" => "commission_retours_ma_division",
3571 "title" => _("Retours de ma division"),
3572 "right" => array(
3573 "commission_retours_ma_division",
3574 "commission_retours_ma_division_tab",
3575 ),
3576 "open" => array("index.php|commission_retours_ma_division[module=tab]", "index.php|commission_retours_ma_division[module=form]", ),
3577 );
3578 $links[] = array(
3579 "href" => "".OM_ROUTE_TAB."&obj=commission_tous_retours",
3580 "class" => "commission_tous_retours",
3581 "title" => _("Tous les retours"),
3582 "right" => array(
3583 "commission_tous_retours",
3584 "commission_tous_retours_tab",
3585 ),
3586 "open" => array("index.php|commission_tous_retours[module=tab]", "index.php|commission_tous_retours[module=form]", ),
3587 );
3588
3589 //
3590 $rubrik['links'] = $links;
3591 //
3592 $menu[] = $rubrik;
3593 // }}}
3594
3595 // {{{ Rubrique Contentieux
3596 //
3597 $rubrik = array(
3598 "title" => _("Contentieux"),
3599 "class" => "contentieux",
3600 "right" => "menu_contentieux",
3601 );
3602 //
3603 $links = array();
3604 //
3605 $links[] = array(
3606 "href" => OM_ROUTE_DASHBOARD,
3607 "class" => "tableau-de-bord",
3608 "title" => _("tableau de bord"),
3609 "right" => "menu_contentieux_dashboard",
3610 "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]", ),
3611 );
3612 // Catégorie Nouvelle demande
3613 $links[] = array(
3614 "class" => "category",
3615 "title" => _("Nouvelle demande"),
3616 "right" => array(
3617 "demande_nouveau_dossier_contentieux_ajouter",
3618 ),
3619 );
3620 $links[] = array(
3621 "href" => "".OM_ROUTE_FORM."&obj=demande_nouveau_dossier_contentieux&amp;action=0&amp;advs_id=&amp;tricol=&amp;valide=&amp;retour=tab&amp;new=",
3622 "class" => "nouveau-dossier",
3623 "title" => _("nouveau dossier"),
3624 "right" => array(
3625 "demande_nouveau_dossier_contentieux_ajouter",
3626 ),
3627 "open" => array("index.php|demande_nouveau_dossier_contentieux[module=form]",),
3628 );
3629 // Catégorie Recours
3630 $links[] = array(
3631 "class" => "category",
3632 "title" => _("Recours"),
3633 "right" => array(
3634 "dossier_contentieux_mes_recours", "dossier_contentieux_mes_recours_tab",
3635 "dossier_contentieux_tous_recours", "dossier_contentieux_tous_recours_tab",
3636 ),
3637 );
3638 //
3639 $links[] = array(
3640 "href" => "".OM_ROUTE_TAB."&obj=dossier_contentieux_mes_recours",
3641 "class" => "dossier_contentieux_mes_recours",
3642 "title" => _("Mes recours"),
3643 "right" => array("dossier_contentieux_mes_recours", "dossier_contentieux_mes_recours_tab", ),
3644 "open" => array("index.php|dossier_contentieux_mes_recours[module=tab]", "index.php|dossier_contentieux_mes_recours[module=form]", ),
3645 );
3646 $links[] = array(
3647 "href" => "".OM_ROUTE_TAB."&obj=dossier_contentieux_tous_recours",
3648 "class" => "dossier_contentieux_tous_recours",
3649 "title" => _("Tous les recours"),
3650 "right" => array("dossier_contentieux_tous_recours", "dossier_contentieux_tous_recours_tab", ),
3651 "open" => array("index.php|dossier_contentieux_tous_recours[module=tab]", "index.php|dossier_contentieux_tous_recours[module=form]", ),
3652 );
3653 // Catégorie Infractions
3654 $links[] = array(
3655 "class" => "category",
3656 "title" => _("Infractions"),
3657 "right" => array(
3658 "dossier_contentieux_mes_infractions", "dossier_contentieux_mes_infractions_tab",
3659 "dossier_contentieux_toutes_infractions", "dossier_contentieux_toutes_infractions_tab",
3660 ),
3661 );
3662 //
3663 $links[] = array(
3664 "href" => "".OM_ROUTE_TAB."&obj=dossier_contentieux_mes_infractions",
3665 "class" => "dossier_contentieux_mes_infractions",
3666 "title" => _("Mes infractions"),
3667 "right" => array("dossier_contentieux_mes_infractions", "dossier_contentieux_mes_infractions_tab", ),
3668 "open" => array("index.php|dossier_contentieux_mes_infractions[module=tab]", "index.php|dossier_contentieux_mes_infractions[module=form]", ),
3669 );
3670 //
3671 $links[] = array(
3672 "href" => "".OM_ROUTE_TAB."&obj=dossier_contentieux_toutes_infractions",
3673 "class" => "dossier_contentieux_toutes_infractions",
3674 "title" => _("Toutes les infractions"),
3675 "right" => array("dossier_contentieux_toutes_infractions", "dossier_contentieux_toutes_infractions_tab", ),
3676 "open" => array("index.php|dossier_contentieux_toutes_infractions[module=tab]", "index.php|dossier_contentieux_toutes_infractions[module=form]", ),
3677 );
3678 // Catégorie MESSAGES
3679 $links[] = array(
3680 "class" => "category",
3681 "title" => _("Messages"),
3682 "right" => array(
3683 "messages_contentieux",
3684 "messages_contentieux_mes_retours",
3685 "messages_contentieux_retours_ma_division",
3686 "messages_contentieux_tous_retours",
3687 ),
3688 );
3689 //
3690 $links[] = array(
3691 "title" => "<hr/>",
3692 "right" => array(
3693 "messages_contentieux",
3694 "messages_contentieux_mes_retours",
3695 "messages_contentieux_retours_ma_division",
3696 "messages_contentieux_tous_retours",
3697 ),
3698 );
3699 //
3700 $links[] = array(
3701 "href" => "".OM_ROUTE_TAB."&obj=messages_contentieux_mes_retours",
3702 "class" => "messages_contentieux_mes_retours",
3703 "title" => _("Mes messages"),
3704 "right" => array(
3705 "messages_contentieux",
3706 "messages_contentieux_mes_retours",
3707 "messages_contentieux_mes_retours_tab",
3708 ),
3709 "open" => array("index.php|messages_contentieux_mes_retours[module=tab]", "index.php|messages_contentieux_mes_retours[module=form]", ),
3710 );
3711 //
3712 $links[] = array(
3713 "href" => "".OM_ROUTE_TAB."&obj=messages_contentieux_retours_ma_division",
3714 "class" => "messages_contentieux_retours_ma_division",
3715 "title" => _("Messages de ma division"),
3716 "right" => array(
3717 "messages_contentieux",
3718 "messages_contentieux_retours_ma_division",
3719 "messages_contentieux_retours_ma_division_tab",
3720 ),
3721 "open" => array("index.php|messages_contentieux_retours_ma_division[module=tab]", "index.php|messages_contentieux_retours_ma_division[module=form]", ),
3722 );
3723 //
3724 $links[] = array(
3725 "href" => "".OM_ROUTE_TAB."&obj=messages_contentieux_tous_retours",
3726 "class" => "messages_contentieux_tous_retours",
3727 "title" => _("Tous les messages"),
3728 "right" => array(
3729 "messages_contentieux",
3730 "messages_contentieux_tous_retours",
3731 "messages_contentieux_tous_retours_tab",
3732 ),
3733 "open" => array("index.php|messages_contentieux_tous_retours[module=tab]", "index.php|messages_contentieux_tous_retours[module=form]", ),
3734 );
3735
3736
3737 //
3738 $rubrik['links'] = $links;
3739 //
3740 $menu[] = $rubrik;
3741 // }}}
3742
3743 // {{{ Rubrique SUIVI
3744 //
3745 $rubrik = array(
3746 "title" => _("Suivi"),
3747 "class" => "suivi",
3748 "right" => "menu_suivi",
3749 );
3750 //
3751 $links = array();
3752 //
3753 $links[] = array(
3754 "href" => OM_ROUTE_DASHBOARD,
3755 "class" => "tableau-de-bord",
3756 "title" => _("tableau de bord"),
3757 "right" => "menu_suivi_dashboard",
3758 "open" => array("index.php|[module=dashboard]",),
3759 );
3760 $links[] = array(
3761 "class" => "category",
3762 "title" => _("suivi des pieces"),
3763 "right" => array(
3764 "instruction_suivi_retours_de_consultation", "instruction_suivi_mise_a_jour_des_dates",
3765 "instruction_suivi_envoi_lettre_rar", "instruction_suivi_bordereaux",
3766 "instruction_suivi_retours_de_consultation_consulter", "instruction_suivi_mise_a_jour_des_dates_consulter",
3767 "instruction_suivi_envoi_lettre_rar_consulter", "instruction_suivi_bordereaux_consulter",
3768 ),
3769 );
3770 //
3771 $links[] = array(
3772 "title" => "<hr/>",
3773 "right" => array(
3774 "instruction_suivi_retours_de_consultation", "instruction_suivi_mise_a_jour_des_dates",
3775 "instruction_suivi_envoi_lettre_rar", "instruction_suivi_bordereaux",
3776 "instruction_suivi_retours_de_consultation_consulter", "instruction_suivi_mise_a_jour_des_dates_consulter",
3777 "instruction_suivi_envoi_lettre_rar_consulter", "instruction_suivi_bordereaux_consulter",
3778 ),
3779 );
3780 //
3781 $links[] = array(
3782 "title" => "<hr/>",
3783 "right" => array(
3784 "instruction_suivi_mise_a_jour_des_dates", "instruction_suivi_mise_a_jour_des_dates_consulter",
3785 ),
3786 );
3787 //
3788 $links[] = array(
3789 "href" => "".OM_ROUTE_FORM."&obj=instruction_suivi_mise_a_jour_des_dates&action=170&idx=0",
3790 "class" => "suivi_mise_a_jour_des_dates",
3791 "title" => _("Mise a jour des dates"),
3792 "right" => array("instruction_suivi_mise_a_jour_des_dates", "instruction_suivi_mise_a_jour_des_dates_consulter", ),
3793 "open" => array("index.php|instruction_suivi_mise_a_jour_des_dates[module=tab]", "index.php|instruction_suivi_mise_a_jour_des_dates[module=form]"),
3794 );
3795 //
3796 $links[] = array(
3797 "title" => "<hr/>",
3798 "right" => array(
3799 "instruction_suivi_envoi_lettre_rar", "instruction_suivi_envoi_lettre_rar_consulter",
3800 ),
3801 );
3802 //
3803 $links[] = array(
3804 "href" => "".OM_ROUTE_FORM."&obj=instruction_suivi_envoi_lettre_rar&action=160&idx=0",
3805 "class" => "envoi_lettre_rar",
3806 "title" => _("envoi lettre AR"),
3807 "right" => array("instruction_suivi_envoi_lettre_rar", "instruction_suivi_envoi_lettre_rar_consulter", ),
3808 "open" => array("index.php|instruction_suivi_envoi_lettre_rar[module=tab]", "index.php|instruction_suivi_envoi_lettre_rar[module=form]"),
3809 );
3810 //
3811 $links[] = array(
3812 "title" => "<hr/>",
3813 "right" => array(
3814 "instruction_suivi_bordereaux", "instruction_suivi_bordereaux_consulter",
3815 ),
3816 );
3817 //
3818 $links[] = array(
3819 "href" => "".OM_ROUTE_FORM."&obj=instruction_suivi_bordereaux&action=150&idx=0",
3820 "class" => "bordereaux",
3821 "title" => _("Bordereaux"),
3822 "right" => array("instruction_suivi_bordereaux", "instruction_suivi_bordereaux_consulter", ),
3823 "open" => array("index.php|instruction_suivi_bordereaux[module=tab]", "index.php|instruction_suivi_bordereaux[module=form]"),
3824 );
3825 //
3826 $links[] = array(
3827 "href" => "".OM_ROUTE_FORM."&obj=bordereau_envoi_maire&action=190&idx=0",
3828 "class" => "bordereau_envoi_maire",
3829 "title" => _("Bordereau d'envoi au maire"),
3830 "right" => array("instruction_bordereau_envoi_maire","bordereau_envoi_maire"),
3831 "open" => array("index.php|bordereau_envoi_maire[module=form]",),
3832 );
3833 //
3834 $links[] = array(
3835 "class" => "category",
3836 "title" => _("Demandes d'avis"),
3837 "right" => array(
3838 "consultation_suivi_mise_a_jour_des_dates",
3839 "consultation_suivi_retours_de_consultation",
3840 ),
3841 );
3842 //
3843 $links[] = array(
3844 "href" => "".OM_ROUTE_FORM."&obj=consultation&idx=0&action=110",
3845 "class" => "demandes_avis_mise_a_jour_des_dates",
3846 "title" => _("Mise a jour des dates"),
3847 "right" => array("consultation_suivi_mise_a_jour_des_dates", ),
3848 "open" => array("index.php|consultation[module=form][action=110]"),
3849 );
3850 //
3851 $links[] = array(
3852 "href" => "".OM_ROUTE_FORM."&obj=consultation&idx=0&action=120",
3853 "class" => "consultation-retour",
3854 "title" => _("retours de consultation"),
3855 "right" => array("consultation_suivi_retours_de_consultation", ),
3856 "open" => array("index.php|consultation[module=form][action=120]", "index.php|consultation[module=form][action=100]", ),
3857 );
3858 // Catégorie COMMISSIONS
3859 $links[] = array(
3860 "class" => "category",
3861 "title" => _("commissions"),
3862 "right" => array(
3863 "commission",
3864 "commission_tab",
3865 "commission_demandes_passage",
3866 "commission_demandes_passage_tab",
3867 ),
3868 );
3869 //
3870 $links[] = array(
3871 "title" => "<hr/>",
3872 "right" => array(
3873 "commission",
3874 "commission_tab",
3875 "commission_demandes_passage",
3876 "commission_demandes_passage_tab",
3877 ),
3878 );
3879 //
3880 $links[] = array(
3881 "href" => "".OM_ROUTE_TAB."&obj=commission",
3882 "class" => "commissions",
3883 "title" => _("gestion"),
3884 "right" => array(
3885 "commission",
3886 ),
3887 "open" => array("index.php|commission[module=tab]", "index.php|commission[module=form]", ),
3888 );
3889 //
3890 $links[] = array(
3891 "href" => "".OM_ROUTE_TAB."&obj=commission_demandes_passage",
3892 "class" => "commissions-demande-passage",
3893 "title" => _("demandes"),
3894 "right" => array(
3895 "commission",
3896 "commission_demandes_passage",
3897 ),
3898 "open" => array("index.php|commission_demandes_passage[module=tab]", "index.php|commission_demandes_passage[module=form]", ),
3899 );
3900 //
3901 $rubrik['links'] = $links;
3902 //
3903 $menu[] = $rubrik;
3904 // }}}
3905
3906 // {{{ Rubrique DEMANDES D'AVIS
3907 //
3908 $rubrik = array(
3909 "title" => _("Demandes d'avis"),
3910 "class" => "demande_avis",
3911 "right" => "menu_demande_avis",
3912 );
3913 //
3914 $links = array();
3915 //
3916 $links[] = array(
3917 "href" => OM_ROUTE_DASHBOARD,
3918 "class" => "tableau-de-bord",
3919 "title" => _("tableau de bord"),
3920 "right" => "menu_demande_avis_dashboard",
3921 "open" => array("index.php|[module=dashboard]",),
3922 );
3923 //
3924 $links[] = array(
3925 "title" => "<hr/>",
3926 "right" => array(
3927 "demande_avis_encours", "demande_avis_encours_tab",
3928 "demande_avis_passee", "demande_avis_passee_tab",
3929 "demande_avis", "demande_avis_tab",
3930 ),
3931 );
3932 //
3933 $links[] = array(
3934 "href" => "".OM_ROUTE_TAB."&obj=demande_avis_encours",
3935 "class" => "demande_avis_encours",
3936 "title" => _("Demandes en cours"),
3937 "right" => array("demande_avis_encours", "demande_avis_encours_tab", ),
3938 "open" => array("index.php|demande_avis_encours[module=tab]", "index.php|demande_avis_encours[module=form]", ),
3939 );
3940
3941 $links[] = array(
3942 "href" => "".OM_ROUTE_TAB."&obj=demande_avis_passee",
3943 "class" => "demande_avis_passee",
3944 "title" => _("Demandes passees"),
3945 "right" => array("demande_avis_passee", "demande_avis_passee_tab", ),
3946 "open" => array("index.php|demande_avis_passee[module=tab]", "index.php|demande_avis_passee[module=form]", ),
3947 );
3948
3949 $links[] = array(
3950 "href" => "".OM_ROUTE_TAB."&obj=demande_avis",
3951 "class" => "demande_avis",
3952 "title" => _("Exports"),
3953 "right" => array("demande_avis", "demande_avis_tab", ),
3954 "open" => array("index.php|demande_avis[module=tab]", "index.php|demande_avis[module=form]", ),
3955 );
3956
3957 //
3958 $rubrik['links'] = $links;
3959 //
3960 $menu[] = $rubrik;
3961 // }}}
3962
3963
3964 // {{{ Rubrique NUMERISATION
3965 // Condition d'affichage de la rubrique
3966 if (isset($_SESSION['collectivite']) === true
3967 && $this->is_option_suivi_numerisation_enabled() === true) {
3968 //
3969 $rubrik = array(
3970 "title" => __("numerisation"),
3971 "class" => "numerisation",
3972 );
3973 //
3974 $links = array();
3975 //
3976 // --->
3977 $links[] = array(
3978 "class" => "category",
3979 "title" => __("traitement d'un lot"),
3980 "right" => array("num_dossier", "num_dossier_recuperation",
3981 "num_bordereau", "num_bordereau_tab", ) ,
3982 );
3983 //
3984 $links[] = array(
3985 "title" => "<hr/>",
3986 "right" => array("num_dossier_recuperation",
3987 "num_bordereau", "num_bordereau_tab", ) ,
3988 );
3989 //
3990 $links[] = array(
3991 "href" => OM_ROUTE_FORM."&obj=num_dossier_recuperation&idx=0&action=4",
3992 "class" => "num_dossier_recuperation",
3993 "title" => __("récupération du suivi des dossiers"),
3994 "right" => array( "num_dossier_recuperation", ) ,
3995 "open" => array( "index.php|num_dossier_recuperation[module=form]", ),
3996 );
3997 //
3998 $links[] = array(
3999 "title" => "<hr/>",
4000 "right" => array( "num_bordereau", "num_bordereau_tab", ) ,
4001 );
4002 //
4003 $links[] = array(
4004 "href" => OM_ROUTE_TAB."&obj=num_bordereau",
4005 "class" => "num_bordereau",
4006 "title" => __("tous les bordereaux"),
4007 "right" => array( "num_bordereau", "num_bordereau_tab", ),
4008 "open" => array("index.php|num_bordereau[module=tab]", "index.php|num_bordereau[module=form]", ),
4009 );
4010
4011 //
4012 // --->
4013 $links[] = array(
4014 "class" => "category",
4015 "title" => __("suivi dossier"),
4016 "right" => array("num_dossier_recuperation",
4017 "num_dossier", "num_dossier_tab",
4018 "num_dossier_a_attribuer", "num_dossier_a_attribuer_tab",
4019 "num_dossier_a_numeriser", "num_dossier_a_numeriser_tab",
4020 "num_dossier_traite", "num_dossier_traite_tab",
4021 ) ,
4022 );
4023 //
4024 $links[] = array(
4025 "title" => "<hr/>",
4026 "right" => array("num_dossier_recuperation",
4027 "num_dossier", "num_dossier_tab",
4028 "num_dossier_a_attribuer", "num_dossier_a_attribuer_tab",
4029 "num_dossier_a_numeriser", "num_dossier_a_numeriser_tab",
4030 "num_dossier_traite", "num_dossier_traite_tab",
4031 ) ,
4032 );
4033 //
4034 $links[] = array(
4035 "href" => OM_ROUTE_TAB."&obj=num_dossier_a_attribuer",
4036 "class" => "num_dossier_a_attribuer",
4037 "title" => __("num_dossier_a_attribuer"),
4038 "right" => array("num_dossier", "num_dossier_a_attribuer", "num_dossier_a_attribuer_tab",),
4039 "open" => array("index.php|num_dossier_a_attribuer[module=tab]","index.php|num_dossier_a_attribuer[module=form]", ),
4040 );
4041 //
4042 $links[] = array(
4043 "href" => OM_ROUTE_TAB."&obj=num_dossier_a_numeriser",
4044 "class" => "num_dossier_a_numeriser",
4045 "title" => __("num_dossier_a_numeriser"),
4046 "right" => array("num_dossier", "num_dossier_a_numeriser", "num_dossier_a_numeriser_tab",),
4047 "open" => array("index.php|num_dossier_a_numeriser[module=tab]","index.php|num_dossier_a_numeriser[module=form]", ),
4048 );
4049 //
4050 $links[] = array(
4051 "href" => OM_ROUTE_TAB."&obj=num_dossier_traite",
4052 "class" => "num_dossier_traite",
4053 "title" => __("num_dossier_traite"),
4054 "right" => array("num_dossier", "num_dossier_traite", "num_dossier_traite_tab",),
4055 "open" => array("index.php|num_dossier_traite[module=tab]","index.php|num_dossier_traite[module=form]", ),
4056 );
4057 //
4058 $links[] = array(
4059 "title" => "<hr/>",
4060 "right" => array( "num_dossier", "num_dossier_tab",) ,
4061 );
4062 //
4063 $links[] = array(
4064 "href" => OM_ROUTE_TAB."&obj=num_dossier",
4065 "class" => "num_dossier",
4066 "title" => __("tous les dossiers"),
4067 "right" => array("num_dossier", "num_dossier_tab",),
4068 "open" => array("index.php|num_dossier[module=tab]", "index.php|num_dossier[module=form]", ),
4069 );
4070
4071 //
4072 $rubrik['links'] = $links;
4073 //
4074 $menu["menu-rubrik-numerisation"] = $rubrik;
4075 // }}}
4076 }
4077
4078
4079 // Commentaire de la rubrique EXPORT qui n'est pas prévue d'être opérationnelle
4080 // dans cette version
4081 // {{{ Rubrique EXPORT
4082 //
4083 $rubrik = array(
4084 "title" => _("export / import"),
4085 "class" => "edition",
4086 "right" => "menu_export",
4087 );
4088 //
4089 $links = array();
4090
4091 //
4092 $links[] = array(
4093 "href" => "".OM_ROUTE_FORM."&obj=sitadel&action=6&idx=0",
4094 "class" => "sitadel",
4095 "title" => _("export sitadel"),
4096 "right" => "export_sitadel",
4097 "open" => "index.php|sitadel[module=form]",
4098 );
4099 //
4100 $links[] = array(
4101 "href" => "../app/versement_archives.php",
4102 "class" => "versement_archives",
4103 "title" => _("versement aux archives"),
4104 "right" => "versement_archives",
4105 "open" => "versement_archives.php|",
4106 );
4107 //
4108 $links[] = array(
4109 "href" => "../app/reqmo_pilot.php",
4110 "class" => "reqmo",
4111 "title" => _("statistiques a la demande"),
4112 "right" => "reqmo_pilot",
4113 "open" => "reqmo_pilot.php|",
4114 );
4115 //
4116 $links[] = array(
4117 "href" => OM_ROUTE_MODULE_REQMO,
4118 "class" => "reqmo",
4119 "title" => __("requetes memorisees"),
4120 "right" => "reqmo",
4121 "open" => array(
4122 "reqmo.php|",
4123 "index.php|[module=reqmo]",
4124 ),
4125 );
4126 //
4127 $rubrik['links'] = $links;
4128 //
4129 $menu[] = $rubrik;
4130 // }}}
4131
4132
4133 // {{{ Rubrique PARAMETRAGE
4134 //
4135 $rubrik = array(
4136 "title" => _("parametrage dossiers"),
4137 "class" => "parametrage-dossier",
4138 "right" => "menu_parametrage",
4139 );
4140 //
4141 $links = array();
4142 //
4143 $links[] = array(
4144 "class" => "category",
4145 "title" => _("dossiers"),
4146 "right" => array(
4147 "dossier_autorisation_type", "dossier_autorisation_type_tab",
4148 "dossier_autorisation_type_detaille",
4149 "dossier_autorisation_type_detaille_tab", "dossier_instruction_type",
4150 "dossier_instruction_type_tab", "cerfa", "cerfa_tab",
4151 ),
4152 );
4153 //
4154 $links[] = array(
4155 "title" => "<hr/>",
4156 "right" => array(
4157 "cerfa", "cerfa_tab",
4158 ),
4159 );
4160 //
4161 $links[] = array(
4162 "href" => "".OM_ROUTE_TAB."&obj=cerfa",
4163 "class" => "cerfa",
4164 "title" => _("cerfa"),
4165 "right" => array("cerfa", "cerfa_tab", ),
4166 "open" => array("index.php|cerfa[module=tab]", "index.php|cerfa[module=form]", ),
4167 );
4168 //
4169 $links[] = array(
4170 "title" => "<hr/>",
4171 "right" => array(
4172 "dossier_autorisation_type", "dossier_autorisation_type_tab",
4173 "dossier_autorisation_type_detaille",
4174 "dossier_autorisation_type_detaille_tab", "dossier_instruction_type",
4175 "dossier_instruction_type_tab",
4176 ),
4177 );
4178 //
4179 $links[] = array(
4180 "href" => "".OM_ROUTE_TAB."&obj=dossier_autorisation_type",
4181 "class" => "dossier_autorisation_type",
4182 "title" => _("type DA"),
4183 "right" => array("dossier_autorisation_type", "dossier_autorisation_type_tab", ),
4184 "open" => array("index.php|dossier_autorisation_type[module=tab]", "index.php|dossier_autorisation_type[module=form]", ),
4185 );
4186 //
4187 $links[] = array(
4188 "href" => "".OM_ROUTE_TAB."&obj=dossier_autorisation_type_detaille",
4189 "class" => "dossier_autorisation_type_detaille",
4190 "title" => _("type DA detaille"),
4191 "right" => array("dossier_autorisation_type_detaille", "dossier_autorisation_type_detaille_tab", ),
4192 "open" => array("index.php|dossier_autorisation_type_detaille[module=tab]", "index.php|dossier_autorisation_type_detaille[module=form]", ),
4193 );
4194 //
4195 $links[] = array(
4196 "href" => "".OM_ROUTE_TAB."&obj=dossier_instruction_type",
4197 "class" => "dossier_instruction_type",
4198 "title" => _("type DI"),
4199 "right" => array("dossier_instruction_type", "dossier_instruction_type_tab", ),
4200 "open" => array("index.php|dossier_instruction_type[module=tab]", "index.php|dossier_instruction_type[module=form]", ),
4201 );
4202 //
4203 $links[] = array(
4204 "title" => "<hr/>",
4205 "right" => array(
4206 "contrainte", "contrainte_tab",
4207 "contrainte_souscategorie", "contrainte_souscategorie_tab",
4208 "contrainte_categorie", "contrainte_categorie_tab"
4209 ),
4210 );
4211 //
4212 $links[] = array(
4213 "href" => "".OM_ROUTE_TAB."&obj=contrainte",
4214 "class" => "contrainte",
4215 "title" => _("contrainte"),
4216 "right" => array("contrainte", "contrainte_tab", ),
4217 "open" => array(
4218 "index.php|contrainte[module=tab]",
4219 "index.php|contrainte[module=form][action=0]",
4220 "index.php|contrainte[module=form][action=1]",
4221 "index.php|contrainte[module=form][action=2]",
4222 "index.php|contrainte[module=form][action=3]",
4223 ),
4224 );
4225 //
4226 $links[] = array(
4227 "class" => "category",
4228 "title" => _("demandes"),
4229 "right" => array(
4230 "demande_type",
4231 "demande_type_tab", "demande_nature", "demande_nature_tab",
4232 ),
4233 );
4234 //
4235 $links[] = array(
4236 "title" => "<hr/>",
4237 "right" => array(
4238 "demande_type",
4239 "demande_type_tab", "demande_nature", "demande_nature_tab",
4240 ),
4241 );
4242 //
4243 $links[] = array(
4244 "href" => "".OM_ROUTE_TAB."&obj=demande_nature",
4245 "class" => "demande_nature",
4246 "title" => _("nature"),
4247 "right" => array("demande_nature", "demande_nature_tab", ),
4248 "open" => array("index.php|demande_nature[module=tab]", "index.php|demande_nature[module=form]", ),
4249 );
4250 //
4251 $links[] = array(
4252 "href" => "".OM_ROUTE_TAB."&obj=demande_type",
4253 "class" => "demande_type",
4254 "title" => _("type"),
4255 "right" => array("demande_type", "demande_type_tab",),
4256 "open" => array("index.php|demande_type[module=tab]", "index.php|demande_type[module=form]", ),
4257 );
4258 //
4259 $links[] = array(
4260 "class" => "category",
4261 "title" => _("workflows"),
4262 "right" => array(
4263 "workflows",
4264 "action", "action_tab", "etat",
4265 "etat_tab", "evenement", "evenement_tab", "bible", "bible_tab", "avis_decision",
4266 "avis_decision_tab", "avis_consultation", "avis_consultation_tab",
4267 "avis_decision_type", "avis_decision_type_tab",
4268 "avis_decision_nature", "avis_decision_nature_tab",
4269 ),
4270 );
4271
4272 //
4273 $links[] = array(
4274 "title" => "<hr/>",
4275 "right" => array(
4276 "workflows",
4277 "action", "action_tab", "etat",
4278 "etat_tab", "evenement", "evenement_tab", "bible", "bible_tab", "avis_decision",
4279 "avis_decision_tab", "avis_consultation", "avis_consultation_tab",
4280 "avis_decision_type", "avis_decision_type_tab",
4281 "avis_decision_nature", "avis_decision_nature_tab",
4282 ),
4283 );
4284 //
4285 $links[] = array(
4286 "href" => "../app/workflows.php",
4287 "class" => "workflows",
4288 "title" => _("workflows"),
4289 "right" => array("workflows", ),
4290 "open" => array("workflows.php|", ),
4291 );
4292 //
4293 $links[] = array(
4294 "title" => "<hr/>",
4295 "right" => array(
4296 "evenement", "evenement_tab",
4297 ),
4298 );
4299 //
4300 $links[] = array(
4301 "href" => "".OM_ROUTE_TAB."&obj=evenement",
4302 "class" => "evenement",
4303 "title" => _("evenement"),
4304 "right" => array("evenement", "evenement_tab", ),
4305 "open" => array("index.php|evenement[module=tab]", "index.php|evenement[module=form]", ),
4306 );
4307 //
4308 $links[] = array(
4309 "title" => "<hr/>",
4310 "right" => array(
4311 "action", "action_tab", "etat",
4312 "etat_tab", "avis_decision",
4313 "avis_decision_tab", "avis_decision_type", "avis_decision_type_tab",
4314 "avis_decision_nature", "avis_decision_nature_tab",
4315 ),
4316 );
4317 //
4318 $links[] = array(
4319 "href" => "".OM_ROUTE_TAB."&obj=etat",
4320 "class" => "workflow-etat",
4321 "title" => _("etat"),
4322 "right" => array("etat", "etat_tab", ),
4323 "open" => array("index.php|etat[module=tab]", "index.php|etat[module=form]", ),
4324 );
4325 //
4326 $links[] = array(
4327 "href" => "".OM_ROUTE_TAB."&obj=avis_decision",
4328 "class" => "avis_decision",
4329 "title" => _("avis decision"),
4330 "right" => array("avis_decision", "avis_decision_tab", ),
4331 "open" => array("index.php|avis_decision[module=tab]", "index.php|avis_decision[module=form]", ),
4332 );
4333 //
4334 $links[] = array(
4335 "href" => "".OM_ROUTE_TAB."&obj=avis_decision_type",
4336 "class" => "avis_decision_type",
4337 "title" => __("avis_decision_type"),
4338 "right" => array("avis_decision_type", "avis_decision_type_tab", ),
4339 "open" => array("index.php|avis_decision_type[module=tab]", "index.php|avis_decision_type[module=form]", ),
4340 );
4341 //
4342 $links[] = array(
4343 "href" => "".OM_ROUTE_TAB."&obj=avis_decision_nature",
4344 "class" => "avis_decision_nature",
4345 "title" => __("avis_decision_nature"),
4346 "right" => array("avis_decision_nature", "avis_decision_nature_tab", ),
4347 "open" => array("index.php|avis_decision_nature[module=tab]", "index.php|avis_decision_nature[module=form]", ),
4348 );
4349 //
4350 $links[] = array(
4351 "href" => "".OM_ROUTE_TAB."&obj=action",
4352 "class" => "action",
4353 "title" => _("action"),
4354 "right" => array("action", "action_tab", ),
4355 "open" => array("index.php|action[module=tab]", "index.php|action[module=form]", ),
4356 );
4357 //
4358 $links[] = array(
4359 "title" => "<hr/>",
4360 "right" => array(
4361 "bible", "bible_tab",
4362 ),
4363 );
4364 //
4365 $links[] = array(
4366 "href" => "".OM_ROUTE_TAB."&obj=bible",
4367 "class" => "bible",
4368 "title" => _("bible"),
4369 "right" => array("bible", "bible_tab", ),
4370 "open" => array("index.php|bible[module=tab]", "index.php|bible[module=form]", ),
4371 );
4372 //
4373 $links[] = array(
4374 "class" => "category",
4375 "title" => _("editions"),
4376 "right" => array(
4377 "om_etat", "om_etat_tab", "om_sousetat", "om_sousetat_tab",
4378 "om_lettretype", "om_lettretype_tab", "om_requete", "om_requete_tab",
4379 "om_logo", "om_logo_tab",
4380 ),
4381 );
4382 //
4383 $links[] = array(
4384 "title" => "<hr/>",
4385 "right" => array(
4386 "om_etat", "om_etat_tab", "om_lettretype", "om_lettretype_tab",
4387 ),
4388 );
4389 //
4390 $links[] = array(
4391 "href" => "".OM_ROUTE_TAB."&obj=om_etat",
4392 "class" => "om_etat",
4393 "title" => _("om_etat"),
4394 "right" => array("om_etat", "om_etat_tab", ),
4395 "open" => array("index.php|om_etat[module=tab]", "index.php|om_etat[module=form]", ),
4396 );
4397 //
4398 $links[] = array(
4399 "href" => "".OM_ROUTE_TAB."&obj=om_lettretype",
4400 "class" => "om_lettretype",
4401 "title" => _("om_lettretype"),
4402 "right" => array("om_lettretype", "om_lettretype_tab"),
4403 "open" => array("index.php|om_lettretype[module=tab]", "index.php|om_lettretype[module=form]", ),
4404 );
4405 //
4406 $links[] = array(
4407 "title" => "<hr/>",
4408 "right" => array(
4409 "om_logo", "om_logo_tab",
4410 ),
4411 );
4412 //
4413 $links[] = array(
4414 "href" => "".OM_ROUTE_TAB."&obj=om_logo",
4415 "class" => "om_logo",
4416 "title" => _("om_logo"),
4417 "right" => array("om_logo", "om_logo_tab", ),
4418 "open" => array("index.php|om_logo[module=tab]", "index.php|om_logo[module=form]", ),
4419 );
4420 //
4421 $rubrik['links'] = $links;
4422 //
4423 $menu[] = $rubrik;
4424 // }}}
4425
4426 // {{{ Rubrique PARAMETRAGE
4427 //
4428 $rubrik = array(
4429 "title" => _("parametrage"),
4430 "class" => "parametrage",
4431 "right" => "menu_parametrage",
4432 );
4433 //
4434 $links = array();
4435 //
4436 $links[] = array(
4437 "href" => "".OM_ROUTE_TAB."&obj=civilite",
4438 "class" => "civilite",
4439 "title" => _("civilite"),
4440 "right" => array("civilite", "civilite_tab", ),
4441 "open" => array("index.php|civilite[module=tab]", "index.php|civilite[module=form]", ),
4442 );
4443 //
4444 $links[] = array(
4445 "href" => "".OM_ROUTE_TAB."&obj=arrondissement",
4446 "class" => "arrondissement",
4447 "title" => _("arrondissement"),
4448 "right" => array("arrondissement", "arrondissement_tab", ),
4449 "open" => array("index.php|arrondissement[module=tab]", "index.php|arrondissement[module=form]", ),
4450 );
4451 //
4452 $links[] = array(
4453 "href" => "".OM_ROUTE_TAB."&obj=quartier",
4454 "class" => "quartier",
4455 "title" => _("quartier"),
4456 "right" => array("quartier", "quartier_tab", ),
4457 "open" => array("index.php|quartier[module=tab]", "index.php|quartier[module=form]", ),
4458 );
4459 //
4460 $links[] = array(
4461 "class" => "category",
4462 "title" => _("Organisation"),
4463 "right" => array(
4464 "direction", "direction_tab", "division", "division_tab", "instructeur_qualite",
4465 "instructeur_qualite_tab", "instructeur", "instructeur_tab", "groupe",
4466 "groupe_tab", "genre", "genre_tab", "signataire_habilitation",
4467 "signataire_habilitation_tab", "signataire_arrete", "signataire_arrete_tab",
4468 "taxe_amenagement_tab", "taxe_amenagement",
4469 ),
4470 );
4471 $links[] = array(
4472 "title" => "<hr/>",
4473 "right" => array(
4474 "direction", "direction_tab", "division", "division_tab", "instructeur_qualite",
4475 "instructeur_qualite_tab", "instructeur", "instructeur_tab", "groupe",
4476 "groupe_tab", "genre", "genre_tab", "signataire_arrete", "signataire_arrete_tab",
4477 "taxe_amenagement_tab", "taxe_amenagement",
4478 ),
4479 );
4480 //
4481 $links[] = array(
4482 "href" => "".OM_ROUTE_TAB."&obj=genre",
4483 "class" => "genre",
4484 "title" => _("genre"),
4485 "right" => array("genre", "genre_tab", ),
4486 "open" => array("index.php|genre[module=tab]", "index.php|genre[module=form]", ),
4487 );
4488 //
4489 $links[] = array(
4490 "href" => "".OM_ROUTE_TAB."&obj=groupe",
4491 "class" => "groupe",
4492 "title" => _("groupe"),
4493 "right" => array("groupe", "groupe_tab", ),
4494 "open" => array("index.php|groupe[module=tab]", "index.php|groupe[module=form]", ),
4495 );
4496 //
4497 $links[] = array(
4498 "href" => "".OM_ROUTE_TAB."&obj=direction",
4499 "class" => "direction",
4500 "title" => _("direction"),
4501 "right" => array("direction", "direction_tab", ),
4502 "open" => array("index.php|direction[module=tab]", "index.php|direction[module=form]", ),
4503 );
4504 //
4505 $links[] = array(
4506 "href" => "".OM_ROUTE_TAB."&obj=division",
4507 "class" => "division",
4508 "title" => _("division"),
4509 "right" => array("division", "division_tab", ),
4510 "open" => array("index.php|division[module=tab]", "index.php|division[module=form]", ),
4511 );
4512 //
4513 $links[] = array(
4514 "href" => "".OM_ROUTE_TAB."&obj=instructeur_qualite",
4515 "class" => "instructeur_qualite",
4516 "title" => _("instructeur_qualite"),
4517 "right" => array("instructeur_qualite", "instructeur_qualite_tab", ),
4518 "open" => array("index.php|instructeur_qualite[module=tab]", "index.php|instructeur_qualite[module=form]", ),
4519 );
4520 //
4521 $links[] = array(
4522 "href" => "".OM_ROUTE_TAB."&obj=instructeur",
4523 "class" => "instructeur",
4524 "title" => _("instructeur"),
4525 "right" => array("instructeur", "instructeur_tab", ),
4526 "open" => array("index.php|instructeur[module=tab]", "index.php|instructeur[module=form]", ),
4527 );
4528 //
4529 $links[] = array(
4530 "href" => "".OM_ROUTE_TAB."&obj=signataire_habilitation",
4531 "class" => "signataire_habilitation",
4532 "title" => _("signataire habilitation"),
4533 "right" => array("signataire_habilitation", "signataire_habilitation", ),
4534 "open" => array("index.php|signataire_habilitation[module=tab]", "index.php|signataire_habilitation[module=form]", ),
4535 );
4536 //
4537 $links[] = array(
4538 "href" => "".OM_ROUTE_TAB."&obj=signataire_arrete",
4539 "class" => "signataire_arrete",
4540 "title" => _("signataire arrete"),
4541 "right" => array("signataire_arrete", "signataire_arrete", ),
4542 "open" => array("index.php|signataire_arrete[module=tab]", "index.php|signataire_arrete[module=form]", ),
4543 );
4544 //
4545 $links[] = array(
4546 "href" => "".OM_ROUTE_TAB."&obj=taxe_amenagement",
4547 "class" => "taxe_amenagement",
4548 "title" => _("taxes"),
4549 "right" => array("taxe_amenagement", "taxe_amenagement_tab", ),
4550 "open" => array("index.php|taxe_amenagement[module=tab]", "index.php|taxe_amenagement[module=form]", ),
4551 );
4552 //
4553 $links[] = array(
4554 "class" => "category",
4555 "title" => _("gestion des commissions"),
4556 "right" => array(
4557 "commission_type", "commission_type_tab",
4558 ),
4559 );
4560 //
4561 $links[] = array(
4562 "title" => "<hr/>",
4563 "right" => array(
4564 "commission_type", "commission_type_tab",
4565 ),
4566 );
4567 //
4568 $links[] = array(
4569 "href" => "".OM_ROUTE_TAB."&obj=commission_type",
4570 "class" => "commission-type",
4571 "title" => _("commission_type"),
4572 "right" => array("commission_type", "commission_type_tab", ),
4573 "open" => array("index.php|commission_type[module=tab]", "index.php|commission_type[module=form]", ),
4574 );
4575 //
4576 $links[] = array(
4577 "class" => "category",
4578 "title" => _("gestion des consultations"),
4579 "right" => array(
4580 "avis_consultation", "avis_consultation_tab", "service", "service_tab",
4581 "service_categorie", "service_categorie_tab",
4582 "lien_service_service_categorie", "lien_service_service_categorie_tab",
4583 ),
4584 );
4585 //
4586 $links[] = array(
4587 "title" => "<hr/>",
4588 "right" => array(
4589 "avis_consultation", "avis_consultation_tab", "service", "service_tab",
4590 "service_categorie", "service_categorie_tab",
4591 "lien_service_service_categorie", "lien_service_service_categorie_tab",
4592 ),
4593 );
4594 //
4595 $links[] = array(
4596 "href" => "".OM_ROUTE_TAB."&obj=avis_consultation",
4597 "class" => "avis_consultation",
4598 "title" => _("avis consultation"),
4599 "right" => array("avis_consultation", "avis_consultation_tab", ),
4600 "open" => array("index.php|avis_consultation[module=tab]", "index.php|avis_consultation[module=form]", ),
4601 );
4602 //
4603 $links[] = array(
4604 "href" => "".OM_ROUTE_TAB."&obj=service",
4605 "class" => "service",
4606 "title" => _("service"),
4607 "right" => array("service", "service_tab", ),
4608 "open" => array("index.php|service[module=tab]", "index.php|service[module=form]", ),
4609 );
4610 $links[] = array(
4611 "href" => "".OM_ROUTE_TAB."&obj=service_categorie",
4612 "class" => "service_categorie",
4613 "title" => _("thematique des services"),
4614 "right" => array("service_categorie", "service_categorie_tab", ),
4615 "open" => array("index.php|service_categorie[module=tab]", "index.php|service_categorie[module=form]", ),
4616 );
4617 $links[] = array(
4618 "href" => "".OM_ROUTE_TAB."&obj=categorie_tiers_consulte",
4619 "class" => "categorie_tiers_consulte",
4620 "title" => __("catégorie des tiers consultés"),
4621 "right" => array("categorie_tiers_consulte", "categorie_tiers_consulte_tab", ),
4622 "open" => array("index.php|categorie_tiers_consulte[module=tab]", "index.php|categorie_tiers_consulte[module=form]", ),
4623 );
4624 $links[] = array(
4625 "href" => "".OM_ROUTE_TAB."&obj=tiers_consulte",
4626 "class" => "tiers_consulte",
4627 "title" => __("tiers consulté"),
4628 "right" => array("tiers_consulte", "tiers_consulte_tab", ),
4629 "open" => array("index.php|tiers_consulte[module=tab]", "index.php|tiers_consulte[module=form]", ),
4630 );
4631 $links[] = array(
4632 "href" => "".OM_ROUTE_TAB."&obj=type_habilitation_tiers_consulte",
4633 "class" => "type_habilitation_tiers_consulte",
4634 "title" => __("type d'habilitation des tiers consultés"),
4635 "right" => array("type_habilitation_tiers_consulte", "type_habilitation_tiers_consulte_tab", ),
4636 "open" => array("index.php|type_habilitation_tiers_consulte[module=tab]", "index.php|type_habilitation_tiers_consulte[module=form]", ),
4637 );
4638 $links[] = array(
4639 "href" => "".OM_ROUTE_TAB."&obj=habilitation_tiers_consulte",
4640 "class" => "habilitation_tiers_consulte",
4641 "title" => __("habilitation des tiers consultés"),
4642 "right" => array("habilitation_tiers_consulte", "habilitation_tiers_consulte_tab", ),
4643 "open" => array("index.php|habilitation_tiers_consulte[module=tab]", "index.php|habilitation_tiers_consulte[module=form]", ),
4644 );
4645 $links[] = array(
4646 "href" => "".OM_ROUTE_TAB."&obj=specialite_tiers_consulte",
4647 "class" => "specialite_tiers_consulte",
4648 "title" => __("spécialité des tiers consultés"),
4649 "right" => array("specialite_tiers_consulte", "specialite_tiers_consulte_tab", ),
4650 "open" => array("index.php|specialite_tiers_consulte[module=tab]", "index.php|specialite_tiers_consulte[module=form]", ),
4651 );
4652 $links[] = array(
4653 "href" => "".OM_ROUTE_TAB."&obj=motif_consultation",
4654 "class" => "motif_consultation",
4655 "title" => __("motif de consultation"),
4656 "right" => array("motif_consultation", "motif_consultation_tab", ),
4657 "open" => array("index.php|motif_consultation[module=tab]", "index.php|motif_consultation[module=form]", ),
4658 );
4659 //
4660 $links[] = array(
4661 "class" => "category",
4662 "title" => _("Gestion des dossiers"),
4663 "right" => array(
4664 "dossier_autorisation_type", "dossier_autorisation_type_tab",
4665 "dossier_autorisation_type_detaille",
4666 "dossier_autorisation_type_detaille_tab", "dossier_instruction_type",
4667 "dossier_instruction_type_tab",
4668 "autorite_competente", "autorite_competente_tab",
4669 "affectation_automatique", "affectation_automatique_tab",
4670 "pec_metier", "pec_metier_tab",
4671 ),
4672 );
4673 //
4674 $links[] = array(
4675 "title" => "<hr/>",
4676 "right" => array(
4677 "dossier_autorisation_type", "dossier_autorisation_type_tab",
4678 "dossier_autorisation_type_detaille",
4679 "dossier_autorisation_type_detaille_tab", "dossier_instruction_type",
4680 "dossier_instruction_type_tab",
4681 "autorite_competente", "autorite_competente_tab",
4682 "affectation_automatique", "affectation_automatique_tab",
4683 "pec_metier", "pec_metier_tab",
4684 ),
4685 );
4686 //
4687 $links[] = array(
4688 "href" => "".OM_ROUTE_TAB."&obj=etat_dossier_autorisation",
4689 "class" => "etat_dossier_autorisation",
4690 "title" => _("etat dossiers autorisations"),
4691 "right" => array("etat_dossier_autorisation", "etat_dossier_autorisation_tab", ),
4692 "open" => array("index.php|etat_dossier_autorisation[module=tab]", "index.php|etat_dossier_autorisation[module=form]", ),
4693 );
4694 //
4695 $links[] = array(
4696 "href" => "".OM_ROUTE_TAB."&obj=affectation_automatique",
4697 "class" => "affectation_automatique",
4698 "title" => _("affectation automatique"),
4699 "right" => array("affectation_automatique", "affectation_automatique_tab", ),
4700 "open" => array("index.php|affectation_automatique[module=tab]", "index.php|affectation_automatique[module=form]", ),
4701 );
4702 //
4703 $links[] = array(
4704 "href" => "".OM_ROUTE_TAB."&obj=autorite_competente",
4705 "class" => "autorite_competente",
4706 "title" => _("autorite")." "._("competente"),
4707 "right" => array("autorite_competente", "autorite_competente_tab", ),
4708 "open" => array("index.php|autorite_competente[module=tab]", "index.php|autorite_competente[module=form]", ),
4709 );
4710 //
4711 $links[] = array(
4712 "href" => "".OM_ROUTE_TAB."&obj=phase",
4713 "class" => "phase",
4714 "title" => _("phase"),
4715 "right" => array("phase", "phase_tab", ),
4716 "open" => array("index.php|phase[module=tab]", "index.php|phase[module=form]", ),
4717 );
4718 //
4719 $links[] = array(
4720 "href" => "".OM_ROUTE_TAB."&obj=pec_metier",
4721 "class" => "pec_metier",
4722 "title" => _("pec_metier"),
4723 "right" => array("pec_metier", "pec_metier_tab", ),
4724 "open" => array("index.php|pec_metier[module=tab]", "index.php|pec_metier[module=form]", ),
4725 );
4726
4727 //Gestion des pièces
4728 $links[] = array(
4729 "class" => "category",
4730 "title" => _("Gestion des pièces"),
4731 "right" => array(
4732 "document_numerise_type_categorie", "document_numerise_type_categorie_tab",
4733 "document_numerise_type",
4734 "document_numerise_type_tab", "document_numerise_traitement_metadonnees",
4735 "document_numerise_traitement_metadonnees_executer",
4736 ),
4737 );
4738 //
4739 $links[] = array(
4740 "title" => "<hr/>",
4741 "right" => array(
4742 "document_numerise_type_categorie", "document_numerise_type_categorie_tab",
4743 "document_numerise_type",
4744 "document_numerise_type_tab", "document_numerise_traitement_metadonnees",
4745 "document_numerise_traitement_metadonnees_executer",
4746 ),
4747 );
4748 //
4749 $links[] = array(
4750 "href" => "".OM_ROUTE_TAB."&obj=document_numerise_type_categorie",
4751 "class" => "document_numerise_type_categorie",
4752 "title" => _("Catégorie des pièces"),
4753 "right" => array(
4754 "document_numerise_type_categorie",
4755 "document_numerise_type_categorie_tab",
4756 ),
4757 "open" => array(
4758 "index.php|document_numerise_type_categorie[module=tab]",
4759 "index.php|document_numerise_type_categorie[module=form]",
4760 ),
4761 );
4762 //
4763 $links[] = array(
4764 "href" => "".OM_ROUTE_TAB."&obj=document_numerise_type",
4765 "class" => "document_numerise_type",
4766 "title" => _("Type des pièces"),
4767 "right" => array(
4768 "document_numerise_type",
4769 "document_numerise_type_tab",
4770 ),
4771 "open" => array(
4772 "index.php|document_numerise_type[module=tab]",
4773 "index.php|document_numerise_type[module=form][action=0]",
4774 "index.php|document_numerise_type[module=form][action=1]",
4775 "index.php|document_numerise_type[module=form][action=2]",
4776 "index.php|document_numerise_type[module=form][action=3]",
4777 ),
4778 );
4779 //
4780 $links[] = array(
4781 "href" => "".OM_ROUTE_TAB."&obj=lien_document_n_type_d_i_t",
4782 "class" => "lien_document_n_type_d_i_t",
4783 "title" => _("Nomenclature des pièces"),
4784 "right" => array(
4785 "lien_document_n_type_d_i_t",
4786 "lien_document_n_type_d_i_t_tab",
4787 ),
4788 "open" => array(
4789 "index.php|lien_document_n_type_d_i_t[module=tab]",
4790 "index.php|lien_document_n_type_d_i_t[module=form][action=0]",
4791 "index.php|lien_document_n_type_d_i_t[module=form][action=1]",
4792 "index.php|lien_document_n_type_d_i_t[module=form][action=2]",
4793 "index.php|lien_document_n_type_d_i_t[module=form][action=3]",
4794 ),
4795 );
4796 //
4797 $links[] = array(
4798 "href" => "".OM_ROUTE_FORM."&obj=document_numerise_traitement_metadonnees&action=100&idx=0",
4799 "class" => "document_numerise_traitement_metadonnees",
4800 "title" => _("Mise à jour des métadonnées"),
4801 "description" => _("Mettre à jour les métadonnées de tous les documents numérisés."),
4802 "right" => array(
4803 "document_numerise_traitement_metadonnees",
4804 "document_numerise_traitement_metadonnees_executer",
4805 ),
4806 "open" => array("index.php|document_numerise_traitement_metadonnees[module=form]", ),
4807 );
4808
4809 // Gestion des contentieux
4810 $links[] = array(
4811 "class" => "category",
4812 "title" => _("Gestion des contentieux"),
4813 "right" => array(
4814 "objet_recours", "objet_recours_tab", "moyen_souleve", "moyen_souleve_tab",
4815 "moyen_retenu_juge", "moyen_retenu_juge_tab",
4816 ),
4817 );
4818 //
4819 $links[] = array(
4820 "title" => "<hr/>",
4821 "right" => array(
4822 "objet_recours", "objet_recours_tab", "moyen_souleve", "moyen_souleve_tab",
4823 "moyen_retenu_juge", "moyen_retenu_juge_tab",
4824 ),
4825 );
4826 //
4827 $links[] = array(
4828 "href" => "".OM_ROUTE_TAB."&obj=objet_recours",
4829 "class" => "objet_recours",
4830 "title" => _("objet_recours"),
4831 "right" => array(
4832 "objet_recours", "objet_recours_tab",
4833 ),
4834 "open" => array(
4835 "index.php|objet_recours[module=tab]", "index.php|objet_recours[module=form]",
4836 ),
4837 );
4838 //
4839 $links[] = array(
4840 "href" => "".OM_ROUTE_TAB."&obj=moyen_souleve",
4841 "class" => "moyen_souleve",
4842 "title" => _("moyen_souleve"),
4843 "right" => array(
4844 "moyen_souleve", "moyen_souleve_tab",
4845 ),
4846 "open" => array(
4847 "index.php|moyen_souleve[module=tab]", "index.php|moyen_souleve[module=form]",
4848 ),
4849 );
4850 //
4851 $links[] = array(
4852 "href" => "".OM_ROUTE_TAB."&obj=moyen_retenu_juge",
4853 "class" => "moyen_retenu_juge",
4854 "title" => _("moyen_retenu_juge"),
4855 "right" => array(
4856 "moyen_retenu_juge", "moyen_retenu_juge_tab",
4857 ),
4858 "open" => array(
4859 "index.php|moyen_retenu_juge[module=tab]", "index.php|moyen_retenu_juge[module=form]",
4860 ),
4861 );
4862
4863 //
4864 $links[] = array(
4865 "class" => "category",
4866 "title" => _("géolocalisation"),
4867 "right" => array(
4868 "sig_groupe",
4869 "sig_sousgroupe",
4870 "sig_contrainte"
4871 ),
4872 );
4873 //
4874 $links[] = array(
4875 "href" => "".OM_ROUTE_TAB."&obj=sig_couche",
4876 "class" => "sig_couche",
4877 "title" => _("Couches"),
4878 "right" => array("sig_contrainte", "sig_contrainte_tab","sig_couche", "sig_couche_tab", ),
4879 "open" => array("index.php|sig_couche[module=tab]", "index.php|sig_couche[module=form]", ),
4880 );
4881 //
4882 $links[] = array(
4883 "href" => "".OM_ROUTE_TAB."&obj=sig_groupe",
4884 "class" => "sig_groupe",
4885 "title" => _("sig_groupe"),
4886 "right" => array(
4887 "sig_groupe", "sig_groupe_tab",
4888 ),
4889 "open" => array(
4890 "index.php|sig_groupe[module=tab]", "index.php|sig_groupe[module=form]",
4891 ),
4892 );
4893 //
4894 $links[] = array(
4895 "href" => "".OM_ROUTE_TAB."&obj=sig_sousgroupe",
4896 "class" => "sig_sousgroupe",
4897 "title" => _("sig_sousgroupe"),
4898 "right" => array(
4899 "sig_sousgroupe", "sig_sousgroupe_tab",
4900 ),
4901 "open" => array(
4902 "index.php|sig_sousgroupe[module=tab]", "index.php|sig_sousgroupe[module=form]",
4903 ),
4904 );
4905 //
4906 $links[] = array(
4907 "href" => "".OM_ROUTE_TAB."&obj=sig_contrainte",
4908 "class" => "sig_contrainte",
4909 "title" => _("sig_contrainte"),
4910 "right" => array(
4911 "sig_contrainte", "sig_contrainte_tab", "sig_attribut", "sig_attribut_tab"
4912 ),
4913 "open" => array(
4914 "index.php|sig_contrainte[module=tab]", "index.php|sig_contrainte[module=form]",
4915 ),
4916 );
4917 //
4918 $rubrik['links'] = $links;
4919 //
4920 $menu[] = $rubrik;
4921 // }}}
4922
4923 // {{{ Rubrique ADMINISTRATION
4924 //
4925 $rubrik = array(
4926 "title" => _("administration"),
4927 "class" => "administration",
4928 "right" => "menu_administration",
4929 );
4930 //
4931 $links = array();
4932 //
4933 // Renomme la collectivité en service
4934 $om_collectivite_title = __("om_collectivite");
4935 if (isset($_SESSION['collectivite']) === true
4936 && $this->is_option_renommer_collectivite_enabled() === true) {
4937 //
4938 $om_collectivite_title = __("service");
4939 }
4940 $links[] = array(
4941 "href" => "".OM_ROUTE_TAB."&obj=om_collectivite",
4942 "class" => "collectivite",
4943 "title" => $om_collectivite_title,
4944 "right" => array("om_collectivite", "om_collectivite_tab", ),
4945 "open" => array("index.php|om_collectivite[module=tab]", "index.php|om_collectivite[module=form]", ),
4946 );
4947 //
4948 $links[] = array(
4949 "href" => "".OM_ROUTE_TAB."&obj=om_parametre",
4950 "class" => "parametre",
4951 "title" => _("om_parametre"),
4952 "right" => array("om_parametre", "om_parametre_tab", ),
4953 "open" => array("index.php|om_parametre[module=tab]", "index.php|om_parametre[module=form]", ),
4954 );
4955 //
4956 $links[] = array(
4957 "title" => "<hr/>",
4958 "right" => array("commune", "commune_tab", )
4959 );
4960 $links[] = array(
4961 "href" => "".OM_ROUTE_TAB."&obj=commune",
4962 "title" => __("communes"),
4963 "right" => array("commune", "commune_tab"),
4964 "open" => array("index.php|commune[module=tab]", "index.php|commune[module=form]", ),
4965 );
4966 $links[] = array(
4967 "href" => "".OM_ROUTE_TAB."&obj=departement",
4968 "title" => __("départements"),
4969 "right" => array("departement", "departement_tab"),
4970 "open" => array("index.php|departement[module=tab]", "index.php|departement[module=form]")
4971 );
4972 $links[] = array(
4973 "href" => "".OM_ROUTE_TAB."&obj=region",
4974 "title" => __("régions"),
4975 "right" => array("region", "region_tab"),
4976 "open" => array("index.php|region[module=tab]", "index.php|region[module=form]")
4977 );
4978 //
4979 $links[] = array(
4980 "class" => "category",
4981 "title" => _("gestion des utilisateurs"),
4982 "right" => array(
4983 "om_utilisateur", "om_utilisateur_tab", "om_profil", "om_profil_tab",
4984 "om_droit", "om_droit_tab", "directory",
4985 ),
4986 );
4987 //
4988 $links[] = array(
4989 "title" => "<hr/>",
4990 "right" => array(
4991 "om_utilisateur", "om_utilisateur_tab", "om_profil", "om_profil_tab",
4992 "om_droit", "om_droit_tab",
4993 ),
4994 );
4995 //
4996 $links[] = array(
4997 "href" => "".OM_ROUTE_TAB."&obj=om_profil",
4998 "class" => "profil",
4999 "title" => _("om_profil"),
5000 "right" => array("om_profil", "om_profil_tab", ),
5001 "open" => array("index.php|om_profil[module=tab]", "index.php|om_profil[module=form]", ),
5002 );
5003 //
5004 $links[] = array(
5005 "href" => "".OM_ROUTE_TAB."&obj=om_droit",
5006 "class" => "droit",
5007 "title" => _("om_droit"),
5008 "right" => array("om_droit", "om_droit_tab", ),
5009 "open" => array("index.php|om_droit[module=tab]", "index.php|om_droit[module=form]", ),
5010 );
5011 //
5012 $links[] = array(
5013 "href" => "".OM_ROUTE_TAB."&obj=om_utilisateur",
5014 "class" => "utilisateur",
5015 "title" => _("om_utilisateur"),
5016 "right" => array("om_utilisateur", "om_utilisateur_tab", ),
5017 "open" => array(
5018 "index.php|om_utilisateur[module=tab]",
5019 "index.php|om_utilisateur[module=form][action=0]",
5020 "index.php|om_utilisateur[module=form][action=1]",
5021 "index.php|om_utilisateur[module=form][action=2]",
5022 "index.php|om_utilisateur[module=form][action=3]",
5023 ),
5024 );
5025 //
5026 $links[] = array(
5027 "title" => "<hr/>",
5028 "right" => array("om_utilisateur", "om_utilisateur_synchroniser", ),
5029 "parameters" => array("isDirectoryOptionEnabled" => true, ),
5030 );
5031 //
5032 $links[] = array(
5033 "href" => "".OM_ROUTE_FORM."&obj=om_utilisateur&idx=0&action=11",
5034 "class" => "annuaire",
5035 "title" => _("annuaire"),
5036 "right" => array("om_utilisateur", "om_utilisateur_synchroniser", ),
5037 "open" => array("index.php|om_utilisateur[module=form][action=11]", ),
5038 "parameters" => array("isDirectoryOptionEnabled" => true, ),
5039 );
5040 //
5041 $links[] = array(
5042 "class" => "category",
5043 "title" => _("tableaux de bord"),
5044 "right" => array(
5045 "om_widget", "om_widget_tab", "om_dashboard",
5046 ),
5047 );
5048 //
5049 $links[] = array(
5050 "title" => "<hr/>",
5051 "right" => array(
5052 "om_widget", "om_widget_tab", "om_dashboard",
5053 ),
5054 );
5055 //
5056 $links[] = array(
5057 "href" => "".OM_ROUTE_TAB."&obj=om_widget",
5058 "class" => "om_widget",
5059 "title" => _("om_widget"),
5060 "right" => array("om_widget", "om_widget_tab", ),
5061 "open" => array("index.php|om_widget[module=tab]", "index.php|om_widget[module=form]", ),
5062 );
5063 //
5064 $links[] = array(
5065 "href" => "".OM_ROUTE_FORM."&obj=om_dashboard&amp;idx=0&amp;action=4",
5066 "class" => "om_dashboard",
5067 "title" => _("composition"),
5068 "right" => array("om_dashboard", ),
5069 "open" => array("index.php|om_dashboard[module=form][action=4]", ),
5070 );
5071 //
5072 $links[] = array(
5073 "class" => "category",
5074 "title" => _("sig"),
5075 "right" => array(
5076 "om_sig_map", "om_sig_map_tab", "om_sig_flux", "om_sig_flux_tab", "om_sig_extent", "om_sig_extent_tab",
5077 ),
5078 "parameters" => array("option_localisation" => "sig_interne", ),
5079 );
5080 //
5081 $links[] = array(
5082 "title" => "<hr/>",
5083 "right" => array(
5084 "om_sig_map", "om_sig_map_tab", "om_sig_flux", "om_sig_flux_tab", "om_sig_extent", "om_sig_extent_tab",
5085 ),
5086 "parameters" => array("option_localisation" => "sig_interne", ),
5087 );
5088 //
5089 $links[] = array(
5090 "href" => "".OM_ROUTE_TAB."&obj=om_sig_extent",
5091 "class" => "om_sig_extent",
5092 "title" => _("om_sig_extent"),
5093 "right" => array("om_sig_extent", "om_sig_extent_tab", ),
5094 "open" => array("index.php|om_sig_extent[module=tab]", "index.php|om_sig_extent[module=form]", ),
5095 "parameters" => array("option_localisation" => "sig_interne", ),
5096 );
5097 //
5098 $links[] = array(
5099 "href" => "".OM_ROUTE_TAB."&obj=om_sig_map",
5100 "class" => "om_sig_map",
5101 "title" => _("om_sig_map"),
5102 "right" => array("om_sig_map", "om_sig_map_tab", ),
5103 "open" => array("index.php|om_sig_map[module=tab]", "index.php|om_sig_map[module=form]", ),
5104 "parameters" => array("option_localisation" => "sig_interne", ),
5105 );
5106 //
5107 $links[] = array(
5108 "href" => "".OM_ROUTE_TAB."&obj=om_sig_flux",
5109 "class" => "om_sig_flux",
5110 "title" => _("om_sig_flux"),
5111 "right" => array("om_sig_flux", "om_sig_flux_tab", ),
5112 "open" => array("index.php|om_sig_flux[module=tab]", "index.php|om_sig_flux[module=form]", ),
5113 "parameters" => array("option_localisation" => "sig_interne", ),
5114 );
5115 //
5116 $links[] = array(
5117 "class" => "category",
5118 "title" => _("options avancees"),
5119 "right" => array("import", "gen", "om_requete", "om_requete_tab",
5120 "om_sousetat", "om_sousetat_tab",),
5121 );
5122 //
5123 $links[] = array(
5124 "title" => "<hr/>",
5125 "right" => array(
5126 "interface_referentiel_erp",
5127 ),
5128 );
5129 //
5130 $links[] = array(
5131 "href" => "../app/settings.php?controlpanel=interface_referentiel_erp",
5132 "class" => "interface_referentiel_erp",
5133 "title" => _("interface_referentiel_erp"),
5134 "right" => array("interface_referentiel_erp", ),
5135 "open" => array("settings.php|[controlpanel=interface_referentiel_erp]", ),
5136 );
5137 //
5138 $links[] = array(
5139 "title" => "<hr/>",
5140 "right" => array(
5141 "om_sousetat", "om_sousetat_tab",
5142 ),
5143 );
5144 //
5145 $links[] = array(
5146 "href" => "".OM_ROUTE_TAB."&obj=om_sousetat",
5147 "class" => "om_sousetat",
5148 "title" => _("om_sousetat"),
5149 "right" => array("om_sousetat", "om_sousetat_tab", ),
5150 "open" => array("index.php|om_sousetat[module=tab]", "index.php|om_sousetat[module=form]", ),
5151 );
5152 //
5153 $links[] = array(
5154 "title" => "<hr/>",
5155 "right" => array("om_requete", "om_requete_tab", ),
5156 );
5157 //
5158 $links[] = array(
5159 "href" => "".OM_ROUTE_TAB."&obj=om_requete",
5160 "class" => "om_requete",
5161 "title" => _("om_requete"),
5162 "right" => array("om_requete", "om_requete_tab", ),
5163 "open" => array("index.php|om_requete[module=tab]", "index.php|om_requete[module=form]", ),
5164 );
5165 //
5166 $links[] = array(
5167 "title" => "<hr/>",
5168 "right" => array("task", "task_tab", ),
5169 );
5170 //
5171 $links[] = array(
5172 "href" => "".OM_ROUTE_TAB."&obj=task",
5173 "class" => "task",
5174 "title" => _("Moniteur Plat'AU"),
5175 "right" => array("task", "task_tab", ),
5176 "open" => array("index.php|task[module=tab]", "index.php|task[module=form]", ),
5177 );
5178
5179 //Afficher le menu moniteur IDE'AU si l'option notification portal est activée.
5180 if (isset($_SESSION['collectivite']) === true &&
5181 ($this->get_param_option_notification() === "portal" ||
5182 $this->get_param_option_notification() === "" ||
5183 $this->get_param_option_notification() === NULL ))
5184 {
5185 $links[] = array(
5186 "href" => "".OM_ROUTE_TAB."&obj=task_portal",
5187 "class" => "task_portal",
5188 "title" => __("Moniteur iDE'AU"),
5189 "right" => array("task_portal", "task_portal_tab", ),
5190 "open" => array("index.php|task_portal[module=tab]", "index.php|task_portal[module=form]", ),
5191 );
5192 }
5193
5194 //
5195 $links[] = array(
5196 "title" => "<hr/>",
5197 "right" => array("import", ),
5198 );
5199 //
5200 $links[] = array(
5201 "href" => OM_ROUTE_MODULE_IMPORT,
5202 "class" => "import",
5203 "title" => __("Import"),
5204 "description" => __("Ce module permet l'intégration de données dans l'application depuis des fichiers CSV."),
5205 "right" => array("import", ),
5206 "open" => array(
5207 "import.php|",
5208 "index.php|[module=import]",
5209 ),
5210 );
5211 //
5212 $links[] = array(
5213 "href" => "../app/import_specific.php",
5214 "class" => "import_specific",
5215 "title" => _("Import specifique"),
5216 "right" => array("import", ),
5217 "open" => array("import_specific.php|", ),
5218 );
5219 //
5220 $links[] = array(
5221 "title" => "<hr/>",
5222 "right" => array("gen", ),
5223 );
5224 //
5225 $links[] = array(
5226 "title" => _("Generateur"),
5227 "href" => OM_ROUTE_MODULE_GEN,
5228 "class" => "generator",
5229 "right" => array("gen", ),
5230 "open" => array(
5231 "gen.php|","genauto.php|", "gensup.php|", "genfull.php|",
5232 "genetat.php|", "gensousetat.php|", "genlettretype.php|",
5233 "genimport.php|",
5234 ),
5235 );
5236 //
5237 $links[] = array(
5238 "title" => "<hr/>",
5239 "right" => array("contrainte", "contrainte_synchronisation"),
5240 );
5241 //
5242 $links[] = array(
5243 "href" => "".OM_ROUTE_FORM."&obj=contrainte&action=100&idx=0",
5244 "class" => "contrainte",
5245 "title" => _("synchronisation des contraintes"),
5246 "right" => array("contrainte", "contrainte_synchronisation", ),
5247 "open" => array("index.php|contrainte[module=form][action=100]", ),
5248 "parameters" => array(
5249 "option_sig" => "sig_externe",
5250 ),
5251 );
5252 //
5253 $links[] = array(
5254 "href" => "".OM_ROUTE_FORM."&obj=dossier_instruction&action=126&idx=0",
5255 "class" => "geocoder",
5256 "title" => _("Géolocalisation des dossiers"),
5257 "right" => array("dossier_instruction_geocoder", ),
5258 "open" => array("index.php|dossier_instruction[module=form][action=126]", ),
5259 "parameters" => array(
5260 "option_sig" => "sig_externe",
5261 ),
5262 );
5263 //
5264 $rubrik['links'] = $links;
5265 //
5266 $menu[] = $rubrik;
5267 $this->config__menu = $menu;
5268 }
5269
5270 /**
5271 * Récupère tous les résultats d'une requête SQL.
5272 *
5273 * @param string $query Requête SQL
5274 * @param boolean $force_return Force le retour d'un boolean en cas d'erreur
5275 *
5276 * @return array
5277 */
5278 function get_all_results_from_db_query($query = "", $force_return = false) {
5279 $res = $this->db->query($query);
5280 $this->addToLog(
5281 __METHOD__."(): db->query(\"".$query."\");",
5282 VERBOSE_MODE
5283 );
5284 $result = array(
5285 'code' => '',
5286 'message' => '',
5287 'result' => array(),
5288 );
5289 if ($this->isDatabaseError($res, $force_return) !== false) {
5290 $result['code'] = 'KO';
5291 $result['message'] = __("Erreur de base de donnees. Contactez votre administrateur.");
5292 return $result;
5293 }
5294 $result['code'] = 'OK';
5295 while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
5296 array_push($result['result'], $row);
5297 }
5298 $res->free();
5299 return $result;
5300 }
5301
5302 /**
5303 * Récupère un résultat d'une requête SQL.
5304 *
5305 * @param string $query Requête SQL
5306 * @param boolean $force_return Force le retour d'un boolean en cas d'erreur
5307 *
5308 * @return array
5309 */
5310 function get_one_result_from_db_query($query = "", $force_return = false) {
5311 $res = $this->db->getone($query);
5312 $this->addToLog(
5313 __METHOD__."(): db->getone(\"".$query."\");",
5314 VERBOSE_MODE
5315 );
5316 $result = array(
5317 'code' => '',
5318 'message' => '',
5319 'result' => array(),
5320 );
5321 if ($this->isDatabaseError($res, $force_return) !== false) {
5322 $result['code'] = 'KO';
5323 $result['message'] = __("Erreur de base de donnees. Contactez votre administrateur.");
5324 return $result;
5325 }
5326 $result['code'] = 'OK';
5327 $result['result'] = $res;
5328 return $result;
5329 }
5330
5331 /**
5332 * Récupère une ligne de résultat d'une requête SQL.
5333 *
5334 * @param string $query Requête SQL
5335 * @param boolean $force_return Force le retour d'un boolean en cas d'erreur
5336 *
5337 * @return array
5338 */
5339 function get_one_row_result_from_db_query($query = "", $force_return = false) {
5340 $res = $this->db->getRow($query, DB_FETCHMODE_ASSOC);
5341 $this->addToLog(
5342 __METHOD__."(): db->getRow(\"".$query."\");",
5343 VERBOSE_MODE
5344 );
5345 $result = array(
5346 'code' => '',
5347 'message' => '',
5348 'result' => array(),
5349 );
5350 if ($this->isDatabaseError($res, $force_return) !== false) {
5351 $result['code'] = 'KO';
5352 $result['message'] = __("Erreur de base de donnees. Contactez votre administrateur.");
5353 return $result;
5354 }
5355 $result['code'] = 'OK';
5356 $result['result'] = $res;
5357 return $result;
5358 }
5359
5360 /**
5361 * Instanciation de la classe 'edition'.
5362 * (surcharge de la fonction pour ajouter la prise en compte
5363 * de la surcharge locale de la classe om_edition).
5364 *
5365 * @param array $args Arguments à passer au constructeur.
5366 * @return edition
5367 */
5368 function get_inst__om_edition($args = array()) {
5369 if (file_exists("../obj/om_edition.class.php")) {
5370 require_once "../obj/om_edition.class.php";
5371 $class_name = "om_edition";
5372 } else {
5373 require_once PATH_OPENMAIRIE."om_edition.class.php";
5374 $class_name = "edition";
5375 }
5376 return new $class_name();
5377 }
5378
5379 /**
5380 * Instanciation de la classe 'reqmo'.
5381 * (surcharge de la fonction pour ajouter la prise en compte
5382 * de la surcharge locale de la classe om_edition).
5383 *
5384 * @param array $args Arguments à passer au constructeur.
5385 * @return edition
5386 */
5387 function get_inst__om_reqmo($args = array()) {
5388 if (file_exists("../obj/om_reqmo.class.php")) {
5389 require_once "../obj/om_reqmo.class.php";
5390 $class_name = "om_reqmo";
5391 } else {
5392 require_once PATH_OPENMAIRIE."om_reqmo.class.php";
5393 $class_name = "reqmo";
5394 }
5395 return new $class_name();
5396 }
5397
5398 /**
5399 * Permet d'enregistrer un fichier dans la table 'storage'.
5400 *
5401 * @return mixed Identifiant du fichier dans la table storage ou false.
5402 */
5403 function store_file($filecontent, $filemetadata, $type, $info = null, $collectivite = null, $dossierFinal = false) {
5404 if ($collectivite === null) {
5405 $get_collectivite = $this->getCollectivite();
5406 $collectivite = $get_collectivite['om_collectivite_idx'];
5407 }
5408 $uid = $this->storage->create($filecontent, $filemetadata, "from_content", "storage.uid");
5409 if ($uid == 'OP_FAILURE') {
5410 return false;
5411 }
5412 $inst_storage = $this->get_inst__om_dbform(array(
5413 "obj" => "storage",
5414 "idx" => "]",
5415 ));
5416 $val = array(
5417 "storage" => '',
5418 "file" => "NEW",
5419 "creation_date" => date("Y-m-d"),
5420 "creation_time" => date("G:i:s"),
5421 "uid" => $uid,
5422 "filename" => $filemetadata["filename"],
5423 "size" => $filemetadata["size"],
5424 "mimetype" => $filemetadata["mimetype"],
5425 "type" => $type,
5426 "info" => $info,
5427 "om_collectivite" => $collectivite,
5428 "uid_dossier_final" => $dossierFinal
5429 );
5430 $ret = $inst_storage->ajouter($val);
5431 if ($ret !== true) {
5432 return false;
5433 }
5434 // Récupère l'identifiant dans le storage
5435 $id = $inst_storage->get_storage_id_by_uid($uid);
5436 //
5437 return $id;
5438 }
5439
5440 /**
5441 * Surcharge de la fonction d'affichage pour ajouter
5442 * un détecteur de bloqueur de pub (cassant l'application).
5443 *
5444 * @return void
5445 */
5446 function displayHTMLFooter() {
5447 parent::displayHTMLFooter();
5448 if (in_array($this->flag, array("login_and_nohtml", "nohtml", "login", "logout", "anonym")) !== true) {
5449 $this->ad_blocker_detector();
5450 }
5451 }
5452
5453 /**
5454 * "Fausse" surcharge de la méthode du même nom dans om_layout.
5455 * Ajoute la possibilité d'ajouter une class CSS à la balise legend.
5456 *
5457 * Cette methode permet d'ouvrir un fieldset
5458 */
5459 public function display_formulaire_debutFieldset($params) {
5460 // Ouverture du fieldset
5461 echo " <fieldset";
5462 echo (isset($params["identifier"]) ? " id=\"".$params["identifier"]."\"" : "");
5463 echo " class=\"cadre ui-corner-all ui-widget-content ".$params["action2"]."\">\n";
5464 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active ".$params["legend_class"]."\">";
5465 echo $params["action1"];
5466 echo " </legend>\n";
5467 // Ouverture du conteneur interne du fieldset
5468 echo " <div class=\"fieldsetContent\">\n";
5469 }
5470
5471 /**
5472 * Affiche un bloc de code Javascript
5473 * responsable de détecter les bloqueurs de pub
5474 * et d'afficher un message le cas échéant.
5475 */
5476 protected function ad_blocker_detector() {
5477
5478 printf(
5479 '<script type="text/javascript">
5480 var blocked = [];
5481 // jquery has not loaded
5482 if(typeof($) == "undefined" && typeof(jQuery) == "undefined") {
5483 blocked.push("jquery");
5484 }
5485 // tinyMCE has not loaded
5486 if(typeof(tinyMCE) == "undefined") {
5487 blocked.push("tinyMCE");
5488 }
5489 // locale has not loaded
5490 if(typeof(locale) == "undefined") {
5491 blocked.push("locale");
5492 }
5493 // om_layout has not loaded
5494 if(typeof(om_initialize_content) == "undefined") {
5495 blocked.push("om_layout");
5496 }
5497 // app script has not loaded
5498 if(typeof(app_script_t4Fv4a59uSU7MwpJ59Qp) == "undefined") {
5499 blocked.push("app_script");
5500 }
5501
5502 // something was blocked
5503 if(blocked.length > 0) {
5504
5505 // removing every node in the body
5506 while(document.body.firstChild) { document.body.removeChild(document.body.firstChild); }
5507
5508 // creating the message (node) and its style
5509 var msgNode = document.createElement("p");
5510 msgNode.id = "adblocker-detected";
5511 msgNode.style.position = "relative";
5512 msgNode.style.width = "calc(100%% - 60px)";
5513 msgNode.style.margin = "20px auto";
5514 msgNode.style.padding = "20px";
5515 msgNode.style.background = "#FEF8F6";
5516 msgNode.style.color = "#cd0a0a";
5517 msgNode.style.border = "1px solid #cd0a0a";
5518 msgNode.style.borderRadius = "4px";
5519 msgNode.innerHTML = "%s";
5520
5521 // appending the message (node) to the body
5522 document.body.insertBefore(msgNode, document.body.firstChild);
5523 }
5524 </script>',
5525 sprintf(
5526 '<span>%s</span><br/><br/><span>%s</span><br/><br/><span>%s</span>',
5527 __("Un bloqueur de publicité a été détecté, et ceci empêche l'application de fonctionner normalement."),
5528 __("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>)."),
5529 __("<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>")
5530 )
5531 );
5532 }
5533
5534 /**
5535 * Récupère l'identifiant de l'enregistrement par rapport aux arguments.
5536 *
5537 * @param string $idx_name Nom du champ de l'identifiant
5538 * @param string $table Nom de la table
5539 * @param string $condition_field Nom du champ pour la condition
5540 * @param string $condition_value Valeur du champ de condition
5541 *
5542 * @return mixed Résultat de la requête ou null
5543 */
5544 public function get_idx_by_args(array $args) {
5545 $where2 = '';
5546 if (isset($args['condition2_field']) === true
5547 && isset($args['condition2_value']) === true
5548 && $args['condition2_field'] !== ''
5549 && $args['condition2_field'] !== null
5550 && $args['condition2_value'] !== ''
5551 && $args['condition2_value'] !== null) {
5552 //
5553 $where2 = sprintf(" AND %s = '%s'", $args['condition2_field'], $args['condition2_value']);
5554 }
5555 $where3 = '';
5556 if (isset($args['condition3_field']) === true
5557 && isset($args['condition3_value']) === true
5558 && $args['condition3_field'] !== ''
5559 && $args['condition3_field'] !== null
5560 && $args['condition3_value'] !== ''
5561 && $args['condition3_value'] !== null) {
5562 //
5563 $where3 = sprintf(" AND %s = '%s'", $args['condition3_field'], $args['condition3_value']);
5564 }
5565 $order = '';
5566 if (isset($args['order_field']) === true
5567 && isset($args['order_asc_desc']) === true
5568 && $args['order_field'] !== ''
5569 && $args['order_field'] !== null
5570 && $args['order_asc_desc'] !== ''
5571 && $args['order_asc_desc'] !== null) {
5572 //
5573 $order = sprintf(" ORDER BY %s %s ", $args['order_field'], $args['order_asc_desc']);
5574 }
5575 //
5576 $query = sprintf("SELECT %s FROM %s%s WHERE %s = '%s' %s %s %s",
5577 $args['idx_name'],
5578 DB_PREFIXE,
5579 $args['table'],
5580 $args['condition_field'],
5581 $args['condition_value'],
5582 $where2,
5583 $where3,
5584 $order
5585 );
5586 //
5587 $res = $this->get_one_result_from_db_query($query);
5588 //
5589 return $res['result'];
5590 }
5591
5592 public function get_inst__by_other_idx(array $args) {
5593 // En cas de plusieurs résultat, instancie seulement le premier retourné
5594 $idx = $this->get_idx_by_args(array(
5595 'idx_name' => $args['obj'],
5596 'table' => $args['obj'],
5597 'condition_field' => $args['fk_field'],
5598 'condition_value' => $args['fk_idx'],
5599 'condition2_field' => isset($args['fk_field_2']) === true ? $args['fk_field_2'] : null,
5600 'condition2_value' => isset($args['fk_idx_2']) === true ? $args['fk_idx_2'] : null,
5601 'condition3_field' => isset($args['fk_field_3']) === true ? $args['fk_field_3'] : null,
5602 'condition3_value' => isset($args['fk_idx_3']) === true ? $args['fk_idx_3'] : null,
5603 'order_field' => isset($args['order_field']) === true ? $args['order_field'] : null,
5604 'order_asc_desc' => isset($args['order_asc_desc']) === true ? $args['order_asc_desc'] : null,
5605 ));
5606 $inst = $this->get_inst__om_dbform(array(
5607 'obj' => $args['obj'],
5608 'idx' => $idx,
5609 ));
5610 return $inst;
5611 }
5612
5613 /**
5614 * Retourne l'objet demandé avec ses propriétés remplis à partir des données en base
5615 * ou 'null' si l'objet n'est pas trouvé en base de données.
5616 *
5617 * @param string class La classe de l'objet demandé
5618 * @param int id L'identifiant de l'objet en base de donnée
5619 *
5620 * @return $mixed L'objet ou null
5621 *
5622 * (à partir de PHP 7.1 on pourra utiliser le ReturnType ?object)
5623 */
5624 public function findObjectById(string $class, string $idx) {
5625 $obj = null;
5626 if (!empty($class) && !empty($idx)) {
5627 $sqlExist = "SELECT COUNT($class) FROM ".DB_PREFIXE."$class WHERE $class = ?";
5628 $this->addToLog(__METHOD__."(): db->getOne(\"".$sqlExist."\");", VERBOSE_MODE);
5629 $res = $this->db->getOne($sqlExist, $idx);
5630 if ($this->db->isError($res)){
5631 throw new RuntimeException("Failed database query (".$res->getMessage().")");
5632 }
5633 if (intval(strval($res)) > 0) {
5634 $obj = $this->get_inst__om_dbform(array('obj' => $class, 'idx' => $idx));
5635 }
5636 }
5637 return $obj;
5638 }
5639
5640 /**
5641 * Récupère la totalité des objets d'un type donné.
5642 * Si l'argument $sqlFilter est non-vide alors il sera utilisé pour filtrer les objets.
5643 * Si l'argument $sqlOrder est non-vide alors il sera utilisé pour ordonner les objets.
5644 *
5645 * Note: le code de cette méthode est largement inspiré de dbform::init_record_data().
5646 *
5647 * @return array|false
5648 */
5649 public function getAllObjects(string $type, string $sqlfilter = '', string $sqlOrder = '') {
5650
5651 // objet "modèle" utilisé pour accéder aux variables nécessaires à la construction
5652 // de la requête SQL et aussi pour y stocker les infos communes à tous les objets de
5653 // ce type (ex: tailles des champs, etc.).
5654 $objectTemplate = $this->get_inst__om_dbform(array('obj' => $type));
5655
5656 // construction de la requpete SQL (éventuellement avec un filtre)
5657 $sqlSelectedColumns = $objectTemplate->get_var_sql_forminc__champs();
5658 if (! empty($objectTemplate->_var_from_sql_forminc__champs)) {
5659 $sqlSelectedColumns = $objectTemplate->_var_from_sql_forminc__champs;
5660 }
5661 $sqlSelectColumns = implode(', ', $sqlSelectedColumns);
5662 $sqlSelectFrom = $objectTemplate->get_var_sql_forminc__tableSelect();
5663 if (! empty($objectTemplate->_var_from_sql_forminc__tableSelect)) {
5664 $sqlSelectFrom = $objectTemplate->_var_from_sql_forminc__tableSelect;
5665 }
5666 $sqlSelectWhere = '';
5667 if (! empty($sqlfilter)) {
5668 $sqlSelectWhere = "WHERE $sqlfilter";
5669 }
5670 $sqlSelectOrder = $objectTemplate->table." ASC";
5671 if (! empty($sqlOrder)) {
5672 $sqlSelectOrder = $sqlOrder;
5673 }
5674 $sql = sprintf('SELECT %s FROM %s %s ORDER BY %s',
5675 $sqlSelectColumns,
5676 $sqlSelectFrom,
5677 $sqlSelectWhere,
5678 $sqlSelectOrder);
5679
5680 // exécution de la requête
5681 $this->addToLog(__METHOD__."() : sql query: $sql", VERBOSE_MODE);
5682 $res = $this->db->execute($this->db->prepare($sql));
5683 if ($this->isDatabaseError($res, true)) {
5684 $this->addToLog(
5685 __METHOD__."(): erreur SQL sur la table '".$objectTemplate->table."': ".
5686 $res->getMessage(), DEBUG_MODE);
5687 return false;
5688 }
5689
5690 // recuperation des informations sur la structure de la table
5691 // ??? compatibilite POSTGRESQL (len = -1, type vide, flags vide)
5692 $info = $res->tableInfo();
5693
5694 // Recuperation des infos
5695 foreach ($info as $index => $item) {
5696 $objectTemplate->champs[$index] = $item['name'];
5697 $objectTemplate->longueurMax[$index] = $item['len'];
5698 $objectTemplate->type[$index] = $item['type'];
5699 $objectTemplate->flags[$index] = $item['flags'];
5700 }
5701
5702 // création et remplissage des objets
5703 $allObjects = array();
5704 while ($row = $res->fetchRow()) {
5705 $object = new $type(null);
5706 foreach(array('champs', 'longueurMax', 'type', 'flags') as $key) {
5707 $object->$key = $objectTemplate->$key;
5708 }
5709 foreach ($row as $index => $item) {
5710 $object->val[$index] = $item;
5711 }
5712 $allObjects[] = $object;
5713 }
5714
5715 return $allObjects;
5716 }
5717
5718 /**
5719 * Cette méthode permet de transformer une chaine de caractère standard
5720 * en une chaine sans caractères spéciaux ni accents.
5721 *
5722 * NOTE: la convertion est de 1 caractère vers 1 caractères afin de permettre
5723 * à la fonction 'sqlNormalizeSearchValue()' d'effectuer la même conversion.
5724 *
5725 * @param string $string La chaine de caractère à normaliser
5726 *
5727 * @return string La chaine de caractère normalisée
5728 */
5729 public function normalize_string($string = "") {
5730 //
5731 $invalid = array('Š'=>'S', 'š'=>'s', 'Đ'=>'D', 'đ'=>'d', 'Ž'=>'Z',
5732 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c', 'À'=>'A', 'Á'=>'A',
5733 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E',
5734 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I',
5735 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O',
5736 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'S',
5737 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a',
5738 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i',
5739 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o',
5740 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y',
5741 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r', "`" => "_",
5742 "„" => "_", "`" => "_", "´" => "_", "“" => "_", "”" => "_",
5743 "{" => "_", "}" => "_", "~" => "_", "–" => "-",
5744 "’" => "_", "(" => "_", ")" => "_", "/"=>"-", "'"=>"_",
5745 );
5746 $string = str_replace(array_keys($invalid), array_values($invalid), $string);
5747 $string = strtolower($string);
5748 return $string;
5749 }
5750
5751 /**
5752 * Transforme une chaine en une suite d'instruction pSQL pour la normaliser.
5753 * En l'occurence cela supprimer les accents et la passe en casse minuscule.
5754 *
5755 * NOTE: la convertion est de 1 caractère vers 1 caractères afin de permettre
5756 * à la fonction 'normalize_string()' d'effectuer la même conversion.
5757 *
5758 * @param string $value Chaîne recherchée à normaliser.
5759 *
5760 * @return string
5761 */
5762 public function sqlNormalizeSearchValue($value){
5763 $value = html_entity_decode($value, ENT_QUOTES);
5764 // échappement des caractères spéciaux
5765 $value = pg_escape_string($value);
5766 // encodage
5767 if (DBCHARSET != 'UTF8' and HTTPCHARSET == 'UTF-8') {
5768 $value = utf8_decode($value);
5769 }
5770 // normalisation des caractères
5771 $value = " TRANSLATE(LOWER(".
5772 $value."::varchar), ".
5773 "'ŠšĐđŽžČčĆćÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýþÿŔŕ`„´“”{}~–’()/''', ".
5774 "'SsDdZzCcCcAAAAAAACEEEEIIIINOOOOOOUUUUYBSaaaaaaaceeeeiiiionoooooouuuybyRr________-___-_') ";
5775 return $value;
5776 }
5777
5778 /**
5779 * Retourne une valeur unique récupérée à partir d'une requête SQL "basique".
5780 *
5781 * Il faut fournir une (ou deux) valeur filtre qui va sélectionner la ligne à partir
5782 * de laquelle récupérer la valeur souhaitée.
5783 *
5784 * @param string $table La table sur laquelle faire la requête
5785 * @param string $columnSelect La colonne permettant de récupérer la valeur recherchée
5786 * @param string $columnWhere La colonne à laquelle la valeur '$value' va être comparée
5787 * @param string $value La valeur filtre qui permet de sélectionner une ligne
5788 * @param string $extraTable Une table supplémentaire pour tester une seconde valeur
5789 * @param string $extraColumn Une colonne supplémentaire pour tester une seconde valeur
5790 * @param string $extraValue La seconde valeur 'filtre' pour mieux sélectionner une ligne
5791 * @param bool $normalizeColumn Si vaut 'true' alors on normalise la colonne '$columnWhere'
5792 * @param bool $normalizeValue Si vaut 'true' alors on normalise la valeur '$value'
5793 */
5794 public function getSingleSqlValue(
5795 string $table, string $columnSelect, string $columnWhere, string $value,
5796 string $extraTable = null, string $extraColumn = null, string $extraValue = null,
5797 bool $normalizeColumn = true, bool $normalizeValue = true) {
5798
5799 // colonnes utilisées pour la clause WHERE
5800 $columnNormalized = $columnWhere;
5801 if ($normalizeColumn) {
5802 $columnNormalized = $this->sqlNormalizeSearchValue($columnWhere);
5803 }
5804 $valueNormalized = $this->db->escapeSimple($value);
5805 if ($normalizeValue) {
5806 $valueNormalized = $this->db->escapeSimple(strtolower(
5807 $this->normalize_string($value)));
5808 }
5809 // valeur utilisée pour la clause WHERE
5810 if (ctype_digit($value)) {
5811 $columnNormalized = "$table.$table";
5812 $valueNormalized = intval($value);
5813 }
5814
5815 // SQL de base
5816 $sql = sprintf("SELECT $columnSelect FROM ".DB_PREFIXE."$table WHERE %s = '%s'",
5817 $columnNormalized,
5818 $valueNormalized);
5819
5820 // s'il y a une colonne supplémentaire à ajouter à la clause WHERE
5821 if (! empty($extraColumn)) {
5822
5823 // si cette colonne provient d'une autre table, on ajoute cette autre table
5824 $tables = array($table);
5825 if (! empty($extraTable) && $extraTable != $table) {
5826 $tables[] = $extraTable;
5827 }
5828
5829 // construit le SQL avec les deux colonnes dans la clause WHERE
5830 $columnsNormalized = array($columnNormalized, $extraColumn);
5831 $valuesNormalized = array($valueNormalized, $extraValue);
5832 $sql = sprintf("SELECT $columnSelect FROM %s WHERE %s",
5833 DB_PREFIXE.implode(', '.DB_PREFIXE, $tables),
5834 implode(' AND ', array_map(
5835 function ($col, $val) {
5836 return "$col = '$val'";
5837 },
5838 $columnsNormalized, $valuesNormalized)));
5839 }
5840
5841 // exécute la requête en demandant en résultat une unique valeur
5842 $res = $this->db->getOne($sql);
5843 $this->addToLog(__METHOD__."() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
5844
5845 // vérifie les erreurs
5846 if ($this->isDatabaseError($res, true) === true) {
5847 throw new RuntimeException(__("Erreur de base de données.").' '.
5848 sprintf(__("Détails: %s"), $res->getMessage()));
5849 }
5850 // si la ligne n'a pas été trouvée
5851 if ($res === null) {
5852 throw new InvalidArgumentException(__(
5853 "L'objet $table '$valueNormalized' n'existe pas."));
5854 }
5855
5856 // renvoie la valeur trouvée
5857 return $res;
5858 }
5859
5860 /**
5861 * Vérifie si la saisie du numéro complet est proche de la numérotation
5862 * réglementaire d'un dossier d'urbanisme (code de l'urbanisme A423-1 à A423-4)
5863 *
5864 * @param string $numero [description]
5865 * @param array $extra_args [description]
5866 * @return [type] [description]
5867 */
5868 public function numerotation_urbanisme(string $numero, array $extra_args = []) {
5869 // Masques
5870 $base = '(?P<type>[A-Z]{2})(?P<departement>[0-9]{3}|02[AB])(?P<commune>[0-9]{3})'.
5871 '(?P<annee>[0-9]{2})(?P<division>[A-Z0-9]{1})(?P<numero>[0-9]{4})';
5872 $pattern_di = "/^$base(?P<suffixe>[A-Z]{1,5})?(?P<num_suffixe>[0-9]{1,2})?$/i";
5873 $pattern_da = "/^$base$/i";
5874
5875 $result = array(
5876 "di" => array(),
5877 "da" => array(),
5878 );
5879
5880 if (preg_match($pattern_di, $numero, $matches_di) === 1) {
5881 $result["di"] = $matches_di;
5882 $numero = $matches_di['type'].$matches_di['departement'].$matches_di['commune'].
5883 $matches_di['annee'].$matches_di['division'].$matches_di['numero'];
5884 }
5885 if (preg_match($pattern_da, $numero, $matches_da) === 1) {
5886 $result["da"] = $matches_da;
5887 }
5888
5889 return $result;
5890 }
5891 }

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26