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

Diff of /trunk/obj/om_widget.class.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 13136 by softime, Thu Sep 15 19:43:25 2022 UTC revision 13137 by softime, Thu Oct 27 20:34:03 2022 UTC
# Line 30  class om_widget extends om_widget_core { Line 30  class om_widget extends om_widget_core {
30      ';      ';
31    
32      /**      /**
33         * Tableau contenant la liste des filtres pouvant être utilisé
34         * dans les widgets.
35         */
36        protected $existing_filters = array(
37            'division',
38            'instructeur',
39            'instructeur_secondaire',
40            'instructeur_ou_instructeur_secondaire'
41        );
42    
43        /**
44       * Cette méthode retourne un arbre html représentant un raccourci.       * Cette méthode retourne un arbre html représentant un raccourci.
45       *       *
46       * Un raccourci est composé d'un lien, d'une image et d'une description.       * Un raccourci est composé d'un lien, d'une image et d'une description.
# Line 251  class om_widget extends om_widget_core { Line 262  class om_widget extends om_widget_core {
262                  %s                  %s
263              FROM              FROM
264                  %s                  %s
265                    %s
266              %s              %s
267                  %s                  %s
268                    %s
269              %s              %s
270              %s",              %s",
271              $conf["query_ct_select"],              $conf["query_ct_select"],
272              $conf["query_ct_from"],              $conf["query_ct_from"],
273                '%s',
274              trim($conf["query_ct_where"]) !== '' ? "WHERE" : '',              trim($conf["query_ct_where"]) !== '' ? "WHERE" : '',
275              $conf["query_ct_where"],              $conf["query_ct_where"],
276                '%s', // emplacement pour les conditions du filtre
277              $conf["query_ct_orderby"],              $conf["query_ct_orderby"],
278              $conf["query_ct_limit"]              $conf["query_ct_limit"]
279          );          );
280            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
281            $sqlFilter = $this->get_query_filter(
282                $sql,
283                $conf['arguments']['filtre']
284            );
285            $sql = sprintf(
286                $sql,
287                $sqlFilter["FROM"],
288                $sqlFilter["WHERE"]
289            );
290    
291          $search = array(          $search = array(
292              "valide" => "false",              "valide" => "false",
# Line 274  class om_widget extends om_widget_core { Line 299  class om_widget extends om_widget_core {
299          }          }
300    
301          // Récupération de l'identifiant de l'instructeur pour la recherche avancée          // Récupération de l'identifiant de l'instructeur pour la recherche avancée
302          if ($conf['arguments']['filtre'] == 'instructeur') {          if ($conf['arguments']['filtre'] == 'instructeur' || $conf['arguments']['filtre'] == 'instructeur_secondaire') {
303              $select_instructeur = sprintf(              $select_instructeur = sprintf(
304                  "SELECT                  'SELECT
305                      dossier.instructeur                      instructeur.instructeur
306                  FROM                  FROM
307                      %s",                      %1$sinstructeur
308                  $conf["query_ct_from"]                      LEFT JOIN %1$som_utilisateur
309                            ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
310                    WHERE
311                        om_utilisateur.login = \'%2$s\'',
312                    DB_PREFIXE,
313                    $this->f->db->escapeSimple($_SESSION['login'])
314              );              );
315    
316              // Execution de la requête              // Execution de la requête
# Line 288  class om_widget extends om_widget_core { Line 318  class om_widget extends om_widget_core {
318              $this->addToLog(__METHOD__."(): db->getone(\"".$select_instructeur."\");", VERBOSE_MODE);              $this->addToLog(__METHOD__."(): db->getone(\"".$select_instructeur."\");", VERBOSE_MODE);
319              $this->f->isDatabaseError($id_instructeur);              $this->f->isDatabaseError($id_instructeur);
320    
321              $search['instructeur'] = $id_instructeur;              $conf['arguments']['filtre'] == 'instructeur' ?
322                    ($search['instructeur'] = $id_instructeur) :
323                    ($search['instructeur_2'] = $id_instructeur);
324          }          }
325    
326          // Récupération de l'identifiant de la division pour la recherche avancée          // Récupération de l'identifiant de la division pour la recherche avancée
327          if ($conf['arguments']['filtre'] == 'division') {          if ($conf['arguments']['filtre'] == 'division') {
328              $select_division = sprintf(              $search['division'] = $_SESSION['division'];
                 "SELECT  
                     division.division  
                 FROM  
                     %s",  
                 $conf["query_ct_from"]  
             );  
   
             // Execution de la requête  
             $id_division = $this->f->db->getone($select_division);  
             $this->addToLog(__METHOD__."(): db->getone(\"".$select_division."\");", VERBOSE_MODE);  
             $this->f->isDatabaseError($id_division);  
   
             $search['division'] = $id_division;  
329          }          }
330    
331          // Récupération de la collectivité pour la recherche avancée          // Récupération de la collectivité pour la recherche avancée
# Line 324  class om_widget extends om_widget_core { Line 343  class om_widget extends om_widget_core {
343              $this->template_help,              $this->template_help,
344              $conf["message_help"]              $conf["message_help"]
345          );          );
   
346          // Affichage du widget avec une bulle          // Affichage du widget avec une bulle
347          if ($conf["arguments"]["affichage"] === "nombre") {          if ($conf["arguments"]["affichage"] === "nombre") {
348              // Execution de la requête              // Execution de la requête
# Line 490  class om_widget extends om_widget_core { Line 508  class om_widget extends om_widget_core {
508                  //                  //
509                  $elem = trim($arguments[$key]);                  $elem = trim($arguments[$key]);
510                  if ($key === "filtre"                  if ($key === "filtre"
511                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "division", "instructeur_secondaire", "aucun"))) {
512                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
513                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
514                      continue;                      continue;
# Line 530  class om_widget extends om_widget_core { Line 548  class om_widget extends om_widget_core {
548          $query_limit = '';          $query_limit = '';
549          // Gestion de l'affichage          // Gestion de l'affichage
550          if ($arguments['affichage'] == 'nombre') {          if ($arguments['affichage'] == 'nombre') {
551              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(DISTINCT(dossier.dossier))";
552              $query_ct_orderby = '';              $query_ct_orderby = '';
553          } else {          } else {
554              $query_ct_select = "              $query_ct_select = "
# Line 549  class om_widget extends om_widget_core { Line 567  class om_widget extends om_widget_core {
567              INNER JOIN %1$sdossier_autorisation_type_detaille              INNER JOIN %1$sdossier_autorisation_type_detaille
568                  ON dossier_instruction_type.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille                  ON dossier_instruction_type.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
569              LEFT JOIN %1$sdemande              LEFT JOIN %1$sdemande
570                  ON demande.dossier_instruction = dossier.dossier',                  ON demande.dossier_instruction = dossier.dossier
571                LEFT JOIN %1$sinstructeur
572                    ON dossier.instructeur=instructeur.instructeur
573                LEFT JOIN %1$som_utilisateur
574                    ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
575                LEFT JOIN %1$sdivision
576                    ON dossier.division=division.division',
577              DB_PREFIXE              DB_PREFIXE
578          );          );
579    
# Line 566  class om_widget extends om_widget_core { Line 590  class om_widget extends om_widget_core {
590          }          }
591    
592          $query_ct_where_filtre = "";          $query_ct_where_filtre = "";
         $filtre = $arguments["filtre"];  
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_filtre_instructeur = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         } else {  
             $query_ct_where_filtre_instructeur = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_filtre_division = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         } else {  
             $query_ct_where_filtre_division = " LEFT JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division";  
         }  
593    
594          //          //
595          $query_ct_where = ' dossier_instruction_type.sous_dossier IS NOT TRUE';          $query_ct_where = ' dossier_instruction_type.sous_dossier IS NOT TRUE';
# Line 621  class om_widget extends om_widget_core { Line 618  class om_widget extends om_widget_core {
618              $message_help = $arguments["message_help"];              $message_help = $arguments["message_help"];
619          }          }
620    
         // Filtrage sur l'instructeur ou la division  
         $query_ct_where_filtre = $query_ct_where_filtre_instructeur.$query_ct_where_filtre_division;  
   
621          // Construction du FROM          // Construction du FROM
622          $query_ct_from = $query_ct_from.$query_ct_join_collectivite_filter.$query_ct_where_filtre;          $query_ct_from = $query_ct_from.$query_ct_join_collectivite_filter;
623    
624          // Construction du WHERE          // Construction du WHERE
625          $query_ct_where = sprintf(          $query_ct_where = sprintf(
# Line 681  class om_widget extends om_widget_core { Line 675  class om_widget extends om_widget_core {
675          );          );
676          $arguments = $this->get_arguments($content, $params);          $arguments = $this->get_arguments($content, $params);
677          $conf = $this->get_config_suivi_instruction_parametrable($arguments);          $conf = $this->get_config_suivi_instruction_parametrable($arguments);
678            $filtre = $conf["arguments"]["filtre"];
679    
680          $sql = sprintf(          $sql = sprintf(
681              "SELECT              "SELECT
682                  %s                  %s
683              FROM              FROM
684                  %s                  %s
685                    %s
686              %s              %s
687                  %s                  %s
688                    %s
689              %s              %s
690              %s",              %s",
691              $conf["query_ct_select"],              $conf["query_ct_select"],
692              $conf["query_ct_from"],              $conf["query_ct_from"],
693                '%s', // emplacement pour les jointure du filtre
694              trim($conf["query_ct_where"]) !== '' ? "WHERE" : '',              trim($conf["query_ct_where"]) !== '' ? "WHERE" : '',
695              $conf["query_ct_where"],              $conf["query_ct_where"],
696                '%s', // emplacement pour les conditions du filtre
697              $conf["query_ct_orderby"],              $conf["query_ct_orderby"],
698              $conf["query_ct_limit"]              $conf["query_ct_limit"]
699          );          );
700            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
701            $sqlFilter = $this->get_query_filter(
702                $sql,
703                $conf['arguments']['filtre']
704            );
705            $sql = sprintf(
706                $sql,
707                $sqlFilter["FROM"],
708                $sqlFilter["WHERE"]
709            );
710    
711          // Affichage du message d'informations          // Affichage du message d'informations
712          printf(          printf(
# Line 1059  class om_widget extends om_widget_core { Line 1068  class om_widget extends om_widget_core {
1068                  //                  //
1069                  $elem = trim($arguments[$key]);                  $elem = trim($arguments[$key]);
1070                  if ($key === "filtre"                  if ($key === "filtre"
1071                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "division", "instructeur_secondaire", "aucun"))) {
1072                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
1073                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
1074                      continue;                      continue;
# Line 1245  class om_widget extends om_widget_core { Line 1254  class om_widget extends om_widget_core {
1254                  ON dossier_instruction_type.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille                  ON dossier_instruction_type.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1255              INNER JOIN %1$sinstruction              INNER JOIN %1$sinstruction
1256                  ON instruction.dossier = dossier.dossier                  ON instruction.dossier = dossier.dossier
1257                  AND (instruction.date_envoi_signature is NULL AND instruction.instruction = (SELECT MAX(instruction.instruction) FROM %1$sinstruction WHERE instruction.dossier = dossier.dossier) OR instruction.date_envoi_signature = (SELECT MAX(instruction.date_envoi_signature) FROM %1$sinstruction WHERE instruction.dossier = dossier.dossier))',                  AND (instruction.date_envoi_signature is NULL
1258                        AND instruction.instruction = (
1259                            SELECT
1260                                MAX(instruction.instruction)
1261                            FROM
1262                                %1$sinstruction
1263                            WHERE
1264                                instruction.dossier = dossier.dossier
1265                        ) OR instruction.date_envoi_signature = (
1266                            SELECT
1267                                MAX(instruction.date_envoi_signature)
1268                            FROM
1269                                %1$sinstruction
1270                            WHERE
1271                                instruction.dossier = dossier.dossier
1272                        )
1273                    )
1274                LEFT JOIN %1$sinstructeur
1275                    ON dossier.instructeur=instructeur.instructeur
1276                LEFT JOIN %1$som_utilisateur
1277                    ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
1278                LEFT JOIN %1$sdivision
1279                    ON dossier.division=division.division',
1280              DB_PREFIXE              DB_PREFIXE
1281          );          );
1282    
# Line 1260  class om_widget extends om_widget_core { Line 1291  class om_widget extends om_widget_core {
1291              ON dossier.om_collectivite=om_collectivite.om_collectivite              ON dossier.om_collectivite=om_collectivite.om_collectivite
1292              ";              ";
1293          }          }
   
         $query_ct_where_filtre = "";  
         $filtre = $arguments["filtre"];  
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_filtre_instructeur = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         } else {  
             $query_ct_where_filtre_instructeur = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_filtre_division = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         } else {  
             $query_ct_where_filtre_division = " LEFT JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division";  
         }  
1294                    
1295          // Type d'évènement jointure          // Type d'évènement jointure
1296          $query_ct_from_filtre_evenement_type = '';          $query_ct_from_filtre_evenement_type = '';
# Line 1587  class om_widget extends om_widget_core { Line 1589  class om_widget extends om_widget_core {
1589          }          }
1590    
1591          // Filtrage sur l'instructeur ou la division          // Filtrage sur l'instructeur ou la division
1592          $query_ct_where_filtre = $query_ct_where_filtre_instructeur.$query_ct_where_filtre_division.$query_ct_from_filtre_evenement_type.$query_ct_from_filtre_signataire_description.$query_ct_from_filtre_petitionnaire.$query_ct_from_filtre_statut_dossier;          $query_ct_where_filtre = $query_ct_from_filtre_evenement_type.
1593                $query_ct_from_filtre_signataire_description.
1594                $query_ct_from_filtre_petitionnaire.
1595                $query_ct_from_filtre_statut_dossier;
1596    
1597          // Construction du FROM          // Construction du FROM
1598          $query_ct_from = $query_ct_from.$query_ct_join_collectivite_filter.$query_ct_where_filtre;          $query_ct_from = $query_ct_from.
1599                $query_ct_join_collectivite_filter.
1600                $query_ct_where_filtre;
1601    
1602          $tab_criteres = array(          $tab_criteres = array(
1603              'statut_signature' => $query_ct_where_statut_signature_filter,              'statut_signature' => $query_ct_where_statut_signature_filter,
# Line 2005  class om_widget extends om_widget_core { Line 2012  class om_widget extends om_widget_core {
2012                      $arguments[$key] = explode(";", $elem);                      $arguments[$key] = explode(";", $elem);
2013                      continue;                      continue;
2014                  } elseif ($key === "filtre"                  } elseif ($key === "filtre"
2015                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "instructeur_secondaire", "division", "aucun"))) {
2016                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
2017                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
2018                      continue;                      continue;
# Line 2117  class om_widget extends om_widget_core { Line 2124  class om_widget extends om_widget_core {
2124          )          )
2125              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
2126                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
2127          %s          LEFT JOIN ".DB_PREFIXE."instructeur
2128          %s              ON dossier.instructeur=instructeur.instructeur
2129            LEFT JOIN ".DB_PREFIXE."om_utilisateur
2130                ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
2131            LEFT JOIN ".DB_PREFIXE."division
2132                ON dossier.division=division.division
2133          %s          %s
2134          ";          ";
2135    
2136          $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
2137          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         } else {  
             $query_ct_where_instructeur_filter = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         } else {  
             $query_ct_where_division_filter = " LEFT JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division";  
         }  
2138          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
2139          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
2140          // collectivité          // collectivité
# Line 2165  class om_widget extends om_widget_core { Line 2149  class om_widget extends om_widget_core {
2149              ";              ";
2150          }          }
2151    
2152          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
2153          // WHERE - COMMON          // WHERE - COMMON
2154          $query_ct_where_common = "          $query_ct_where_common = "
2155          groupe.code != 'CTX'          groupe.code != 'CTX'
# Line 2237  class om_widget extends om_widget_core { Line 2221  class om_widget extends om_widget_core {
2221              case "instructeur" :              case "instructeur" :
2222                  $message_filtre = " "._("(filtrés par instructeur)");                  $message_filtre = " "._("(filtrés par instructeur)");
2223                  break;                  break;
2224                case "instructeur_secondaire" :
2225                    $message_filtre = " "._("(filtrés par instructeur secondaire)");
2226                    break;
2227              case "division" :              case "division" :
2228                  $message_filtre = " "._("(filtrés par division)");                  $message_filtre = " "._("(filtrés par division)");
2229                  break;                  break;
# Line 2326  class om_widget extends om_widget_core { Line 2313  class om_widget extends om_widget_core {
2313              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
2314          }          }
2315    
2316          $query = sprintf("          $query = sprintf(
2317              SELECT              "SELECT
2318                  %s                  %s
2319              FROM              FROM
2320                  %s                  %s
2321                    %s
2322              WHERE              WHERE
2323                  %s                  %s
2324                  %s                  %s
2325                  %s                  %s
2326                  %s                  %s
2327                  %s",                  %s
2328                %s",
2329              $query_ct_select,              $query_ct_select,
2330              $conf["query_ct_from"],              $conf["query_ct_from"],
2331                '%s', // emplacement pour les jointure du filtre
2332              $conf["query_ct_where_common"],              $conf["query_ct_where_common"],
2333              $conf["query_ct_where_tacite_filter"],              $conf["query_ct_where_tacite_filter"],
2334              $conf["query_ct_where_datd_filter"],              $conf["query_ct_where_datd_filter"],
2335              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
2336                '%s', // emplacement pour les conditions du filtre
2337              $query_ct_orderby              $query_ct_orderby
2338          );          );
2339            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
2340            $sqlFilter = $this->get_query_filter(
2341                $query,
2342                $conf['arguments']['filtre']
2343            );
2344            $query = sprintf(
2345                $query,
2346                $sqlFilter["FROM"],
2347                $sqlFilter["WHERE"]
2348            );
2349    
2350          /**          /**
2351           * Templates nécessaires à l'affichage du widget           * Templates nécessaires à l'affichage du widget
# Line 2575  class om_widget extends om_widget_core { Line 2576  class om_widget extends om_widget_core {
2576              //              //
2577              $arguments[$key] = $value;              $arguments[$key] = $value;
2578          }          }
2579            // Utilisation du filtre instructeur dédié au contentieux si le filtre
2580            // paramétré est "instructeur"
2581            if (! empty($arguments["filtre"]) && $arguments["filtre"] === 'instructeur') {
2582                $arguments["filtre"] = 'instructeur_ou_instructeur_secondaire';
2583            }
2584          $filtre = $arguments["filtre"];          $filtre = $arguments["filtre"];
2585    
2586          // SELECT - CHAMPAFFICHE          // SELECT - CHAMPAFFICHE
# Line 2683  class om_widget extends om_widget_core { Line 2689  class om_widget extends om_widget_core {
2689              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
2690                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
2691          %s          %s
         %s  
2692          ";          ";
2693    
2694          $query_ct_from_collectivite_filter = "";          $query_ct_from_collectivite_filter = "";
         $query_ct_from_instructeur_filter = "";  
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             $query_ct_from_instructeur_filter = "  
                 JOIN ".DB_PREFIXE."instructeur  
                     ON dossier.instructeur=instructeur.instructeur  
                         OR dossier.instructeur_2=instructeur.instructeur  
                 JOIN ".DB_PREFIXE."om_utilisateur  
                     ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                         AND om_utilisateur.login='".$_SESSION['login']."'  
                 ";  
         }  
         else {  
             $query_ct_from_instructeur_filter = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
2695    
2696          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
2697          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
# Line 2721  class om_widget extends om_widget_core { Line 2708  class om_widget extends om_widget_core {
2708              ";              ";
2709          }          }
2710    
2711          $query_ct_from = sprintf($query_ct_from, $query_ct_from_instructeur_filter, $query_ct_from_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_from_collectivite_filter);
2712    
2713          // WHERE - COMMON          // WHERE - COMMON
2714          $query_ct_where_common = "          $query_ct_where_common = "
# Line 2744  class om_widget extends om_widget_core { Line 2731  class om_widget extends om_widget_core {
2731          $message_filtre = "";          $message_filtre = "";
2732          //          //
2733          switch ($filtre) {          switch ($filtre) {
2734              case "instructeur":              case "instructeur_ou_instructeur_secondaire":
2735                  $message_filtre = " "._("dont je suis l'instructeur");                  $message_filtre = " "._("dont je suis l'instructeur");
2736                  break;                  break;
2737              case "aucun":              case "aucun":
# Line 2802  class om_widget extends om_widget_core { Line 2789  class om_widget extends om_widget_core {
2789          $filtre = $conf["arguments"]["filtre"];          $filtre = $conf["arguments"]["filtre"];
2790          // Définit l'objet cible          // Définit l'objet cible
2791          $obj = 'dossier_contentieux_tous_recours';          $obj = 'dossier_contentieux_tous_recours';
2792          if ($filtre === 'instructeur') {          if ($filtre === 'instructeur' || $filtre = 'instructeur_ou_instructeur_secondaire') {
2793              //              //
2794              $obj = 'dossier_contentieux_mes_recours';              $obj = 'dossier_contentieux_mes_recours';
2795          }          }
# Line 2823  class om_widget extends om_widget_core { Line 2810  class om_widget extends om_widget_core {
2810              $query_ct_orderby = "";              $query_ct_orderby = "";
2811              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
2812          }          }
2813    
2814          $query = sprintf("          $query = sprintf("
2815              SELECT              SELECT
2816                  %s                  %s
2817              FROM              FROM
2818                  %s                  %s
2819                    %s
2820              WHERE              WHERE
2821                  %s                  %s
2822                  %s",                  %s
2823                    %s
2824                %s",
2825              $query_ct_select,              $query_ct_select,
2826              $conf["query_ct_from"],              $conf["query_ct_from"],
2827                '%s', // emplacement pour les jointure du filtre
2828              $conf["query_ct_where"],              $conf["query_ct_where"],
2829                $conf["query_ct_where_groupe"],
2830                '%s', // emplacement pour les conditions du filtre
2831              $query_ct_orderby              $query_ct_orderby
2832          );          );
2833            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
2834            $sqlFilter = $this->get_query_filter(
2835                $query,
2836                $conf['arguments']['filtre']
2837            );
2838            $query = sprintf(
2839                $query,
2840                $sqlFilter["FROM"],
2841                $sqlFilter["WHERE"]
2842            );
2843    
2844          /**          /**
2845           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
# Line 3001  class om_widget extends om_widget_core { Line 3005  class om_widget extends om_widget_core {
3005    
3006    
3007      /**      /**
      * Cette méthode permet de récupérer la configuration du widget 'Mes  
      * infractions'.  
      *  
      * @return array  
      */  
     function get_config_dossier_contentieux_infraction($arguments) {  
         include "../sql/pgsql/app_om_tab_common_select.inc.php";  
         // Initialisation du tableau des paramètres avec ses valeur par défaut  
         $arguments_default = array(  
             "filtre" => "instructeur",  
             "affichage" => "liste"  
         );  
         // Vérification des arguments  
         foreach ($arguments_default as $key => $value) {  
             //  
             if (isset($arguments[$key])) {  
                 //  
                 $elem = trim($arguments[$key]);  
                 //  
                 if ($key === "filtre"  
                     && in_array($elem, array("instructeur", "aucun"))) {  
                     // La valeur doit être dans cette liste  
                     $arguments[$key] = $elem;  
                     continue;  
                 } elseif ($key === "affichage"  
                 && in_array($elem, array('liste', 'nombre'))) {  
                     // La valeur doit être dans cette liste  
                     $arguments[$key] = $elem;  
                     continue;  
                 }  
             }  
             //  
             $arguments[$key] = $value;  
         }  
         $filtre = $arguments["filtre"];  
   
         // SELECT - CHAMPAFFICHE  
         //  
         $trim_concat_terrain = '  
         TRIM(  
             CASE  
                 WHEN dossier.adresse_normalisee IS NULL  
                     OR TRIM(dossier.adresse_normalisee) = \'\'  
                 THEN  
                     CONCAT_WS(  
                         \' \',  
                         dossier.terrain_adresse_voie_numero,  
                         dossier.terrain_adresse_voie,  
                         dossier.terrain_adresse_code_postal  
                     )  
                 ELSE  
                     dossier.adresse_normalisee  
             END  
         ) as "'.__("localisation").'"';  
         //  
         $case_contrevenant = "  
         CASE WHEN demandeur_contrevenant.qualite = 'particulier'  
             THEN TRIM(CONCAT(demandeur_contrevenant.particulier_nom, ' ', demandeur_contrevenant.particulier_prenom))  
             ELSE TRIM(CONCAT(demandeur_contrevenant.personne_morale_raison_sociale, ' ', demandeur_contrevenant.personne_morale_denomination))  
         END  
         ";  
         //  
         $query_ct_select_champaffiche = array(  
             'dossier.dossier as "'._("dossier").'"',  
             'dossier.geom as "geom_picto"',  
             'demande.source_depot as "demat_picto"',  
             $select__dossier_libelle__column_as,  
             $trim_concat_terrain,  
             $case_contrevenant.' as "'._("contrevenant").'"',  
             'donnees_techniques.ctx_reference_dsj as "'._("ctx_reference_dsj").'"',  
             'to_char(dossier.date_premiere_visite ,\'DD/MM/YYYY\') as "'._("date_premiere_visite").'"',  
             'to_char(dossier.date_derniere_visite ,\'DD/MM/YYYY\') as "'._("date_derniere_visite").'"',  
             'etat.libelle as "'._("etat").'"',  
         );  
   
         /**  
          * Construction de la requête  
          */  
         // SELECT  
         $query_ct_select = "  
         dossier.dossier,  
         $select__dossier_libelle__column as dossier_libelle,  
         dossier.date_depot  
         ";  
   
         // FROM  
         $query_ct_from =  
         DB_PREFIXE."dossier  
         LEFT JOIN (  
             SELECT *  
             FROM ".DB_PREFIXE."lien_dossier_demandeur  
             INNER JOIN ".DB_PREFIXE."demandeur  
                 ON demandeur.demandeur = lien_dossier_demandeur.demandeur  
             WHERE lien_dossier_demandeur.petitionnaire_principal IS TRUE  
             AND LOWER(demandeur.type_demandeur) = LOWER('petitionnaire')  
         ) as demandeur  
             ON demandeur.dossier = dossier.dossier  
         INNER JOIN ".DB_PREFIXE."etat  
             ON dossier.etat = etat.etat%s  
         LEFT JOIN ".DB_PREFIXE."dossier_autorisation  
             ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation  
         LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille  
             ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_autorisation.dossier_autorisation_type_detaille  
         LEFT JOIN ".DB_PREFIXE."division  
             ON dossier.division = division.division  
         LEFT JOIN ".DB_PREFIXE."avis_decision  
            ON avis_decision.avis_decision=dossier.avis_decision  
         LEFT OUTER JOIN ".DB_PREFIXE."arrondissement  
             ON arrondissement.code_postal = dossier.terrain_adresse_code_postal  
         LEFT JOIN (  
             SELECT *  
             FROM ".DB_PREFIXE."lien_dossier_demandeur  
             INNER JOIN ".DB_PREFIXE."demandeur  
                 ON demandeur.demandeur = lien_dossier_demandeur.demandeur  
             WHERE lien_dossier_demandeur.petitionnaire_principal IS TRUE  
             AND LOWER(demandeur.type_demandeur) = LOWER('contrevenant')  
         ) as demandeur_contrevenant  
             ON demandeur_contrevenant.dossier = dossier.dossier  
         INNER JOIN (  
             SELECT  
             ctx_reference_dsj,  
             ctx_infraction,  
             dossier_instruction  
             FROM ".DB_PREFIXE."donnees_techniques  
         ) as donnees_techniques  
             ON donnees_techniques.dossier_instruction = dossier.dossier  
         LEFT JOIN (".DB_PREFIXE."demande  
             JOIN ".DB_PREFIXE."demande_type  
                 ON demande.demande_type = demande_type.demande_type  
         )  
             ON demande.dossier_instruction = dossier.dossier  
                 AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type  
         %s  
         %s  
         ";  
   
         $query_ct_from_collectivite_filter = "";  
         $query_ct_from_instructeur_filter = "";  
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             $query_ct_from_instructeur_filter = "  
                 JOIN ".DB_PREFIXE."instructeur  
                     ON dossier.instructeur=instructeur.instructeur  
                         OR dossier.instructeur_2=instructeur.instructeur  
                 JOIN ".DB_PREFIXE."om_utilisateur  
                     ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                         AND om_utilisateur.login='".$_SESSION['login']."'  
                 ";  
         }  
         else {  
             $query_ct_from_instructeur_filter = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."instructeur as instructeur_2  
                 ON dossier.instructeur_2=instructeur_2.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
   
         // Dans tous les cas si l'utilisateur fait partie d'une collectivité  
         // de niveau 1 (mono), on restreint le listing sur les dossiers de sa  
         // collectivité  
         if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {  
             $query_ct_from_collectivite_filter = " JOIN ".DB_PREFIXE."om_collectivite  
             ON dossier.om_collectivite=om_collectivite.om_collectivite  
             AND om_collectivite.om_collectivite=".$_SESSION['collectivite']."  
             ";  
         }  
         else {  
             $query_ct_from_collectivite_filter = " LEFT JOIN ".DB_PREFIXE."om_collectivite  
             ON dossier.om_collectivite=om_collectivite.om_collectivite  
             ";  
         }  
   
         // Retourne seulement les dossiers en cours d'instruction, lorsque le  
         // filtre sur instructeur est activé  
         $query_ct_where_etat_ctx_filter = "" ;  
         if ($filtre === "instructeur") {  
             $query_ct_where_etat_ctx_filter = " AND etat.statut = 'encours'";  
         }  
   
         $query_ct_from = sprintf(  
             $query_ct_from,  
             $query_ct_where_etat_ctx_filter,  
             $query_ct_from_instructeur_filter,  
             $query_ct_from_collectivite_filter  
         );  
   
         // WHERE - COMMON  
         $query_ct_where_common = "  
             LOWER(dossier_autorisation_type.code) = LOWER('IN')  
         ";  
   
         // ORDER BY  
         $query_ct_orderby = "  
         dossier.date_depot DESC, dossier.dossier DESC  
         ";  
   
         $query_ct_where_groupe = "";  
         // Gestion des groupes et confidentialité  
         include('../sql/pgsql/filter_group_widgets.inc.php');  
   
         /**  
          * Message d'aide  
          */  
         //  
         $message_filtre = "";  
         //  
         switch ($filtre) {  
             case "instructeur":  
                 $message_filtre = " ".__("en cours d'instruction")." ".__("dont je suis l'instructeur");  
                 break;  
             case "aucun":  
                 if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {  
                     $message_filtre = " "._("situés dans ma collectivité");  
                 } else {  
                     $message_filtre = " "._("situés dans toutes les collectivités");  
                 }  
                 break;  
         }  
         //  
         $message_help = sprintf(  
             _("Les dernières infractions%s."),  
             $message_filtre  
         );  
   
         /**  
          * Return  
          */  
         //  
         return array(  
             "arguments" => $arguments,  
             "message_help" => $message_help,  
             "query_ct_select" => $query_ct_select,  
             "query_ct_select_champaffiche" => $query_ct_select_champaffiche,  
             "query_ct_from" => $query_ct_from,  
             "query_ct_where" => $query_ct_where_common,  
             "query_ct_orderby" => $query_ct_orderby  
         );  
     }  
   
     /**  
3008       * WIDGET DASHBOARD - RSS       * WIDGET DASHBOARD - RSS
3009       *       *
3010       * Cette fonction gère l'affichage du widget RSS.       * Cette fonction gère l'affichage du widget RSS.
# Line 3417  class om_widget extends om_widget_core { Line 3180  class om_widget extends om_widget_core {
3180          $filtre = $conf["arguments"]["filtre"];          $filtre = $conf["arguments"]["filtre"];
3181          // Définit l'objet cible          // Définit l'objet cible
3182          $obj = 'dossier_contentieux_toutes_infractions';          $obj = 'dossier_contentieux_toutes_infractions';
3183          if ($filtre === 'instructeur') {          if ($filtre === 'instructeur' || $filtre === 'instructeur_ou_instructeur_secondaire') {
3184              //              //
3185              $obj = 'dossier_contentieux_mes_infractions';              $obj = 'dossier_contentieux_mes_infractions';
3186          }          }
# Line 3437  class om_widget extends om_widget_core { Line 3200  class om_widget extends om_widget_core {
3200              $query_ct_orderby = "";              $query_ct_orderby = "";
3201              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
3202          }          }
3203    
3204          $query = sprintf("          $query = sprintf("
3205              SELECT              SELECT
3206                  %s                  %s
3207              FROM              FROM
3208                  %s                  %s
3209                    %s
3210              WHERE              WHERE
3211                  %s                  %s
3212                  %s",                  %s
3213                %s",
3214              $query_ct_select,              $query_ct_select,
3215              $conf["query_ct_from"],              $conf["query_ct_from"],
3216                '%s', // emplacement pour les jointure du filtre
3217              $conf["query_ct_where"],              $conf["query_ct_where"],
3218                '%s', // emplacement pour les conditions du filtre
3219              $query_ct_orderby              $query_ct_orderby
3220          );          );
3221            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
3222            $sqlFilter = $this->get_query_filter(
3223                $query,
3224                $conf['arguments']['filtre']
3225            );
3226            $query = sprintf(
3227                $query,
3228                $sqlFilter["FROM"],
3229                $sqlFilter["WHERE"]
3230            );
3231            
3232          /**          /**
3233           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
3234           */           */
# Line 3613  class om_widget extends om_widget_core { Line 3391  class om_widget extends om_widget_core {
3391          );          );
3392      }      }
3393    
3394    
3395        /**
3396         * Cette méthode permet de récupérer la configuration du widget 'Mes
3397         * infractions'.
3398         *
3399         * @return array
3400         */
3401        function get_config_dossier_contentieux_infraction($arguments) {
3402            include "../sql/pgsql/app_om_tab_common_select.inc.php";
3403            // Initialisation du tableau des paramètres avec ses valeur par défaut
3404            $arguments_default = array(
3405                "filtre" => "instructeur",
3406                "affichage" => "liste"
3407            );
3408            // Vérification des arguments
3409            foreach ($arguments_default as $key => $value) {
3410                //
3411                if (isset($arguments[$key])) {
3412                    //
3413                    $elem = trim($arguments[$key]);
3414                    //
3415                    if ($key === "filtre"
3416                        && in_array($elem, array("instructeur", "aucun"))) {
3417                        // La valeur doit être dans cette liste
3418                        $arguments[$key] = $elem;
3419                        continue;
3420                    } elseif ($key === "affichage"
3421                    && in_array($elem, array('liste', 'nombre'))) {
3422                        // La valeur doit être dans cette liste
3423                        $arguments[$key] = $elem;
3424                        continue;
3425                    }
3426                }
3427                //
3428                $arguments[$key] = $value;
3429            }
3430            // Utilisation du filtre instructeur dédié au contentieux si le filtre
3431            // paramétré est "instructeur"
3432            if (! empty($arguments["filtre"]) && $arguments["filtre"] === 'instructeur') {
3433                $arguments["filtre"] = 'instructeur_ou_instructeur_secondaire';
3434            }
3435            $filtre = $arguments["filtre"];
3436    
3437            // SELECT - CHAMPAFFICHE
3438            //
3439            $trim_concat_terrain = '
3440            TRIM(
3441                CASE
3442                    WHEN dossier.adresse_normalisee IS NULL
3443                        OR TRIM(dossier.adresse_normalisee) = \'\'
3444                    THEN
3445                        CONCAT_WS(
3446                            \' \',
3447                            dossier.terrain_adresse_voie_numero,
3448                            dossier.terrain_adresse_voie,
3449                            dossier.terrain_adresse_code_postal
3450                        )
3451                    ELSE
3452                        dossier.adresse_normalisee
3453                END
3454            ) as "'.__("localisation").'"';
3455            //
3456            $case_contrevenant = "
3457            CASE WHEN demandeur_contrevenant.qualite = 'particulier'
3458                THEN TRIM(CONCAT(demandeur_contrevenant.particulier_nom, ' ', demandeur_contrevenant.particulier_prenom))
3459                ELSE TRIM(CONCAT(demandeur_contrevenant.personne_morale_raison_sociale, ' ', demandeur_contrevenant.personne_morale_denomination))
3460            END
3461            ";
3462            //
3463            $query_ct_select_champaffiche = array(
3464                'dossier.dossier as "'._("dossier").'"',
3465                'dossier.geom as "geom_picto"',
3466                'demande.source_depot as "demat_picto"',
3467                $select__dossier_libelle__column_as,
3468                $trim_concat_terrain,
3469                $case_contrevenant.' as "'._("contrevenant").'"',
3470                'donnees_techniques.ctx_reference_dsj as "'._("ctx_reference_dsj").'"',
3471                'to_char(dossier.date_premiere_visite ,\'DD/MM/YYYY\') as "'._("date_premiere_visite").'"',
3472                'to_char(dossier.date_derniere_visite ,\'DD/MM/YYYY\') as "'._("date_derniere_visite").'"',
3473                'etat.libelle as "'._("etat").'"',
3474            );
3475    
3476            /**
3477             * Construction de la requête
3478             */
3479            // SELECT
3480            $query_ct_select = "
3481            dossier.dossier,
3482            $select__dossier_libelle__column as dossier_libelle,
3483            dossier.date_depot
3484            ";
3485    
3486            // FROM
3487            $query_ct_from =
3488            DB_PREFIXE."dossier
3489            LEFT JOIN (
3490                SELECT *
3491                FROM ".DB_PREFIXE."lien_dossier_demandeur
3492                INNER JOIN ".DB_PREFIXE."demandeur
3493                    ON demandeur.demandeur = lien_dossier_demandeur.demandeur
3494                WHERE lien_dossier_demandeur.petitionnaire_principal IS TRUE
3495                AND LOWER(demandeur.type_demandeur) = LOWER('petitionnaire')
3496            ) as demandeur
3497                ON demandeur.dossier = dossier.dossier
3498            INNER JOIN ".DB_PREFIXE."etat
3499                ON dossier.etat = etat.etat%s
3500            LEFT JOIN ".DB_PREFIXE."dossier_autorisation
3501                ON dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
3502            LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
3503                ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_autorisation.dossier_autorisation_type_detaille
3504            LEFT JOIN ".DB_PREFIXE."division
3505                ON dossier.division = division.division
3506            LEFT JOIN ".DB_PREFIXE."avis_decision
3507               ON avis_decision.avis_decision=dossier.avis_decision
3508            LEFT OUTER JOIN ".DB_PREFIXE."arrondissement
3509                ON arrondissement.code_postal = dossier.terrain_adresse_code_postal
3510            LEFT JOIN (
3511                SELECT *
3512                FROM ".DB_PREFIXE."lien_dossier_demandeur
3513                INNER JOIN ".DB_PREFIXE."demandeur
3514                    ON demandeur.demandeur = lien_dossier_demandeur.demandeur
3515                WHERE lien_dossier_demandeur.petitionnaire_principal IS TRUE
3516                AND LOWER(demandeur.type_demandeur) = LOWER('contrevenant')
3517            ) as demandeur_contrevenant
3518                ON demandeur_contrevenant.dossier = dossier.dossier
3519            INNER JOIN (
3520                SELECT
3521                ctx_reference_dsj,
3522                ctx_infraction,
3523                dossier_instruction
3524                FROM ".DB_PREFIXE."donnees_techniques
3525            ) as donnees_techniques
3526                ON donnees_techniques.dossier_instruction = dossier.dossier
3527            LEFT JOIN (".DB_PREFIXE."demande
3528                JOIN ".DB_PREFIXE."demande_type
3529                    ON demande.demande_type = demande_type.demande_type
3530            )
3531                ON demande.dossier_instruction = dossier.dossier
3532                    AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
3533            %s
3534            ";
3535    
3536            $query_ct_from_collectivite_filter = "";
3537    
3538            // Dans tous les cas si l'utilisateur fait partie d'une collectivité
3539            // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
3540            // collectivité
3541            if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
3542                $query_ct_from_collectivite_filter = " JOIN ".DB_PREFIXE."om_collectivite
3543                ON dossier.om_collectivite=om_collectivite.om_collectivite
3544                AND om_collectivite.om_collectivite=".$_SESSION['collectivite']."
3545                ";
3546            }
3547            else {
3548                $query_ct_from_collectivite_filter = " LEFT JOIN ".DB_PREFIXE."om_collectivite
3549                ON dossier.om_collectivite=om_collectivite.om_collectivite
3550                ";
3551            }
3552    
3553            // Retourne seulement les dossiers en cours d'instruction, lorsque le
3554            // filtre sur instructeur est activé
3555            $query_ct_where_etat_ctx_filter = "" ;
3556            if ($filtre === "instructeur_ou_instructeur_secondaire") {
3557                $query_ct_where_etat_ctx_filter = " AND etat.statut = 'encours'";
3558            }
3559    
3560            $query_ct_from = sprintf(
3561                $query_ct_from,
3562                $query_ct_where_etat_ctx_filter,
3563                $query_ct_from_collectivite_filter
3564            );
3565    
3566            // WHERE - COMMON
3567            $query_ct_where_common = "
3568                LOWER(dossier_autorisation_type.code) = LOWER('IN')
3569            ";
3570    
3571            // ORDER BY
3572            $query_ct_orderby = "
3573            dossier.date_depot DESC, dossier.dossier DESC
3574            ";
3575    
3576            $query_ct_where_groupe = "";
3577            // Gestion des groupes et confidentialité
3578            include('../sql/pgsql/filter_group_widgets.inc.php');
3579    
3580            /**
3581             * Message d'aide
3582             */
3583            //
3584            $message_filtre = "";
3585            //
3586            switch ($filtre) {
3587                case "instructeur_ou_instructeur_secondaire":
3588                    $message_filtre = " ".__("en cours d'instruction")." ".__("dont je suis l'instructeur");
3589                    break;
3590                case "instructeur_secondaire":
3591                    $message_filtre = " ".__("en cours d'instruction")." ".__("dont je suis l'instructeur secondaire");
3592                    break;
3593                case "aucun":
3594                    if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
3595                        $message_filtre = " "._("situés dans ma collectivité");
3596                    } else {
3597                        $message_filtre = " "._("situés dans toutes les collectivités");
3598                    }
3599                    break;
3600            }
3601            //
3602            $message_help = sprintf(
3603                _("Les dernières infractions%s."),
3604                $message_filtre
3605            );
3606    
3607            /**
3608             * Return
3609             */
3610            //
3611            return array(
3612                "arguments" => $arguments,
3613                "message_help" => $message_help,
3614                "query_ct_select" => $query_ct_select,
3615                "query_ct_select_champaffiche" => $query_ct_select_champaffiche,
3616                "query_ct_from" => $query_ct_from,
3617                "query_ct_where" => $query_ct_where_common,
3618                "query_ct_orderby" => $query_ct_orderby
3619            );
3620        }
3621    
3622      /**      /**
3623       * Cet méthode permet de formater, la chaîne de caractères reçue du       * Cet méthode permet de formater, la chaîne de caractères reçue du
3624       * paramétrage du widget en un tableau de valeurs dont les clés       * paramétrage du widget en un tableau de valeurs dont les clés
# Line 3691  class om_widget extends om_widget_core { Line 3697  class om_widget extends om_widget_core {
3697          /**          /**
3698           * Composition de la requête           * Composition de la requête
3699           */           */
3700          //          $query = sprintf("
3701          $query = sprintf(              SELECT
3702              "SELECT                  COUNT(*)
                 count(*)  
3703              FROM              FROM
3704                  %s                  %s
3705                    %s
3706              WHERE              WHERE
3707                  %s                  %s
3708                    %s
3709                  %s",                  %s",
3710              $conf["query_ct_from"],              $conf["query_ct_from"],
3711                '%s', // emplacement pour les jointure du filtre
3712              $conf["query_ct_where_common"],              $conf["query_ct_where_common"],
3713              $conf["query_ct_where_groupe"]              $conf["query_ct_where_groupe"],
3714                '%s' // emplacement pour les conditions du filtre
3715            );
3716            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
3717            $sqlFilter = $this->get_query_filter(
3718                $query,
3719                $conf['arguments']['filtre']
3720            );
3721            // Pour les messages en plus du filtre ont souhaite récupérer tous les messages
3722            // à destination de la commune pour les collectivité mono
3723            if ($conf['arguments']['filtre'] != 'aucun') {
3724                if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
3725                    // Modifie la condition du filtre pour récupérer les messages voulus (filtre
3726                    // instructeur, instructeur_secondaire ou division) ainsi que les messages de
3727                    // à destination de la commune.
3728                    // Le filtre récupéré a un 'AND' devant la condition pour éviter une erreur de
3729                    // base de donnée on le supprime pour ne récupérer que la condition et pouvoir
3730                    // l'associer à la condition sur le destinataire
3731                    $sqlFilter['WHERE'] = sprintf(
3732                        ' AND (%s %s dossier_message.destinataire = \'commune\')',
3733                        str_replace(' AND ', '', $sqlFilter['WHERE']),
3734                        ! empty($sqlFilter['WHERE']) ? 'OR' : ''
3735                    );
3736                } else {
3737                    // Modifie la condition du filtre pour récupérer les messages voulus (filtre
3738                    // instructeur, instructeur_secondaire ou division) qui sont à destination de
3739                    // l'instructeur
3740                    $sqlFilter['WHERE'] = sprintf(
3741                        ' %s AND dossier_message.destinataire = \'instructeur\'',
3742                        $sqlFilter['WHERE']
3743                    );
3744                }
3745            }
3746            // Construction de la requête en intégrant les filtres
3747            $query = sprintf(
3748                $query,
3749                $sqlFilter["FROM"],
3750                $sqlFilter["WHERE"]
3751          );          );
3752    
3753          /**          /**
# Line 3740  class om_widget extends om_widget_core { Line 3785  class om_widget extends om_widget_core {
3785                  case 'instructeur':                  case 'instructeur':
3786                      $obj_href_more_link = 'messages_mes_retours';                      $obj_href_more_link = 'messages_mes_retours';
3787                      break;                      break;
3788                    case 'instructeur_ou_instructeur_secondaire':
3789                        $obj_href_more_link = 'messages_mes_retours';
3790                        break;
3791                    case 'instructeur_secondaire':
3792                        $obj_href_more_link = 'messages_mes_retours';
3793                        break;
3794                  case 'division':                  case 'division':
3795                      $obj_href_more_link = 'messages_retours_ma_division';                      $obj_href_more_link = 'messages_retours_ma_division';
3796                      break;                      break;
# Line 3755  class om_widget extends om_widget_core { Line 3806  class om_widget extends om_widget_core {
3806                  case 'instructeur':                  case 'instructeur':
3807                      $obj_href_more_link = 'messages_contentieux_mes_retours';                      $obj_href_more_link = 'messages_contentieux_mes_retours';
3808                      break;                      break;
3809                    case 'instructeur_ou_instructeur_secondaire':
3810                        $obj_href_more_link = 'messages_contentieux_mes_retours';
3811                        break;
3812                  case 'division':                  case 'division':
3813                      $obj_href_more_link = 'messages_contentieux_retours_ma_division';                      $obj_href_more_link = 'messages_contentieux_retours_ma_division';
3814                      break;                      break;
# Line 3773  class om_widget extends om_widget_core { Line 3827  class om_widget extends om_widget_core {
3827              $this->template_footer,              $this->template_footer,
3828              // href              // href
3829              sprintf(              sprintf(
3830                  OM_ROUTE_TAB.'&obj=%s&dossier_cloture=%s',                  OM_ROUTE_TAB.'&obj=%s&dossier_cloture=%s&filtre=%s',
3831                  $obj_href_more_link,                  $obj_href_more_link,
3832                  $conf["arguments"]["dossier_cloture"]                  $conf["arguments"]["dossier_cloture"],
3833                    $filtre
3834              ),              ),
3835              // titre              // titre
3836              _("Voir +")              _("Voir +")
3837          );          );
   
3838      }      }
3839    
3840    
# Line 3805  class om_widget extends om_widget_core { Line 3859  class om_widget extends om_widget_core {
3859                  $elem = trim($arguments[$key]);                  $elem = trim($arguments[$key]);
3860                  //                  //
3861                  if ($key === "filtre"                  if ($key === "filtre"
3862                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "instructeur_secondaire", "division", "aucun"))) {
3863                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
3864                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
3865                      continue;                      continue;
# Line 3828  class om_widget extends om_widget_core { Line 3882  class om_widget extends om_widget_core {
3882              $arguments[$key] = $value;              $arguments[$key] = $value;
3883          }          }
3884          //          //
3885          $filtre = $arguments["filtre"];          $filtreWidget = $arguments["filtre"];
3886          //          //
3887          $contexte = $arguments["contexte"];          $contexte = $arguments["contexte"];
3888            $filtre = $contexte == 'contentieux' &&
3889                (empty($filtre) || $filtre == 'instructeur' || $filtre == 'instructeur_secondaire') ?
3890                'instructeur_ou_instructeur_secondaire' :
3891                'instructeur';
3892            // Utilisation du filtre instructeur dédié au contentieux si le filtre
3893            // paramétré est "instructeur" ou "instructeur_secondaire" et que le
3894            // contexte est "contentieux"
3895            $filtre = $contexte == 'contentieux' &&
3896                (empty($filtre) ||
3897                    $filtre == 'instructeur' ||
3898                    $filtre == 'instructeur_secondaire') ?
3899                'instructeur_ou_instructeur_secondaire' :
3900                'instructeur';
3901    
3902          /**          /**
3903           * Construction de la requête           * Construction de la requête
3904           */           */
         //  
         $query_ct_from_instructeur_filter = "";  
         $query_ct_from_division_filter = "";  
