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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26