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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26