3905          $query_ct_from_collectivite_filter = "";          $query_ct_from_collectivite_filter = "";
         //  
         $query_ct_from_instructeur_filter = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
             LEFT JOIN ".DB_PREFIXE."instructeur as instructeur_2  
                 ON dossier.instructeur_2=instructeur_2.instructeur ";  
         //  
         if ($filtre == "instructeur") {  
             $query_ct_from_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                     ON dossier.instructeur=instructeur.instructeur  
                         OR dossier.instructeur_2=instructeur.instructeur  
                 JOIN ".DB_PREFIXE."om_utilisateur  
                     ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
             ";  
         }  
         //  
         $query_ct_from_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
         ";  
3906          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
3907          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
3908          // collectivité          // collectivité
# Line 3877  class om_widget extends om_widget_core { Line 3921  class om_widget extends om_widget_core {
3921          ON dossier.etat = etat.etat";          ON dossier.etat = etat.etat";
3922    
3923          // FROM          // FROM
3924          $query_ct_from = "          $query_ct_from = sprintf(
3925          ".DB_PREFIXE."dossier_message              '%1$sdossier_message
3926          LEFT JOIN ".DB_PREFIXE."dossier              LEFT JOIN %1$sdossier
3927              ON dossier_message.dossier=dossier.dossier                  ON dossier_message.dossier=dossier.dossier
3928          LEFT JOIN ".DB_PREFIXE."dossier_instruction_type              LEFT JOIN %1$sdossier_instruction_type
3929              ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type                  ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type
3930          %s              LEFT JOIN %1$sinstructeur
3931          %s                  ON dossier.instructeur = instructeur.instructeur
3932          %s              LEFT JOIN %1$som_utilisateur
3933          %s";                  ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur
3934                LEFT JOIN %1$sinstructeur as instructeur_secondaire
3935          //                  ON dossier.instructeur_2 = instructeur_secondaire.instructeur
3936          $query_ct_from = sprintf($query_ct_from, $query_ct_from_instructeur_filter, $query_ct_from_division_filter, $query_ct_from_collectivite_filter, $arguments["dossier_cloture"] == "false" ? $query_ct_from_dossier_cloture_filter : "");              LEFT JOIN %1$som_utilisateur as utilisateur_2
3937                    ON instructeur_secondaire.om_utilisateur = utilisateur_2.om_utilisateur
3938                LEFT JOIN %1$sdivision
3939                    ON dossier.division=division.division
3940                %2$s
3941                %3$s',
3942                DB_PREFIXE,
3943                $query_ct_from_collectivite_filter,
3944                $arguments["dossier_cloture"] == "false" ?
3945                    $query_ct_from_dossier_cloture_filter :
3946                    ""
3947            );
3948    
         //  
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
         $query_ct_where_collectivite_filter = "";  
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " AND om_utilisateur.login='".$_SESSION['login']."'  
                 AND dossier_message.destinataire = 'instructeur'  
             ";  
             //  
             if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {  
                 $query_ct_where_instructeur_filter = " AND (om_utilisateur.login='".$_SESSION['login']."'  
                     OR dossier_message.destinataire = 'commune')  
                 ";  
             }  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " AND division.division = ".$_SESSION['division']."  
                 AND dossier_message.destinataire = 'instructeur'  
             ";  
             //  
             if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {  
                 $query_ct_where_division_filter = " AND (division.division = ".$_SESSION['division']."  
                     OR dossier_message.destinataire = 'commune')  
                 ";  
             }  
         }  
