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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 14542 - (hide annotations)
Thu Apr 20 13:21:47 2023 UTC (21 months, 1 week ago) by softime
File size: 249841 byte(s)
chore(branch): fusion de la branche d'intégration 5.17.0-develop dans le trunk

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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26