/[openfoncier]/branches/lien-openaria/obj/om_widget.class.php
ViewVC logotype

Diff of /branches/lien-openaria/obj/om_widget.class.php

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

revision 3890 by fmichon, Fri Apr 8 12:30:21 2016 UTC revision 4132 by jymadier, Thu May 12 12:54:52 2016 UTC
# Line 18  class om_widget extends om_widget_core { Line 18  class om_widget extends om_widget_core {
18      }      }
19    
20      /**      /**
21         *
22         */
23        var $template_help = '<div class="widget-help"><span class="info-16" title="%s"></span></div>';
24    
25        /**
26         *
27         */
28        var $template_footer = '
29        <div class="widget-footer">
30            <a href="%s">
31                %s
32            </a>
33        </div>
34        ';
35    
36        /**
37       * Cette méthode retourne un arbre html représentant un raccourci.       * Cette méthode retourne un arbre html représentant un raccourci.
38       *       *
39       * 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 533  class om_widget extends om_widget_core { Line 549  class om_widget extends om_widget_core {
549    
550          // Affichage du message d'informations          // Affichage du message d'informations
551          printf(          printf(
552              '<div class="widget-help"><span class="info-16" title="%s"></span></div>',              $this->template_help,
553              $conf["message_help"]              $conf["message_help"]
554          );          );
555    
# Line 609  class om_widget extends om_widget_core { Line 625  class om_widget extends om_widget_core {
625              %s              %s
626          </a>          </a>
627          ';          ';
         //  
         $template_footer = '  
         <div class="widget-footer">  
             <a href="%s">  
                 %s  
             </a>  
         </div>  
         ';  
628    
629          /**          /**
630           * Si il y a des dossiers à afficher, alors on affiche le widget.           * Si il y a des dossiers à afficher, alors on affiche le widget.
# Line 675  class om_widget extends om_widget_core { Line 683  class om_widget extends om_widget_core {
683          );          );
684          // Affichage du footer          // Affichage du footer
685          printf(          printf(
686              $template_footer,              $this->template_footer,
687              // href (avec les paramètres du widget)              // href (avec les paramètres du widget)
688              sprintf(              sprintf(
689                  "../scr/tab.php?obj=dossiers_limites&nombre_de_jours=%s&codes_datd=%s&filtre=%s",                  "../scr/tab.php?obj=dossiers_limites&nombre_de_jours=%s&codes_datd=%s&filtre=%s",
# Line 724  class om_widget extends om_widget_core { Line 732  class om_widget extends om_widget_core {
732          return $arguments;          return $arguments;
733      }      }
734    
735        /**
736         * WIDGET DASHBOARD - Retours de consultation
737         *
738         * @return void
739         */
740        function view_widget_consultation_retours($content = null) {
741    
742            /**
743             * Ce widget est configurable via l'interface Web. Lors de la création
744             * du widget dans le paramétrage il est possible de spécifier la ou les
745             * options suivantes :
746             *
747             * - filtre :
748             *    = instructeur
749             *    = division
750             *    = aucun
751             *   (default) Par défaut les dossiers sont filtrés sur l'instructeur.
752             */
753            // Liste des paramètres
754            $params = array("filtre", );
755            // Formatage des arguments reçus en paramètres
756            $arguments = $this->get_arguments($content, $params);
757            // Récupération de la configuration du widget
758            $conf = $this->get_config_consultation_retours($arguments);
759            //
760            $filtre = $conf["arguments"]["filtre"];
761    
762            /**
763             * Composition de la requête
764             */
765            //
766            $query = sprintf(
767                "SELECT
768                    count(*)
769                FROM
770                    %s
771                WHERE
772                    %s
773                    %s",
774                $conf["query_ct_from"],
775                $conf["query_ct_where_common"],
776                $conf["query_ct_where_user_filter"]
777            );
778    
779            /**
780             * Exécution de la requête
781             */
782            //
783            $res = $this->f->db->getone($query);
784            $this->addToLog(__METHOD__."(): db->getone(\"".$query."\");", VERBOSE_MODE);
785            $this->f->isDatabaseError($res);
786    
787            // Affichage du message d'informations
788            printf(
789                $this->template_help,
790                $conf["message_help"]
791            );
792    
793            //
794            if (intval($res) === 0) {
795                //
796                echo _("Aucun retour de consultation non lu.");
797                return;
798            }
799    
800    
801            /**
802             *
803             */
804            $template_panel = '
805            <div class="panel panel-box">
806                <div class="list-justified-container">
807                    <ul class="list-justified text-center">
808                        %s
809                    </ul>
810                </div>
811            </div>';
812            /**
813             *
814             */
815            //
816            $panel = "";
817            //
818            $template_elem = '
819            <li>
820                <span class="size-h3 box-icon rounded %s">%s</span>
821                <p class="text-muted">%s %s</p>
822            </li>
823            ';
824            $panel_elem = sprintf(
825                $template_elem,
826                "bg-info",
827                intval($res),
828                _("Non lu"),
829                ""
830            );
831            //
832            $panel .= sprintf(
833                $template_panel,
834                $panel_elem
835            );
836            echo $panel;
837    
838            /**
839             *
840             */
841            if ($filtre === "aucun") {
842                $obj_href_more_link = "consultation_tous_retours";
843            } elseif ($filtre === "division") {
844                $obj_href_more_link = "consultation_retours_ma_division";
845            } else {
846                $obj_href_more_link = "consultation_mes_retours";
847            }
848    
849            //
850            if (!$this->f->isAccredited(array($obj_href_more_link, $obj_href_more_link."_tab"), "OR")) {
851                return;
852            }
853            // Affichage du footer
854            printf(
855                $this->template_footer,
856                // href
857                sprintf(
858                    '../scr/tab.php?obj=%s',
859                    $obj_href_more_link
860                ),
861                // titre
862                _("Voir +")
863            );
864    
865        }
866    
867    
868        /**
869         * Cette méthode permet de récupérer la configuration du widget 'Retours de
870         * consultation'.
871         *
872         * @return array
873         */
874        function get_config_consultation_retours($arguments) {
875            // Initialisation du tableau des paramètres avec ses valeur par défaut
876            $arguments_default = array(
877                "filtre" => "instructeur",
878            );
879            // Vérification des arguments
880            foreach ($arguments_default as $key => $value) {
881                //
882                if (isset($arguments[$key])) {
883                    //
884                    $elem = trim($arguments[$key]);
885                    //
886                    if ($key === "filtre"
887                        && in_array($elem, array("instructeur", "division", "aucun"))) {
888                        // La valeur doit être dans cette liste
889                        $arguments[$key] = $elem;
890                        continue;
891                    }
892                }
893                //
894                $arguments[$key] = $value;
895            }
896            //
897            $filtre = $arguments["filtre"];
898    
899            /**
900             * Construction de la requête
901             */
902            // FROM
903            $query_ct_from = "
904            ".DB_PREFIXE."consultation
905            LEFT JOIN ".DB_PREFIXE."avis_consultation
906                ON consultation.avis_consultation=avis_consultation.avis_consultation
907            LEFT JOIN ".DB_PREFIXE."dossier
908                ON consultation.dossier=dossier.dossier
909            LEFT JOIN ".DB_PREFIXE."service
910                ON consultation.service=service.service
911            INNER JOIN ".DB_PREFIXE."instructeur
912                ON instructeur.instructeur=dossier.instructeur
913            INNER JOIN ".DB_PREFIXE."om_utilisateur
914                ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur
915            LEFT JOIN ".DB_PREFIXE."division
916                ON dossier.division=division.division
917            LEFT JOIN ".DB_PREFIXE."om_collectivite
918                ON dossier.om_collectivite=om_collectivite.om_collectivite";
919            // WHERE - COMMON
920            $query_ct_where_common = "
921            consultation.lu IS FALSE
922            ";
923            // WHERE - USER
924            // Filtre sur les dossiers qui concernent l'utilisateur
925            $query_ct_where_user_filter = "";
926            //
927            if ($filtre == "instructeur") {
928                //
929                $query_ct_where_user_filter .= "
930                AND om_utilisateur.login='".$_SESSION['login']."'
931                ";
932            } elseif ($filtre == "division") {
933                //
934                $query_ct_where_user_filter .= "
935                AND dossier.division = ".$_SESSION['division']."
936                ";
937            }
938            // Dans tous les cas si l'utilisateur fait partie d'une collectivité
939            // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
940            // collectivité
941            if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
942                $query_ct_where_user_filter .= "
943                AND dossier.om_collectivite=".$_SESSION['collectivite']."
944                ";
945            }
946    
947            /**
948             * Message d'aide
949             */
950            //
951            $message_filtre = "";
952            //
953            switch ($filtre) {
954                case "instructeur":
955                    $message_filtre = " "._("dont je suis l'instructeur");
956                    break;
957                case "division":
958                    $message_filtre = " "._("situés dans ma division");
959                    break;
960                case "aucun":
961                    if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
962                        $message_filtre = " "._("situés dans ma collectivité");
963                    } else {
964                        $message_filtre = " "._("situés dans toutes les collectivités");
965                    }
966                    break;
967            }
968            //
969            $message_help = sprintf(
970                _("Les consultations marquées comme 'non lu' qui concernent des ".
971                   "dossiers d'instruction%s."),
972                $message_filtre
973            );
974    
975            /**
976             * Return
977             */
978            //
979            return array(
980                "arguments" => $arguments,
981                "message_help" => $message_help,
982                "query_ct_from" => $query_ct_from,
983                "query_ct_where_common" => $query_ct_where_common,
984                "query_ct_where_user_filter" => $query_ct_where_user_filter,
985            );
986        }
987    
988  }  }
989    
990  ?>  ?>

Legend:
Removed from v.3890  
changed lines
  Added in v.4132

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26