3949    
3950          // Filtre les dossiers par contexte          // Filtre les dossiers par contexte
3951          $query_ct_where_groupe_filter = " AND LOWER(groupe.code) != 'ctx'";          $query_ct_where_groupe_filter = " AND LOWER(groupe.code) != 'ctx'";
# Line 3932  class om_widget extends om_widget_core { Line 3957  class om_widget extends om_widget_core {
3957          $query_ct_where_dossier_cloture_filter = "AND etat.statut != 'cloture'";          $query_ct_where_dossier_cloture_filter = "AND etat.statut != 'cloture'";
3958    
3959          // WHERE - COMMON          // WHERE - COMMON
3960          $query_ct_where_common = "          $query_ct_where_common = sprintf(
3961          dossier_message.lu IS FALSE AND              "dossier_message.lu IS FALSE AND
3962          dossier_instruction_type.sous_dossier IS NOT TRUE              dossier_instruction_type.sous_dossier IS NOT TRUE
3963          %s              %s
3964          %s              %s",
3965          %s              $query_ct_where_groupe_filter,
3966          %s              $arguments["dossier_cloture"] == "false" ?
3967          %s                  $query_ct_where_dossier_cloture_filter :
3968          ";                  ""
3969            );
         //  
         $query_ct_where_common = sprintf($query_ct_where_common, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter, $query_ct_where_groupe_filter, $arguments["dossier_cloture"] == "false" ? $query_ct_where_dossier_cloture_filter : "");  
