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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26