3970    
3971          // Filtre du groupe          // Filtre du groupe
3972          $query_ct_where_groupe = "";          $query_ct_where_groupe = "";
# Line 3964  class om_widget extends om_widget_core { Line 3987  class om_widget extends om_widget_core {
3987                  break;                  break;
3988          }          }
3989          //          //
3990          switch ($filtre) {          switch ($filtreWidget) {
3991              case "instructeur":              case "instructeur":
3992                  if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {                  if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
3993                      $message_filtre .= " "._("dont je suis l'instructeur ou dont le destinataire est 'commune'");                      $message_filtre .= " "._("dont je suis l'instructeur ou dont le destinataire est 'commune'");
# Line 4043  class om_widget extends om_widget_core { Line 4066  class om_widget extends om_widget_core {
4066          /**          /**
4067           * Composition de la requête           * Composition de la requête
4068           */           */
4069          //  
4070          $query = sprintf(          $query = sprintf(
4071              "SELECT              "SELECT
4072                  count(*)                  count(*)
4073              FROM              FROM
4074                  %s                  %s
4075                    %s
4076              WHERE              WHERE
4077                    %s
4078                  %s",                  %s",
4079              $conf["query_ct_from"],              $conf["query_ct_from"],
4080              $conf["query_ct_where_common"]              '%s', // emplacement pour les jointure du filtre
4081                $conf["query_ct_where_common"],
4082                '%s' // emplacement pour les conditions du filtre
4083            );
4084            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
4085            $sqlFilter = $this->get_query_filter(
4086                $query,
4087                $conf['arguments']['filtre']
4088            );
4089            $query = sprintf(
4090                $query,
4091                $sqlFilter["FROM"],
4092                $sqlFilter["WHERE"]
4093          );          );
4094    
4095          /**          /**
# Line 4101  class om_widget extends om_widget_core { Line 4138  class om_widget extends om_widget_core {
4138              $this->template_footer,              $this->template_footer,
4139              // href              // href
4140              sprintf(              sprintf(
4141                  OM_ROUTE_TAB.'&obj=%s',                  OM_ROUTE_TAB.'&obj=%s&filtre=%s',
4142                  $obj_href_more_link                  $obj_href_more_link,
4143                    $filtre
4144              ),              ),
4145              // titre              // titre
4146              _("Voir +")              __("Voir +")
4147          );          );
4148    
4149      }      }
# Line 4130  class om_widget extends om_widget_core { Line 4168  class om_widget extends om_widget_core {
4168                  $elem = trim($arguments[$key]);                  $elem = trim($arguments[$key]);
4169                  //                  //
4170                  if ($key === "filtre"                  if ($key === "filtre"
4171                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "instructeur_secondaire", "division", "aucun"))) {
4172                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
4173                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
4174                      continue;                      continue;
# Line 4162  class om_widget extends om_widget_core { Line 4200  class om_widget extends om_widget_core {
4200              ON consultation.tiers_consulte=tiers_consulte.tiers_consulte              ON consultation.tiers_consulte=tiers_consulte.tiers_consulte
4201          LEFT JOIN ".DB_PREFIXE."motif_consultation          LEFT JOIN ".DB_PREFIXE."motif_consultation
4202              ON consultation.motif_consultation=motif_consultation.motif_consultation              ON consultation.motif_consultation=motif_consultation.motif_consultation
4203          %s          LEFT JOIN ".DB_PREFIXE."instructeur
4204          %s              ON dossier.instructeur=instructeur.instructeur
4205            LEFT JOIN ".DB_PREFIXE."om_utilisateur
4206                ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
4207            LEFT JOIN ".DB_PREFIXE."division
4208                ON dossier.division=division.division
4209          %s";          %s";
4210    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
4211          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
4212          // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre === "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         } else {  
             $query_ct_where_instructeur_filter = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre === "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         } else {  
             $query_ct_where_division_filter = " LEFT JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division";  
         }  
4213          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
4214          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
4215          // collectivité          // collectivité
# Line 4209  class om_widget extends om_widget_core { Line 4224  class om_widget extends om_widget_core {
4224              ";              ";
4225          }          }
4226    
4227          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
4228    
4229          // WHERE - COMMON          // WHERE - COMMON
4230          $query_ct_where_common = "          $query_ct_where_common = "
# Line 4227  class om_widget extends om_widget_core { Line 4242  class om_widget extends om_widget_core {
4242              case "instructeur":              case "instructeur":
4243                  $message_filtre = " "._("dont je suis l'instructeur");                  $message_filtre = " "._("dont je suis l'instructeur");
4244                  break;                  break;
4245                case "instructeur_secondaire":
4246                    $message_filtre = " "._("dont je suis l'instructeur secondaire");
4247                    break;
4248              case "division":              case "division":
4249                  $message_filtre = " "._("situés dans ma division");                  $message_filtre = " "._("situés dans ma division");
4250                  break;                  break;
# Line 4287  class om_widget extends om_widget_core { Line 4305  class om_widget extends om_widget_core {
4305          /**          /**
4306           * Composition de la requête           * Composition de la requête
4307           */           */
4308          //  
4309          $query = sprintf(          $query = sprintf(
4310              "SELECT              "SELECT
4311                  count(*)                  count(*)
4312              FROM              FROM
4313                  %s                  %s
4314                    %s
4315              WHERE              WHERE
4316                    %s
4317                  %s",                  %s",
4318              $conf["query_ct_from"],              $conf["query_ct_from"],
4319              $conf["query_ct_where_common"]              '%s', // emplacement pour les jointure du filtre
4320                $conf["query_ct_where_common"],
4321                '%s' // emplacement pour les conditions du filtre
4322            );
4323            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
4324            $sqlFilter = $this->get_query_filter(
4325                $query,
4326                $conf['arguments']['filtre']
4327            );
4328            $query = sprintf(
4329                $query,
4330                $sqlFilter["FROM"],
4331                $sqlFilter["WHERE"]
4332          );          );
4333    
4334          /**          /**
# Line 4345  class om_widget extends om_widget_core { Line 4377  class om_widget extends om_widget_core {
4377              $this->template_footer,              $this->template_footer,
4378              // href              // href
4379              sprintf(              sprintf(
4380                  OM_ROUTE_TAB.'&obj=%s',                  '%s&obj=%s&filtre=%s',
4381                  $obj_href_more_link                  OM_ROUTE_TAB,
4382                    $obj_href_more_link,
4383                    $filtre
4384              ),              ),
4385              // titre              // titre
4386              _("Voir +")              __("Voir +")
4387          );          );
4388      }      }
4389    
# Line 4372  class om_widget extends om_widget_core { Line 4406  class om_widget extends om_widget_core {
4406                  $elem = trim($arguments[$key]);                  $elem = trim($arguments[$key]);
4407                  //                  //
4408                  if ($key === "filtre"                  if ($key === "filtre"
4409                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "instructeur_secondaire", "division", "aucun"))) {
4410                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
4411                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
4412                      continue;                      continue;
# Line 4396  class om_widget extends om_widget_core { Line 4430  class om_widget extends om_widget_core {
4430              ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type              ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type
4431          LEFT JOIN " . DB_PREFIXE . "commission          LEFT JOIN " . DB_PREFIXE . "commission
4432              ON dossier_commission.commission=commission.commission              ON dossier_commission.commission=commission.commission
4433          %s          LEFT JOIN " . DB_PREFIXE . "commission_type
4434          %s              ON commission_type.commission_type=commission.commission_type
4435            LEFT JOIN ".DB_PREFIXE."instructeur
4436                ON dossier.instructeur=instructeur.instructeur
4437            LEFT JOIN ".DB_PREFIXE."om_utilisateur
4438                ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
4439            LEFT JOIN ".DB_PREFIXE."division
4440                ON dossier.division=division.division
4441          %s";          %s";
4442    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
4443          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
4444    
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre === "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN " . DB_PREFIXE . "instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             JOIN " . DB_PREFIXE . "om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='" . $_SESSION['login'] . "'  
             ";  
         } else {  
             $query_ct_where_instructeur_filter = " LEFT JOIN " . DB_PREFIXE . "instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN " . DB_PREFIXE . "om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre === "division") {  
             //  
             $query_ct_where_division_filter = " JOIN " . DB_PREFIXE . "division  
             ON dossier.division=division.division  
             AND division.division = " . $_SESSION['division'] . "  
             ";  
         } else {  
             $query_ct_where_division_filter = " LEFT JOIN " . DB_PREFIXE . "division  
             ON dossier.division=division.division";  
         }  
4445          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
4446          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
4447          // collectivité          // collectivité
# Line 4444  class om_widget extends om_widget_core { Line 4456  class om_widget extends om_widget_core {
4456              ";              ";
4457          }          }
4458    
4459          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
4460    
4461          // WHERE - COMMON          // WHERE - COMMON
4462          $query_ct_where_common = "          $query_ct_where_common = "
# Line 4462  class om_widget extends om_widget_core { Line 4474  class om_widget extends om_widget_core {
4474              case "instructeur":              case "instructeur":
4475                  $message_filtre = " " . _("dont je suis l'instructeur");                  $message_filtre = " " . _("dont je suis l'instructeur");
4476                  break;                  break;
4477                case "instructeur_secondaire":
4478                    $message_filtre = " " . _("dont je suis l'instructeur secondaire");
4479                    break;
4480              case "division":              case "division":
4481                  $message_filtre = " " . _("situés dans ma division");                  $message_filtre = " " . _("situés dans ma division");
4482                  break;                  break;
# Line 4532  class om_widget extends om_widget_core { Line 4547  class om_widget extends om_widget_core {
4547              $query_ct_orderby = "";              $query_ct_orderby = "";
4548              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
4549          }          }
4550          $query = sprintf("  
4551              SELECT          $query = sprintf(
4552                "SELECT
4553                  %s                  %s
4554              FROM              FROM
4555                  %s                  %s
4556                    %s
4557              WHERE              WHERE
4558                  %s                  %s
4559                  %s                  %s
4560                  %s",                  %s
4561                %s",
4562              $query_ct_select,              $query_ct_select,
4563              $conf["query_ct_from"],              $conf["query_ct_from"],
4564                '%s', // emplacement pour les jointure du filtre
4565              $conf["query_ct_where_common"],              $conf["query_ct_where_common"],
4566              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
4567                '%s', // emplacement pour les conditions du filtre
4568              $query_ct_orderby              $query_ct_orderby
4569          );          );
4570            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
4571            $sqlFilter = $this->get_query_filter(
4572                $query,
4573                $conf['arguments']['filtre']
4574            );
4575            $query = sprintf(
4576                $query,
4577                $sqlFilter["FROM"],
4578                $sqlFilter["WHERE"]
4579            );
4580    
4581          /**          /**
4582           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
# Line 4728  class om_widget extends om_widget_core { Line 4758  class om_widget extends om_widget_core {
4758                  $elem = trim($arguments[$key]);                  $elem = trim($arguments[$key]);
4759                  //                  //
4760                  if ($key === "filtre"                  if ($key === "filtre"
4761                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "instructeur_secondaire", "division", "aucun"))) {
4762                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
4763                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
4764                      continue;                      continue;
# Line 4783  class om_widget extends om_widget_core { Line 4813  class om_widget extends om_widget_core {
4813          )          )
4814              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
4815                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
4816          %s          LEFT JOIN ".DB_PREFIXE."instructeur
4817          %s              ON dossier.instructeur=instructeur.instructeur
4818            LEFT JOIN ".DB_PREFIXE."om_utilisateur
4819                ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
4820            LEFT JOIN ".DB_PREFIXE."division
4821                ON dossier.division=division.division
4822          %s          %s
4823          ";          ";
4824    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
4825          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
4826          // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         } else {  
             $query_ct_where_instructeur_filter = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         } else {  
             $query_ct_where_division_filter = " LEFT JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division";  
         }  
4827          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
4828          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
4829          // collectivité          // collectivité
# Line 4831  class om_widget extends om_widget_core { Line 4838  class om_widget extends om_widget_core {
4838              ";              ";
4839          }          }
4840    
4841          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
4842    
4843          // WHERE - COMMON          // WHERE - COMMON
4844          $query_ct_where_common = "          $query_ct_where_common = "
# Line 4866  class om_widget extends om_widget_core { Line 4873  class om_widget extends om_widget_core {
4873              case "instructeur":              case "instructeur":
4874                  $message_filtre = " "._("dont je suis l'instructeur");                  $message_filtre = " "._("dont je suis l'instructeur");
4875                  break;                  break;
4876                case "instructeur_secondaire":
4877                    $message_filtre = " "._("dont je suis l'instructeur secondaire");
4878                    break;
4879              case "division":              case "division":
4880                  $message_filtre = " "._("situés dans ma division");                  $message_filtre = " "._("situés dans ma division");
4881                  break;                  break;
# Line 5112  class om_widget extends om_widget_core { Line 5122  class om_widget extends om_widget_core {
5122              //              //
5123              $arguments[$key] = $value;              $arguments[$key] = $value;
5124          }          }
5125            // Utilisation du filtre instructeur dédié au contentieux si le filtre
5126            // paramétré est "instructeur"
5127            if (! empty($arguments["filtre"]) && $arguments["filtre"] === 'instructeur') {
5128                $arguments["filtre"] = 'instructeur_ou_instructeur_secondaire';
5129            }
5130          $filtre = $arguments["filtre"];          $filtre = $arguments["filtre"];
5131                    
5132          // SELECT - CHAMPAFFICHE          // SELECT - CHAMPAFFICHE
# Line 5193  class om_widget extends om_widget_core { Line 5208  class om_widget extends om_widget_core {
5208              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
5209                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
5210          %s          %s
         %s  
         %s  
5211          ";          ";
5212    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
5213          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
                     OR dossier.instructeur_2=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         }  
   
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         }  
5214    
5215          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
5216          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
# Line 5235  class om_widget extends om_widget_core { Line 5226  class om_widget extends om_widget_core {
5226              ";              ";
5227          }          }
5228    
5229          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
5230    
5231          // WHERE - COMMON          // WHERE - COMMON
5232          $query_ct_where_common = "          $query_ct_where_common = "
# Line 5269  class om_widget extends om_widget_core { Line 5260  class om_widget extends om_widget_core {
5260          $message_filtre = "";          $message_filtre = "";
5261          //          //
5262          switch ($filtre) {          switch ($filtre) {
5263              case "instructeur":              case "instructeur_ou_instructeur_secondaire":
5264                  $message_filtre = " "._("dont je suis l'instructeur");                  $message_filtre = " "._("dont je suis l'instructeur");
5265                  break;                  break;
5266                case "instructeur_secondaire":
5267                    $message_filtre = " "._("dont je suis l'instructeur secondaire");
5268                    break;
5269              case "division":              case "division":
5270                  $message_filtre = " "._("situés dans ma division");                  $message_filtre = " "._("situés dans ma division");
5271                  break;                  break;
# Line 5346  class om_widget extends om_widget_core { Line 5340  class om_widget extends om_widget_core {
5340              $query_ct_orderby = "";              $query_ct_orderby = "";
5341              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
5342          }          }
5343          $query = sprintf("  
5344              SELECT          $query = sprintf(
5345                "SELECT
5346                  %s                  %s
5347              FROM              FROM
5348                  %s                  %s
5349                    %s
5350              WHERE              WHERE
5351                  %s                  %s
5352                  %s                  %s
5353                  %s",                  %s
5354                %s",
5355              $query_ct_select,              $query_ct_select,
5356              $conf["query_ct_from"],              $conf["query_ct_from"],
5357                '%s', // emplacement pour les jointure du filtre
5358              $conf["query_ct_where"],              $conf["query_ct_where"],
5359              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
5360                '%s', // emplacement pour les conditions du filtre
5361              $query_ct_orderby              $query_ct_orderby
5362          );          );
5363            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
5364            $sqlFilter = $this->get_query_filter(
5365                $query,
5366                $conf['arguments']['filtre']
5367            );
5368            $query = sprintf(
5369                $query,
5370                $sqlFilter["FROM"],
5371                $sqlFilter["WHERE"]
5372            );
5373    
5374          /**          /**
5375           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
# Line 5564  class om_widget extends om_widget_core { Line 5573  class om_widget extends om_widget_core {
5573              //              //
5574              $arguments[$key] = $value;              $arguments[$key] = $value;
5575          }          }
5576            // Utilisation du filtre instructeur dédié au contentieux si le filtre
5577            // paramétré est "instructeur"
5578            if (! empty($arguments["filtre"]) && $arguments["filtre"] === 'instructeur') {
5579                $arguments["filtre"] = 'instructeur_ou_instructeur_secondaire';
5580            }
5581          $filtre = $arguments["filtre"];          $filtre = $arguments["filtre"];
5582                    
5583          // SELECT - CHAMPAFFICHE          // SELECT - CHAMPAFFICHE
# Line 5651  class om_widget extends om_widget_core { Line 5665  class om_widget extends om_widget_core {
5665              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
5666                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
5667          %s          %s
         %s  
         %s  
5668          ";          ";
5669    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
5670          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
                     OR dossier.instructeur_2=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         }  
   
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         }  
5671    
5672          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
5673          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
# Line 5693  class om_widget extends om_widget_core { Line 5683  class om_widget extends om_widget_core {
5683              ";              ";
5684          }          }
5685    
5686          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
5687    
5688          // WHERE          // WHERE
5689          $query_ct_where_common = "          $query_ct_where_common = "
# Line 5716  class om_widget extends om_widget_core { Line 5706  class om_widget extends om_widget_core {
5706          $message_filtre = "";          $message_filtre = "";
5707          //          //
5708          switch ($filtre) {          switch ($filtre) {
5709              case "instructeur":              case "instructeur_ou_instructeur_secondaire":
5710                  $message_filtre = " "._("dont je suis l'instructeur");                  $message_filtre = " "._("dont je suis l'instructeur");
5711                  break;                  break;
5712              case "division":              case "division":
# Line 5792  class om_widget extends om_widget_core { Line 5782  class om_widget extends om_widget_core {
5782              $query_ct_orderby = "";              $query_ct_orderby = "";
5783              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
5784          }          }
5785          $query = sprintf("  
5786              SELECT          $query = sprintf(
5787                "SELECT
5788                  %s                  %s
5789              FROM              FROM
5790                  %s                  %s
5791                    %s
5792              WHERE              WHERE
5793                  %s                  %s
5794                  %s                  %s
5795                  %s",                  %s
5796                %s",
5797              $query_ct_select,              $query_ct_select,
5798              $conf["query_ct_from"],              $conf["query_ct_from"],
5799                '%s', // emplacement pour les jointure du filtre
5800              $conf["query_ct_where"],              $conf["query_ct_where"],
5801              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
5802                '%s', // emplacement pour les conditions du filtre
5803              $query_ct_orderby              $query_ct_orderby
5804          );          );
5805            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
5806            $sqlFilter = $this->get_query_filter(
5807                $query,
5808                $conf['arguments']['filtre']
5809            );
5810            $query = sprintf(
5811                $query,
5812                $sqlFilter["FROM"],
5813                $sqlFilter["WHERE"]
5814            );
5815    
5816          /**          /**
5817           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
# Line 6095  class om_widget extends om_widget_core { Line 6100  class om_widget extends om_widget_core {
6100          )          )
6101              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
6102                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
6103          %s          LEFT JOIN ".DB_PREFIXE."division
6104                ON dossier.division=division.division
6105          %s          %s
6106          ";          ";
6107    
         $query_ct_where_division_filter = "";  
6108          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
6109          $query_ct_where_statut_filter = "";          $query_ct_where_statut_filter = "";
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         } else {  
             $query_ct_where_division_filter = " LEFT JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division";  
         }  
6110    
6111          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
6112          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
# Line 6136  class om_widget extends om_widget_core { Line 6130  class om_widget extends om_widget_core {
6130    
6131          $query_ct_from = sprintf($query_ct_from,          $query_ct_from = sprintf($query_ct_from,
6132              $query_ct_where_statut_filter,              $query_ct_where_statut_filter,
             $query_ct_where_division_filter,  
6133              $query_ct_where_collectivite_filter              $query_ct_where_collectivite_filter
6134          );          );
6135                    
# Line 6248  class om_widget extends om_widget_core { Line 6241  class om_widget extends om_widget_core {
6241              $query_ct_orderby = "";              $query_ct_orderby = "";
6242              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
6243          }          }
6244          $query = sprintf("  
6245              SELECT          $query = sprintf(
6246                "SELECT
6247                  %s                  %s
6248              FROM              FROM
6249                  %s                  %s
6250                    %s
6251              WHERE              WHERE
6252                  %s                  %s
6253                  %s                  %s
6254                  %s",                  %s
6255                %s",
6256              $query_ct_select,              $query_ct_select,
6257              $conf["query_ct_from"],              $conf["query_ct_from"],
6258                '%s', // emplacement pour les jointure du filtre
6259              $conf["query_ct_where"],              $conf["query_ct_where"],
6260              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
6261                '%s', // emplacement pour les conditions du filtre
6262              $query_ct_orderby              $query_ct_orderby
6263          );          );
6264            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
6265            $sqlFilter = $this->get_query_filter(
6266                $query,
6267                $conf['arguments']['filtre']
6268            );
6269            $query = sprintf(
6270                $query,
6271                $sqlFilter["FROM"],
6272                $sqlFilter["WHERE"]
6273            );
6274    
6275          /**          /**
6276           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
# Line 6455  class om_widget extends om_widget_core { Line 6463  class om_widget extends om_widget_core {
6463              //              //
6464              $arguments[$key] = $value;              $arguments[$key] = $value;
6465          }          }
6466            // Utilisation du filtre instructeur dédié au contentieux si le filtre
6467            // paramétré est "instructeur"
6468            if (! empty($arguments["filtre"]) && $arguments["filtre"] === 'instructeur') {
6469                $arguments["filtre"] = 'instructeur_ou_instructeur_secondaire';
6470            }
6471          $filtre = $arguments["filtre"];          $filtre = $arguments["filtre"];
6472          $d_encours = $arguments["dossier_encours"];          $d_encours = $arguments["dossier_encours"];
6473    
# Line 6535  class om_widget extends om_widget_core { Line 6548  class om_widget extends om_widget_core {
6548              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
6549                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
6550          %s          %s
         %s  
         %s  
6551          ";          ";
6552    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
6553          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
6554          $query_ct_where_statut_filter = "";          $query_ct_where_statut_filter = "";
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
                     OR dossier.instructeur_2=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         }  
   
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         }  
6555    
6556          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
6557          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
# Line 6586  class om_widget extends om_widget_core { Line 6575  class om_widget extends om_widget_core {
6575          $query_ct_from = sprintf(          $query_ct_from = sprintf(
6576              $query_ct_from,              $query_ct_from,
6577              $query_ct_where_statut_filter,              $query_ct_where_statut_filter,
             $query_ct_where_instructeur_filter,  
             $query_ct_where_division_filter,  
6578              $query_ct_where_collectivite_filter              $query_ct_where_collectivite_filter
6579          );          );
6580    
# Line 6614  class om_widget extends om_widget_core { Line 6601  class om_widget extends om_widget_core {
6601          $message_filtre = "";          $message_filtre = "";
6602          //          //
6603          switch ($filtre) {          switch ($filtre) {
6604              case "instructeur":              case "instructeur_ou_instructeur_secondaire":
6605                  $message_filtre = " "._("dont je suis l'instructeur");                  $message_filtre = " "._("dont je suis l'instructeur");
6606                  break;                  break;
6607                case "instructeur_secondaire":
6608                    $message_filtre = " "._("dont je suis l'instructeur secondaire");
6609                    break;
6610              case "division":              case "division":
6611                  $message_filtre = " "._("situés dans ma division");                  $message_filtre = " "._("situés dans ma division");
6612                  break;                  break;
# Line 6688  class om_widget extends om_widget_core { Line 6678  class om_widget extends om_widget_core {
6678          /**          /**
6679           * Composition de la requête           * Composition de la requête
6680           */           */
         //  
         $query = sprintf("  
             SELECT  
                 COUNT(*)  
             FROM  
                 %s  
             WHERE  
                 %s  
                 %s",  
             $conf["query_ct_from"],  
             $conf["query_ct_where"],  
             $conf["query_ct_where_groupe"]  
         );  
   
         /**  
          * Exécution de la requête  
          */  
6681          // Gestion de la requête selon le type d'affichage          // Gestion de la requête selon le type d'affichage
6682          $query_ct_orderby = sprintf(          $query_ct_orderby = sprintf(
6683              "ORDER BY              "ORDER BY
# Line 6717  class om_widget extends om_widget_core { Line 6690  class om_widget extends om_widget_core {
6690              $query_ct_orderby = "";              $query_ct_orderby = "";
6691              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
6692          }          }
6693          $query = sprintf("          $query = sprintf(
6694              SELECT              "SELECT
6695                  %s                  %s
6696              FROM              FROM
6697                  %s                  %s
6698                    %s
6699              WHERE              WHERE
6700                  %s                  %s
6701                  %s                  %s
6702                  %s",                  %s
6703                %s",
6704              $query_ct_select,              $query_ct_select,
6705              $conf["query_ct_from"],              $conf["query_ct_from"],
6706                '%s', // emplacement pour les jointure du filtre
6707              $conf["query_ct_where"],              $conf["query_ct_where"],
6708              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
6709                '%s', // emplacement pour les conditions du filtre
6710              $query_ct_orderby              $query_ct_orderby
6711          );          );
6712            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
6713            $sqlFilter = $this->get_query_filter(
6714                $query,
6715                $conf['arguments']['filtre']
6716            );
6717            $query = sprintf(
6718                $query,
6719                $sqlFilter["FROM"],
6720                $sqlFilter["WHERE"]
6721            );
6722    
6723    
6724          /**          /**
# Line 6924  class om_widget extends om_widget_core { Line 6911  class om_widget extends om_widget_core {
6911              //              //
6912              $arguments[$key] = $value;              $arguments[$key] = $value;
6913          }          }
6914            // Utilisation du filtre instructeur dédié au contentieux si le filtre
6915            // paramétré est "instructeur"
6916            if (! empty($arguments["filtre"]) && $arguments["filtre"] === 'instructeur') {
6917                $arguments["filtre"] = 'instructeur_ou_instructeur_secondaire';
6918            }
6919          $filtre = $arguments["filtre"];          $filtre = $arguments["filtre"];
6920          $d_encours = $arguments["dossier_encours"];          $d_encours = $arguments["dossier_encours"];
6921    
# Line 7004  class om_widget extends om_widget_core { Line 6996  class om_widget extends om_widget_core {
6996              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
6997                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
6998          %s          %s
         %s  
         %s  
6999          ";          ";
7000    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
7001          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
7002          $query_ct_where_statut_filter = "";          $query_ct_where_statut_filter = "";
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
                     OR dossier.instructeur_2=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         }  
   
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         }  
7003    
7004          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
7005          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
# Line 7056  class om_widget extends om_widget_core { Line 7024  class om_widget extends om_widget_core {
7024          $query_ct_from = sprintf(          $query_ct_from = sprintf(
7025              $query_ct_from,              $query_ct_from,
7026              $query_ct_where_statut_filter,              $query_ct_where_statut_filter,
             $query_ct_where_instructeur_filter,  
             $query_ct_where_division_filter,  
7027              $query_ct_where_collectivite_filter              $query_ct_where_collectivite_filter
7028          );          );
7029    
# Line 7084  class om_widget extends om_widget_core { Line 7050  class om_widget extends om_widget_core {
7050          $message_filtre = "";          $message_filtre = "";
7051          //          //
7052          switch ($filtre) {          switch ($filtre) {
7053              case "instructeur":              case "instructeur_ou_instructeur_secondaire":
7054                  $message_filtre = " "._("dont je suis l'instructeur");                  $message_filtre = " "._("dont je suis l'instructeur");
7055                  break;                  break;
7056              case "division":              case "division":
# Line 7170  class om_widget extends om_widget_core { Line 7136  class om_widget extends om_widget_core {
7136              $query_ct_orderby = "";              $query_ct_orderby = "";
7137              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
7138          }          }
7139          $query = sprintf("          $query = sprintf(
7140              SELECT              "SELECT
7141                  %s                  %s
7142              FROM              FROM
7143                  %s                  %s
7144                    %s
7145              WHERE              WHERE
7146                  %s                  %s
7147                  %s                  %s
7148                  %s",                  %s
7149                %s",
7150              $query_ct_select,              $query_ct_select,
7151              $conf["query_ct_from"],              $conf["query_ct_from"],
7152                '%s', // emplacement pour les jointure du filtre
7153              $conf["query_ct_where"],              $conf["query_ct_where"],
7154              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
7155                '%s', // emplacement pour les conditions du filtre
7156              $query_ct_orderby              $query_ct_orderby
7157          );          );
7158            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
7159            $sqlFilter = $this->get_query_filter(
7160                $query,
7161                $conf['arguments']['filtre']
7162            );
7163            $query = sprintf(
7164                $query,
7165                $sqlFilter["FROM"],
7166                $sqlFilter["WHERE"]
7167            );
7168    
7169          /**          /**
7170           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
# Line 7370  class om_widget extends om_widget_core { Line 7350  class om_widget extends om_widget_core {
7350              //              //
7351              $arguments[$key] = $value;              $arguments[$key] = $value;
7352          }          }
7353            // Utilisation du filtre instructeur dédié au contentieux si le filtre
7354            // paramétré est "instructeur"
7355            if (! empty($arguments["filtre"]) && $arguments["filtre"] === 'instructeur') {
7356                $arguments["filtre"] = 'instructeur_ou_instructeur_secondaire';
7357            }
7358          $filtre = $arguments["filtre"];          $filtre = $arguments["filtre"];
7359    
7360          // SELECT - CHAMPAFFICHE          // SELECT - CHAMPAFFICHE
# Line 7469  class om_widget extends om_widget_core { Line 7453  class om_widget extends om_widget_core {
7453              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
7454                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
7455          %s          %s
         %s  
         %s  
7456          ";          ";
7457    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
7458          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
                     OR dossier.instructeur_2=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         }  
   
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         }  
7459    
7460          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
7461          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
# Line 7511  class om_widget extends om_widget_core { Line 7471  class om_widget extends om_widget_core {
7471              ";              ";
7472          }          }
7473    
7474          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
7475    
7476          // WHERE - COMMON          // WHERE - COMMON
7477          $query_ct_where_common = "          $query_ct_where_common = "
# Line 7537  class om_widget extends om_widget_core { Line 7497  class om_widget extends om_widget_core {
7497          $message_filtre = "";          $message_filtre = "";
7498          //          //
7499          switch ($filtre) {          switch ($filtre) {
7500              case "instructeur":              case "instructeur_ou_instructeur_secondaire":
7501                  $message_filtre = " "._("dont je suis l'instructeur");                  $message_filtre = " "._("dont je suis l'instructeur");
7502                  break;                  break;
7503              case "division":              case "division":
# Line 7615  class om_widget extends om_widget_core { Line 7575  class om_widget extends om_widget_core {
7575              $query_ct_orderby = "";              $query_ct_orderby = "";
7576              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
7577          }          }
7578          $query = sprintf("          $query = sprintf(
7579              SELECT              "SELECT
7580                  %s                  %s
7581              FROM              FROM
7582                  %s                  %s
7583                    %s
7584              WHERE              WHERE
7585                  %s                  %s
7586                  %s                  %s
7587                  %s",                  %s
7588                %s",
7589              $query_ct_select,              $query_ct_select,
7590              $conf["query_ct_from"],              $conf["query_ct_from"],
7591                '%s', // emplacement pour les jointure du filtre
7592              $conf["query_ct_where"],              $conf["query_ct_where"],
7593              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
7594                '%s', // emplacement pour les conditions du filtre
7595              $query_ct_orderby              $query_ct_orderby
7596          );          );
7597            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
7598            $sqlFilter = $this->get_query_filter(
7599                $query,
7600                $conf['arguments']['filtre']
7601            );
7602            $query = sprintf(
7603                $query,
7604                $sqlFilter["FROM"],
7605                $sqlFilter["WHERE"]
7606            );
7607    
7608          /**          /**
7609           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
# Line 7815  class om_widget extends om_widget_core { Line 7789  class om_widget extends om_widget_core {
7789              //              //
7790              $arguments[$key] = $value;              $arguments[$key] = $value;
7791          }          }
7792            // Utilisation du filtre instructeur dédié au contentieux si le filtre
7793            // paramétré est "instructeur"
7794            if (! empty($arguments["filtre"]) && $arguments["filtre"] === 'instructeur') {
7795                $arguments["filtre"] = 'instructeur_ou_instructeur_secondaire';
7796            }
7797          $filtre = $arguments["filtre"];          $filtre = $arguments["filtre"];
7798    
7799          // SELECT - CHAMPAFFICHE          // SELECT - CHAMPAFFICHE
# Line 7897  class om_widget extends om_widget_core { Line 7875  class om_widget extends om_widget_core {
7875              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
7876                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
7877          %s          %s
         %s  
         %s  
7878          ";          ";
7879    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
7880          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
                     OR dossier.instructeur_2=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         }  
   
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         }  
7881    
7882          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
7883          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
# Line 7939  class om_widget extends om_widget_core { Line 7893  class om_widget extends om_widget_core {
7893              ";              ";
7894          }          }
7895    
7896          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
7897                    
7898          // WHERE - COMMON          // WHERE - COMMON
7899          $query_ct_where_common = "          $query_ct_where_common = "
# Line 7965  class om_widget extends om_widget_core { Line 7919  class om_widget extends om_widget_core {
7919          $message_filtre = "";          $message_filtre = "";
7920          //          //
7921          switch ($filtre) {          switch ($filtre) {
7922              case "instructeur":              case "instructeur_ou_instructeur_secondaire":
7923                  $message_filtre = " "._("dont je suis l'instructeur");                  $message_filtre = " "._("dont je suis l'instructeur");
7924                  break;                  break;
7925              case "division":              case "division":
# Line 8042  class om_widget extends om_widget_core { Line 7996  class om_widget extends om_widget_core {
7996              $query_ct_orderby = "";              $query_ct_orderby = "";
7997              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
7998          }          }
7999          $query = sprintf("          $query = sprintf(
8000              SELECT              "SELECT
8001                  %s                  %s
8002              FROM              FROM
8003                  %s                  %s
8004                    %s
8005              WHERE              WHERE
8006                  %s                  %s
8007                  %s                  %s
8008                  %s",                  %s
8009                %s",
8010              $query_ct_select,              $query_ct_select,
8011              $conf["query_ct_from"],              $conf["query_ct_from"],
8012                '%s', // emplacement pour les jointure du filtre
8013              $conf["query_ct_where"],              $conf["query_ct_where"],
8014              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
8015                '%s', // emplacement pour les conditions du filtre
8016              $query_ct_orderby              $query_ct_orderby
8017          );          );
8018            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
8019            $sqlFilter = $this->get_query_filter(
8020                $query,
8021                $conf['arguments']['filtre']
8022            );
8023            $query = sprintf(
8024                $query,
8025                $sqlFilter["FROM"],
8026                $sqlFilter["WHERE"]
8027            );
8028    
8029          /**          /**
8030           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
# Line 8265  class om_widget extends om_widget_core { Line 8233  class om_widget extends om_widget_core {
8233          /**          /**
8234           * Composition de la requête           * Composition de la requête
8235           */           */
         //  
8236          $query = sprintf(          $query = sprintf(
8237              "SELECT COUNT (DISTINCT(dossier.dossier))              "SELECT
8238                    COUNT(DISTINCT(dossier.dossier))
8239              FROM              FROM
8240                  %s                  %s
8241                    %s
8242              WHERE              WHERE
8243                  %s                  %s
8244                  %s                  %s
8245                  %s                  %s
8246                  %s                  %s
8247                    %s
8248                  %s",                  %s",
8249              $conf["query_ct_from"],              $conf["query_ct_from"],
8250                '%s', // emplacement pour les jointure du filtre
8251              $conf["query_ct_where_common"],              $conf["query_ct_where_common"],
8252              $conf["query_ct_where_date_filter"],              $conf["query_ct_where_date_filter"],
8253              $conf["query_ct_where_groupe"],              $conf["query_ct_where_groupe"],
8254              $conf["query_ct_where_depot_filter"],              $conf["query_ct_where_depot_filter"],
8255              $conf["query_ct_where_datd_filter"]              $conf["query_ct_where_datd_filter"],
8256                '%s' // emplacement pour les conditions du filtre
8257            );
8258            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
8259            $sqlFilter = $this->get_query_filter(
8260                $query,
8261                $conf['arguments']['filtre']
8262            );
8263            $query = sprintf(
8264                $query,
8265                $sqlFilter["FROM"],
8266                $sqlFilter["WHERE"]
8267          );          );
8268    
8269          /**          /**
# Line 8363  class om_widget extends om_widget_core { Line 8345  class om_widget extends om_widget_core {
8345                      $arguments[$key] = explode(";", $elem);                      $arguments[$key] = explode(";", $elem);
8346                      continue;                      continue;
8347                  } elseif ($key === "filtre"                  } elseif ($key === "filtre"
8348                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "instructeur_secondaire", "division", "aucun"))) {
8349                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
8350                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
8351                      continue;                      continue;
# Line 8434  class om_widget extends om_widget_core { Line 8416  class om_widget extends om_widget_core {
8416                  OR su2_avt_shon18 IS NOT NULL                  OR su2_avt_shon18 IS NOT NULL
8417                  OR su2_avt_shon19 IS NOT NULL                  OR su2_avt_shon19 IS NOT NULL
8418                  OR su2_avt_shon20 IS NOT NULL                  OR su2_avt_shon20 IS NOT NULL
8419                    OR su2_avt_shon21 IS NOT NULL
8420                    OR su2_avt_shon22 IS NOT NULL
8421                  OR su2_cstr_shon1 IS NOT NULL                  OR su2_cstr_shon1 IS NOT NULL
8422                  OR su2_cstr_shon2 IS NOT NULL                  OR su2_cstr_shon2 IS NOT NULL
8423                  OR su2_cstr_shon3 IS NOT NULL                  OR su2_cstr_shon3 IS NOT NULL
# Line 8454  class om_widget extends om_widget_core { Line 8438  class om_widget extends om_widget_core {
8438                  OR su2_cstr_shon18 IS NOT NULL                  OR su2_cstr_shon18 IS NOT NULL
8439                  OR su2_cstr_shon19 IS NOT NULL                  OR su2_cstr_shon19 IS NOT NULL
8440                  OR su2_cstr_shon20 IS NOT NULL                  OR su2_cstr_shon20 IS NOT NULL
8441                    OR su2_cstr_shon21 IS NOT NULL
8442                    OR su2_cstr_shon22 IS NOT NULL
8443                  OR su2_chge_shon1 IS NOT NULL                  OR su2_chge_shon1 IS NOT NULL
8444                  OR su2_chge_shon2 IS NOT NULL                  OR su2_chge_shon2 IS NOT NULL
8445                  OR su2_chge_shon3 IS NOT NULL                  OR su2_chge_shon3 IS NOT NULL
# Line 8474  class om_widget extends om_widget_core { Line 8460  class om_widget extends om_widget_core {
8460                  OR su2_chge_shon18 IS NOT NULL                  OR su2_chge_shon18 IS NOT NULL
8461                  OR su2_chge_shon19 IS NOT NULL                  OR su2_chge_shon19 IS NOT NULL
8462                  OR su2_chge_shon20 IS NOT NULL                  OR su2_chge_shon20 IS NOT NULL
8463                    OR su2_chge_shon21 IS NOT NULL
8464                    OR su2_chge_shon22 IS NOT NULL
8465                  OR su2_demo_shon1 IS NOT NULL                  OR su2_demo_shon1 IS NOT NULL
8466                  OR su2_demo_shon2 IS NOT NULL                  OR su2_demo_shon2 IS NOT NULL
8467                  OR su2_demo_shon3 IS NOT NULL                  OR su2_demo_shon3 IS NOT NULL
# Line 8494  class om_widget extends om_widget_core { Line 8482  class om_widget extends om_widget_core {
8482                  OR su2_demo_shon18 IS NOT NULL                  OR su2_demo_shon18 IS NOT NULL
8483                  OR su2_demo_shon19 IS NOT NULL                  OR su2_demo_shon19 IS NOT NULL
8484                  OR su2_demo_shon20 IS NOT NULL                  OR su2_demo_shon20 IS NOT NULL
8485                    OR su2_demo_shon21 IS NOT NULL
8486                    OR su2_demo_shon22 IS NOT NULL
8487                  OR su2_sup_shon1 IS NOT NULL                  OR su2_sup_shon1 IS NOT NULL
8488                  OR su2_sup_shon2 IS NOT NULL                  OR su2_sup_shon2 IS NOT NULL
8489                  OR su2_sup_shon3 IS NOT NULL                  OR su2_sup_shon3 IS NOT NULL
# Line 8514  class om_widget extends om_widget_core { Line 8504  class om_widget extends om_widget_core {
8504                  OR su2_sup_shon18 IS NOT NULL                  OR su2_sup_shon18 IS NOT NULL
8505                  OR su2_sup_shon19 IS NOT NULL                  OR su2_sup_shon19 IS NOT NULL
8506                  OR su2_sup_shon20 IS NOT NULL                  OR su2_sup_shon20 IS NOT NULL
8507                    OR su2_sup_shon21 IS NOT NULL
8508                    OR su2_sup_shon22 IS NOT NULL
8509              THEN              THEN
8510                  donnees_techniques.su2_cstr_shon_tot                  donnees_techniques.su2_cstr_shon_tot
8511              ELSE              ELSE
# Line 8539  class om_widget extends om_widget_core { Line 8531  class om_widget extends om_widget_core {
8531                  OR su2_avt_shon18 IS NOT NULL                  OR su2_avt_shon18 IS NOT NULL
8532                  OR su2_avt_shon19 IS NOT NULL                  OR su2_avt_shon19 IS NOT NULL
8533                  OR su2_avt_shon20 IS NOT NULL                  OR su2_avt_shon20 IS NOT NULL
8534                    OR su2_avt_shon21 IS NOT NULL
8535                    OR su2_avt_shon22 IS NOT NULL
8536                  OR su2_cstr_shon1 IS NOT NULL                  OR su2_cstr_shon1 IS NOT NULL
8537                  OR su2_cstr_shon2 IS NOT NULL                  OR su2_cstr_shon2 IS NOT NULL
8538                  OR su2_cstr_shon3 IS NOT NULL                  OR su2_cstr_shon3 IS NOT NULL
# Line 8559  class om_widget extends om_widget_core { Line 8553  class om_widget extends om_widget_core {
8553                  OR su2_cstr_shon18 IS NOT NULL                  OR su2_cstr_shon18 IS NOT NULL
8554                  OR su2_cstr_shon19 IS NOT NULL                  OR su2_cstr_shon19 IS NOT NULL
8555                  OR su2_cstr_shon20 IS NOT NULL                  OR su2_cstr_shon20 IS NOT NULL
8556                    OR su2_cstr_shon21 IS NOT NULL
8557                    OR su2_cstr_shon22 IS NOT NULL
8558                  OR su2_chge_shon1 IS NOT NULL                  OR su2_chge_shon1 IS NOT NULL
8559                  OR su2_chge_shon2 IS NOT NULL                  OR su2_chge_shon2 IS NOT NULL
8560                  OR su2_chge_shon3 IS NOT NULL                  OR su2_chge_shon3 IS NOT NULL
# Line 8579  class om_widget extends om_widget_core { Line 8575  class om_widget extends om_widget_core {
8575                  OR su2_chge_shon18 IS NOT NULL                  OR su2_chge_shon18 IS NOT NULL
8576                  OR su2_chge_shon19 IS NOT NULL                  OR su2_chge_shon19 IS NOT NULL
8577                  OR su2_chge_shon20 IS NOT NULL                  OR su2_chge_shon20 IS NOT NULL
8578                    OR su2_chge_shon21 IS NOT NULL
8579                    OR su2_chge_shon22 IS NOT NULL
8580                  OR su2_demo_shon1 IS NOT NULL                  OR su2_demo_shon1 IS NOT NULL
8581                  OR su2_demo_shon2 IS NOT NULL                  OR su2_demo_shon2 IS NOT NULL
8582                  OR su2_demo_shon3 IS NOT NULL                  OR su2_demo_shon3 IS NOT NULL
# Line 8599  class om_widget extends om_widget_core { Line 8597  class om_widget extends om_widget_core {
8597                  OR su2_demo_shon18 IS NOT NULL                  OR su2_demo_shon18 IS NOT NULL
8598                  OR su2_demo_shon19 IS NOT NULL                  OR su2_demo_shon19 IS NOT NULL
8599                  OR su2_demo_shon20 IS NOT NULL                  OR su2_demo_shon20 IS NOT NULL
8600                    OR su2_demo_shon21 IS NOT NULL
8601                    OR su2_demo_shon22 IS NOT NULL
8602                  OR su2_sup_shon1 IS NOT NULL                  OR su2_sup_shon1 IS NOT NULL
8603                  OR su2_sup_shon2 IS NOT NULL                  OR su2_sup_shon2 IS NOT NULL
8604                  OR su2_sup_shon3 IS NOT NULL                  OR su2_sup_shon3 IS NOT NULL
# Line 8619  class om_widget extends om_widget_core { Line 8619  class om_widget extends om_widget_core {
8619                  OR su2_sup_shon18 IS NOT NULL                  OR su2_sup_shon18 IS NOT NULL
8620                  OR su2_sup_shon19 IS NOT NULL                  OR su2_sup_shon19 IS NOT NULL
8621                  OR su2_sup_shon20 IS NOT NULL                  OR su2_sup_shon20 IS NOT NULL
8622                    OR su2_sup_shon21 IS NOT NULL
8623                    OR su2_sup_shon22 IS NOT NULL
8624                  THEN                  THEN
8625                      REGEXP_REPLACE(CONCAT(                      REGEXP_REPLACE(CONCAT(
8626                          CASE WHEN donnees_techniques.su2_cstr_shon1 IS NULL                          CASE WHEN donnees_techniques.su2_cstr_shon1 IS NULL
# Line 8661  class om_widget extends om_widget_core { Line 8663  class om_widget extends om_widget_core {
8663                              THEN ''                              THEN ''
8664                              ELSE CONCAT ('Cinéma - ', donnees_techniques.su2_cstr_shon10, ' m² / ')                              ELSE CONCAT ('Cinéma - ', donnees_techniques.su2_cstr_shon10, ' m² / ')
8665                          END,                          END,
8666                            CASE WHEN donnees_techniques.su2_cstr_shon21 IS NULL
8667                                THEN ''
8668                                ELSE CONCAT ('Hôtels - ', donnees_techniques.su2_cstr_shon21, ' m² / ')
8669                            END,
8670                            CASE WHEN donnees_techniques.su2_cstr_shon22 IS NULL
8671                                THEN ''
8672                                ELSE CONCAT ('Autres hébergements touristiques - ', donnees_techniques.su2_cstr_shon22, ' m² / ')
8673                            END,
8674                          CASE WHEN donnees_techniques.su2_cstr_shon11 IS NULL                          CASE WHEN donnees_techniques.su2_cstr_shon11 IS NULL
8675                              THEN ''                              THEN ''
8676                              ELSE CONCAT ('Locaux et bureaux accueillant du public des administrations publiques et assimilés - ', donnees_techniques.su2_cstr_shon11, ' m² / ')                              ELSE CONCAT ('Locaux et bureaux accueillant du public des administrations publiques et assimilés - ', donnees_techniques.su2_cstr_shon11, ' m² / ')
# Line 8835  class om_widget extends om_widget_core { Line 8845  class om_widget extends om_widget_core {
8845          )          )
8846              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
8847                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
8848          %s          LEFT JOIN ".DB_PREFIXE."instructeur
8849          %s              ON dossier.instructeur=instructeur.instructeur
8850            LEFT JOIN ".DB_PREFIXE."om_utilisateur
8851                ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
8852            LEFT JOIN ".DB_PREFIXE."division
8853                ON dossier.division=division.division
8854          %s          %s
8855          ";          ";
8856    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
8857          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         } else {  
             $query_ct_where_instructeur_filter = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         } else {  
             $query_ct_where_division_filter = " LEFT JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division";  
         }  
8858          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
8859          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
8860          // collectivité          // collectivité
# Line 8883  class om_widget extends om_widget_core { Line 8869  class om_widget extends om_widget_core {
8869              ";              ";
8870          }          }
8871    
8872          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
8873          // WHERE - COMMON          // WHERE - COMMON
8874          $query_ct_where_common = "          $query_ct_where_common = "
8875          groupe.code != 'CTX'          groupe.code != 'CTX'
# Line 8959  class om_widget extends om_widget_core { Line 8945  class om_widget extends om_widget_core {
8945              case "instructeur" :              case "instructeur" :
8946                  $message_filtre = " "._("(filtrés par instructeur)");                  $message_filtre = " "._("(filtrés par instructeur)");
8947                  break;                  break;
8948                case "instructeur_secondaire" :
8949                    $message_filtre = " "._("(filtrés par instructeur secondaire)");
8950                    break;
8951              case "division" :              case "division" :
8952                  $message_filtre = " "._("(filtrés par division)");                  $message_filtre = " "._("(filtrés par division)");
8953                  break;                  break;
# Line 9336  class om_widget extends om_widget_core { Line 9325  class om_widget extends om_widget_core {
9325                  %s                  %s
9326              FROM              FROM
9327                  %s                  %s
9328                    %s
9329              WHERE              WHERE
9330                  %s                  %s
9331                  %s                  %s
9332                  %s",                  %s
9333                    %s
9334                %s",
9335              $query_ct_select,              $query_ct_select,
9336              $conf["query_ct_from"],              $conf["query_ct_from"],
9337                '%s', // emplacement pour les jointure du filtre
9338              $conf["query_ct_where"],              $conf["query_ct_where"],
9339              $conf["query_ct_where_datd_filter"],              $conf["query_ct_where_datd_filter"],
9340                $conf["query_ct_where_groupe"],
9341                '%s', // emplacement pour les conditions du filtre
9342              $query_ct_orderby              $query_ct_orderby
9343          );          );
9344            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
9345            $sqlFilter = $this->get_query_filter(
9346                $query,
9347                $conf['arguments']['filtre']
9348            );
9349            $query = sprintf(
9350                $query,
9351                $sqlFilter["FROM"],
9352                $sqlFilter["WHERE"]
9353            );
9354    
9355          /**          /**
9356           * Template nécessaires à l'affichage du widget           * Template nécessaires à l'affichage du widget
# Line 9562  class om_widget extends om_widget_core { Line 9567  class om_widget extends om_widget_core {
9567                  $elem = trim($arguments[$key]);                  $elem = trim($arguments[$key]);
9568                  //                  //
9569                  if ($key === "filtre"                  if ($key === "filtre"
9570                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "instructeur_secondaire", "division", "aucun"))) {
9571                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
9572                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
9573                      continue;                      continue;
# Line 9631  class om_widget extends om_widget_core { Line 9636  class om_widget extends om_widget_core {
9636          )          )
9637              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
9638                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
9639          %s          LEFT JOIN ".DB_PREFIXE."instructeur
9640          %s              ON dossier.instructeur=instructeur.instructeur
9641            LEFT JOIN ".DB_PREFIXE."om_utilisateur
9642                ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
9643            LEFT JOIN ".DB_PREFIXE."division
9644                ON dossier.division=division.division
9645          %s          %s
9646          ";          ";
9647    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
9648          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
9649          // Filtre sur les dossiers qui concernent l'utilisateur          // Filtre sur les dossiers qui concernent l'utilisateur
9650            /*
9651            $query_ct_where_instructeur_filter = "";
9652            $query_ct_where_division_filter = "";
9653          if ($filtre == "instructeur") {          if ($filtre == "instructeur") {
9654              //              //
9655              $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur              $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur
# Line 9665  class om_widget extends om_widget_core { Line 9675  class om_widget extends om_widget_core {
9675          } else {          } else {
9676              $query_ct_where_division_filter = " LEFT JOIN ".DB_PREFIXE."division              $query_ct_where_division_filter = " LEFT JOIN ".DB_PREFIXE."division
9677              ON dossier.division=division.division";              ON dossier.division=division.division";
9678          }          }*/
9679    
9680          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
9681          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
# Line 9681  class om_widget extends om_widget_core { Line 9691  class om_widget extends om_widget_core {
9691              ";              ";
9692          }          }
9693    
9694          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
9695    
9696          $query_ct_where ="          $query_ct_where ="
9697              dossier.a_qualifier IS TRUE              dossier.a_qualifier IS TRUE
# Line 9722  class om_widget extends om_widget_core { Line 9732  class om_widget extends om_widget_core {
9732              case "instructeur":              case "instructeur":
9733                  $message_filtre = " ".__("dont je suis l'instructeur");                  $message_filtre = " ".__("dont je suis l'instructeur");
9734                  break;                  break;
9735                case "instructeur_secondaire":
9736                    $message_filtre = " ".__("dont je suis l'instructeur secondaire");
9737                    break;
9738              case "aucun":              case "aucun":
9739                  if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {                  if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
9740                      $message_filtre = " ".__("situés dans ma collectivité");                      $message_filtre = " ".__("situés dans ma collectivité");
# Line 9809  class om_widget extends om_widget_core { Line 9822  class om_widget extends om_widget_core {
9822              if (isset($arguments[$key])) {              if (isset($arguments[$key])) {
9823                  $elem = trim($arguments[$key]);                  $elem = trim($arguments[$key]);
9824                  if ($key === "filtre"                  if ($key === "filtre"
9825                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "instructeur_secondaire", "division", "aucun"))) {
9826                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
9827                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
9828                      continue;                      continue;
# Line 9867  class om_widget extends om_widget_core { Line 9880  class om_widget extends om_widget_core {
9880                      ON demande.demande_type = demande_type.demande_type                      ON demande.demande_type = demande_type.demande_type
9881              )              )
9882                  ON demande.dossier_instruction = dossier.dossier                  ON demande.dossier_instruction = dossier.dossier
9883                      AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type',                      AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
9884                LEFT JOIN %1$sinstructeur
9885                    ON dossier.instructeur=instructeur.instructeur
9886                LEFT JOIN %1$som_utilisateur
9887                    ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
9888                LEFT JOIN %1$sdivision
9889                    ON dossier.division=division.division',
9890              DB_PREFIXE              DB_PREFIXE
9891          );          );
9892    
         $filtre = $arguments["filtre"];  
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             $query_ct_from .= sprintf("  
                 JOIN %1\$sinstructeur  
                     ON dossier.instructeur=instructeur.instructeur  
                 JOIN %1\$som_utilisateur  
                     ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                         AND om_utilisateur.login='%2\$s'",  
                 DB_PREFIXE,  
                 $_SESSION['login']  
             );  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             $query_ct_from .= sprintf("  
                 JOIN %1\$sdivision  
                     ON dossier.division=division.division AND division.division = %2\$s",  
                 DB_PREFIXE,  
                 $_SESSION['division']  
             );  
         }  
   
9893          $query_ct_where = sprintf(          $query_ct_where = sprintf(
9894              " dossier_autorisation_type_detaille.dossier_platau = TRUE AND              " dossier_autorisation_type_detaille.dossier_platau = TRUE AND
9895              (etat_transmission_platau='non_transmissible' OR              (etat_transmission_platau='non_transmissible' OR
# Line 9955  class om_widget extends om_widget_core { Line 9951  class om_widget extends om_widget_core {
9951          $arguments = $this->get_arguments($content, $params);          $arguments = $this->get_arguments($content, $params);
9952          // Récupération de la configuration du widget          // Récupération de la configuration du widget
9953          $conf = $this->get_config_dossier_non_transmis_platau($arguments);          $conf = $this->get_config_dossier_non_transmis_platau($arguments);
9954          $sql = sprintf(          $query = sprintf("
9955              "SELECT              SELECT
9956                  %s                  %s
9957              FROM              FROM
9958                  %s                  %s
9959                    %s
9960              WHERE              WHERE
9961                  %s                  %s
9962                    %s
9963              %s              %s
9964              %s",              %s",
9965              $conf["query_ct_select"],              $conf["query_ct_select"],
9966              $conf["query_ct_from"],              $conf["query_ct_from"],
9967                '%s', // emplacement pour les jointure du filtre
9968              $conf["query_ct_where"],              $conf["query_ct_where"],
9969                '%s', // emplacement pour les conditions du filtre
9970              $conf["query_ct_orderby"],              $conf["query_ct_orderby"],
9971              $conf["query_ct_limit"]              $conf["query_ct_limit"]
9972          );          );
9973            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
9974            $sqlFilter = $this->get_query_filter(
9975                $query,
9976                $conf['arguments']['filtre']
9977            );
9978            $query = sprintf(
9979                $query,
9980                $sqlFilter["FROM"],
9981                $sqlFilter["WHERE"]
9982            );
9983    
9984          $template_table = '          $template_table = '
9985              <table class="tab-tab">              <table class="tab-tab">
# Line 10023  class om_widget extends om_widget_core { Line 10033  class om_widget extends om_widget_core {
10033          // Affichage du widget avec une bulle          // Affichage du widget avec une bulle
10034          if ($conf["arguments"]["affichage"] === "nombre") {          if ($conf["arguments"]["affichage"] === "nombre") {
10035              // Execution de la requête              // Execution de la requête
10036              $res = $this->f->db->getone($sql);              $res = $this->f->db->getone($query);
10037              $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\");", VERBOSE_MODE);              $this->addToLog(__METHOD__."(): db->getone(\"".$query."\");", VERBOSE_MODE);
10038              $this->f->isDatabaseError($res);              $this->f->isDatabaseError($res);
10039            
10040              // Affichage du message d'informations              // Affichage du message d'informations
# Line 10055  class om_widget extends om_widget_core { Line 10065  class om_widget extends om_widget_core {
10065              );              );
10066          } else {          } else {
10067              // Affichage du widget avec un listing de 5 éléments              // Affichage du widget avec un listing de 5 éléments
10068              $res = $this->f->db->query($sql);              $res = $this->f->db->query($query);
10069              $this->f->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);              $this->f->addToLog(__METHOD__."(): db->query(\"".$query."\");", VERBOSE_MODE);
10070              $this->f->isDatabaseError($res);              $this->f->isDatabaseError($res);
10071    
10072              if ($res->numrows() == 0) {              if ($res->numrows() == 0) {
# Line 10156  class om_widget extends om_widget_core { Line 10166  class om_widget extends om_widget_core {
10166                      continue;                      continue;
10167                  }                  }
10168                  if ($key === "filtre"                  if ($key === "filtre"
10169                      && in_array($elem, array("instructeur", "division", "aucun"))) {                      && in_array($elem, array("instructeur", "instructeur_secondaire", "division", "aucun"))) {
10170                      // La valeur doit être dans cette liste                      // La valeur doit être dans cette liste
10171                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
10172                      continue;                      continue;
# Line 10168  class om_widget extends om_widget_core { Line 10178  class om_widget extends om_widget_core {
10178                      continue;                      continue;
10179                  }                  }
10180                  if ($key === "categorie_tache"                  if ($key === "categorie_tache"
10181                      && in_array($elem, array("portal", "platau"))) {                      && in_array($elem, array(PORTAL, PLATAU))) {
10182                      // Ce doit être un tableau                      // Ce doit être un tableau
10183                      $arguments[$key] = $elem;                      $arguments[$key] = $elem;
10184                      continue;                      continue;
# Line 10255  class om_widget extends om_widget_core { Line 10265  class om_widget extends om_widget_core {
10265          )          )
10266              ON demande.dossier_instruction = dossier.dossier              ON demande.dossier_instruction = dossier.dossier
10267                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type                  AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type
10268          %s          LEFT JOIN ".DB_PREFIXE."instructeur
10269          %s              ON dossier.instructeur=instructeur.instructeur
10270            LEFT JOIN ".DB_PREFIXE."om_utilisateur
10271                ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
10272            LEFT JOIN ".DB_PREFIXE."division
10273                ON dossier.division=division.division
10274          %s          %s
10275          ";          ";
10276    
# Line 10265  class om_widget extends om_widget_core { Line 10279  class om_widget extends om_widget_core {
10279              $arguments['nb_max_resultat']              $arguments['nb_max_resultat']
10280          );          );
10281    
         $query_ct_where_instructeur_filter = "";  
         $query_ct_where_division_filter = "";  
10282          $query_ct_where_collectivite_filter = "";          $query_ct_where_collectivite_filter = "";
         // Filtre sur les dossiers qui concernent l'utilisateur  
         if ($filtre == "instructeur") {  
             //  
             $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur  
                 AND om_utilisateur.login='".$_SESSION['login']."'  
             ";  
         } else {  
             $query_ct_where_instructeur_filter = " LEFT JOIN ".DB_PREFIXE."instructeur  
                 ON dossier.instructeur=instructeur.instructeur  
             LEFT JOIN ".DB_PREFIXE."om_utilisateur  
                 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";  
         }  
         // Filtre sur les dossier de la division  
         if ($filtre == "division") {  
             //  
             $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division  
             AND division.division = ".$_SESSION['division']."  
             ";  
         } else {  
             $query_ct_where_division_filter = " LEFT JOIN ".DB_PREFIXE."division  
             ON dossier.division=division.division";  
         }  
10283          // Dans tous les cas si l'utilisateur fait partie d'une collectivité          // Dans tous les cas si l'utilisateur fait partie d'une collectivité
10284          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa          // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
10285          // collectivité          // collectivité
# Line 10308  class om_widget extends om_widget_core { Line 10294  class om_widget extends om_widget_core {
10294              ";              ";
10295          }          }
10296    
10297          $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);          $query_ct_from = sprintf($query_ct_from, $query_ct_where_collectivite_filter);
10298    
10299    
10300          // WHERE - TASK ETAT          // WHERE - TASK ETAT
# Line 10465  class om_widget extends om_widget_core { Line 10451  class om_widget extends om_widget_core {
10451              $query_ct_orderby = "";              $query_ct_orderby = "";
10452              $query_ct_select = "COUNT(*)";              $query_ct_select = "COUNT(*)";
10453          }          }
   
10454          $query = sprintf("          $query = sprintf("
10455              SELECT              SELECT
10456                  %s                  %s
10457              FROM              FROM
10458                  %s                  %s
10459                  %s                  %s
10460                %s
10461                  %s                  %s
10462                  %s",              %s
10463                %s",
10464              $query_ct_select,              $query_ct_select,
10465              $conf["query_ct_from"],              $conf["query_ct_from"],
10466              ! empty($conf["query_ct_where"]) ? 'WHERE '.$conf["query_ct_where"] : "",              '%s', // emplacement pour les jointure du filtre
10467                ! empty($conf["query_ct_where"]) ?
10468                    'WHERE '.$conf["query_ct_where"] :
10469                    "",
10470                '%s', // emplacement pour les conditions du filtre
10471              $query_ct_orderby,              $query_ct_orderby,
10472              $query_ct_limit              $query_ct_limit
10473          );          );
10474            // Récupération des éléments à ajouter à la requête pour y intégrer le filtre
10475            $sqlFilter = $this->get_query_filter(
10476                $query,
10477                $conf['arguments']['filtre']
10478            );
10479            $query = sprintf(
10480                $query,
10481                $sqlFilter["FROM"],
10482                $sqlFilter["WHERE"]
10483            );
10484    
10485          /**          /**
10486           * Templates nécessaires à l'affichage du widget           * Templates nécessaires à l'affichage du widget
# Line 10638  class om_widget extends om_widget_core { Line 10639  class om_widget extends om_widget_core {
10639              _("Voir +")              _("Voir +")
10640          );          );
10641      }      }
10642    
10643        /**
10644         * Récupère une requête sql et un filtre et renvoie sous la forme
10645         * d'un tableau les jointures et les conditions nécessaire pour
10646         * mettre en place le filtre.
10647         * Si il n'y a pas de filtre, que la méthode de récupération du filtre
10648         * n'est pas configuré ou qu'aucune requête n'est passée en paramètre
10649         * le tableau sera renvoyé mais ses entrées seront vide.
10650         *
10651         * @param string query
10652         * @param string filter
10653         * @return string requête sql avec les filtres
10654         */
10655        public function get_query_filter(string $query, string $filter = '') {
10656            $sqlFilter = array(
10657                'FROM' => '',
10658                'WHERE' => ''
10659            );
10660            // Vérifie si le paramétrage est correct. Renvoie la requête sans modification
10661            // si ce n'est pas le cas
10662            if (! empty($query) &&
10663                ! empty($filter) &&
10664                in_array($filter, $this->existing_filters)) {
10665                // Fait appel à la méthode permettant de récupérer le sql du filtre
10666                $methodName = 'add_filter_'.$filter.'_to_query';
10667                if (method_exists($this, $methodName)) {
10668                    $sqlFilter = $this->$methodName($query);
10669                }
10670            }
10671            // Renvoie les jointures et les conditions nécessaire à l'intégration
10672            // du filtre
10673            return $sqlFilter;
10674        }
10675    
10676        protected function add_filter_instructeur_to_query(string $query) {
10677            $sqlFilter = array(
10678                'FROM' => '',
10679                'WHERE' => ''
10680            );
10681            // Vérifie si le lien entre la table instructeur et l'instructeur
10682            // du dossier existe. Si ce n'est pas le cas on ajoute une jointure.
10683            if (preg_match("/".DB_PREFIXE."instructeur(?!_)/i", $query) === 0) {
10684                $sqlFilter['FROM'] .= sprintf(
10685                        '
10686                        LEFT JOIN %1$sinstructeur
10687                            ON dossier.instructeur = instructeur.instructeur
10688                        LEFT JOIN %1$som_utilisateur
10689                            ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur
10690                        ',
10691                        DB_PREFIXE
10692                );
10693            }
10694    
10695            // Ajout du filtre dans le where.
10696            $sqlFilter['WHERE'] .= sprintf(
10697                ' %1$s om_utilisateur.login = \'%2$s\' ',
10698                preg_match("/\bWHERE\b/i", $query) === 0 ? 'WHERE' : 'AND',
10699                $_SESSION['login']
10700            );
10701            // Renvoie la requête
10702            return $sqlFilter;
10703        }
10704    
10705        protected function add_filter_instructeur_ou_instructeur_secondaire_to_query(string $query) {
10706            $sqlFilter = array(
10707                'FROM' => '',
10708                'WHERE' => ''
10709            );
10710            // Vérifie si le lien entre la table instructeur et l'instructeur
10711            // du dossier existe. Si ce n'est pas le cas on ajoute une jointure.
10712            if (preg_match("/".DB_PREFIXE."instructeur(?!_)/i", $query) === 0) {
10713                $sqlFilter['FROM'] .= sprintf(
10714                        '
10715                        LEFT JOIN %1$sinstructeur
10716                            ON dossier.instructeur = instructeur.instructeur
10717                        LEFT JOIN %1$som_utilisateur
10718                            ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur
10719                        ',
10720                        DB_PREFIXE
10721                );
10722            }
10723            // Vérifie si le lien entre la table instructeur et l'instructeur secondaire
10724            // du dossier existe. Si ce n'est pas le cas on ajoute une jointure.
10725            if (preg_match("/dossier.instructeur_2(?!_)/i", $query) === 0) {
10726                $sqlFilter['FROM'] .= sprintf(
10727                        '
10728                        LEFT JOIN %1$sinstructeur as instructeur_secondaire
10729                            ON dossier.instructeur_2 = instructeur_secondaire.instructeur
10730                        LEFT JOIN %1$som_utilisateur as utilisateur_2
10731                            ON instructeur_secondaire.om_utilisateur = utilisateur_2.om_utilisateur
10732                        ',
10733                        DB_PREFIXE
10734                );
10735            }
10736    
10737            // Ajout du filtre dans le where.
10738            $sqlFilter['WHERE'] .= sprintf(
10739                ' %1$s (om_utilisateur.login = \'%2$s\'
10740                    OR utilisateur_2.login = \'%2$s\') ',
10741                preg_match("/\bWHERE\b/i", $query) === 0 ? 'WHERE' : 'AND',
10742                $_SESSION['login']
10743            );
10744            // Renvoie la requête
10745            return $sqlFilter;
10746        }
10747    
10748        protected function add_filter_instructeur_secondaire_to_query(string $query) {
10749            $sqlFilter = array(
10750                'FROM' => '',
10751                'WHERE' => ''
10752            );
10753            // Vérifie si le lien entre la table instructeur et l'instructeur secondaire
10754            // du dossier existe. Si ce n'est pas le cas on ajoute une jointure.
10755            if (preg_match("/dossier.instructeur_2(?!_)/i", $query) === 0) {
10756                $sqlFilter['FROM'] = sprintf(
10757                        '
10758                        LEFT JOIN %1$sinstructeur as instructeur_secondaire
10759                            ON dossier.instructeur_2 = instructeur_secondaire.instructeur
10760                        LEFT JOIN %1$som_utilisateur as utilisateur_2
10761                            ON instructeur_secondaire.om_utilisateur = utilisateur_2.om_utilisateur
10762                        ',
10763                        DB_PREFIXE
10764                );
10765            }
10766    
10767            // Ajout du filtre dans le where.
10768            $sqlFilter['WHERE'] .= sprintf(
10769                ' %1$s utilisateur_2.login = \'%2$s\' ',
10770                preg_match("/\bWHERE\b/i", $query) === 0 ? 'WHERE' : 'AND',
10771                $_SESSION['login']
10772            );
10773            // Renvoie la requête
10774            return $sqlFilter;
10775        }
10776    
10777        protected function add_filter_division_to_query(string $query) {
10778            $sqlFilter = array(
10779                'FROM' => '',
10780                'WHERE' => ''
10781            );
10782            // Vérifie si le lien entre la table division et la division
10783            // du dossier existe. Si ce n'est pas le cas on ajoute une jointure.
10784            if (preg_match("/".DB_PREFIXE."division(?!_)/i", $query) === 0) {
10785                $sqlFilter['FROM'] =
10786                    '
10787                    LEFT JOIN %1$sdivision
10788                        ON dossier.division=division.division
10789                    ';
10790            }
10791    
10792            // Ajout du filtre dans le where.
10793            $sqlFilter['WHERE'] .= sprintf(
10794                ' %1$s division.division = \'%2$s\' ',
10795                preg_match("/\bWHERE\b/i", $query) === 0 ? 'WHERE' : 'AND',
10796                $_SESSION['division']
10797            );
10798    
10799            // Renvoie la requête
10800            return $sqlFilter;
10801        }
10802  }  }

Legend:
Removed from v.13136  
changed lines
  Added in v.13137

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26