/[openfoncier]/branches/migration-permissions-service-consulte/obj/om_widget.class.php
ViewVC logotype

Diff of /branches/migration-permissions-service-consulte/obj/om_widget.class.php

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

revision 4132 by jymadier, Thu May 12 12:54:52 2016 UTC revision 4138 by fmichon, Thu May 12 14:04:21 2016 UTC
# Line 733  class om_widget extends om_widget_core { Line 733  class om_widget extends om_widget_core {
733      }      }
734    
735      /**      /**
736         * WIDGET DASHBOARD - Retours de messages
737         *
738         * @return void
739         */
740        function view_widget_messages_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_messages_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 message 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 = "messages_tous_retours";
843            } elseif ($filtre === "division") {
844                $obj_href_more_link = "messages_retours_ma_division";
845            } else {
846                $obj_href_more_link = "messages_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         * messages'.
871         *
872         * @return array
873         */
874        function get_config_messages_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."dossier_message
905            LEFT JOIN ".DB_PREFIXE."dossier
906                ON dossier_message.dossier=dossier.dossier
907            INNER JOIN ".DB_PREFIXE."instructeur
908                ON instructeur.instructeur=dossier.instructeur
909            INNER JOIN ".DB_PREFIXE."om_utilisateur
910                ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur
911            LEFT JOIN ".DB_PREFIXE."division
912                ON dossier.division=division.division
913            LEFT JOIN ".DB_PREFIXE."om_collectivite
914                ON dossier.om_collectivite=om_collectivite.om_collectivite";
915            // WHERE - COMMON
916            $query_ct_where_common = "
917            dossier_message.lu IS FALSE
918            ";
919            // WHERE - USER
920            // Filtre sur les dossiers qui concernent l'utilisateur
921            $query_ct_where_user_filter = "";
922            //
923            if ($filtre == "instructeur") {
924                //
925                $query_ct_where_user_filter .= "
926                AND om_utilisateur.login='".$_SESSION['login']."'
927                ";
928            } elseif ($filtre == "division") {
929                //
930                $query_ct_where_user_filter .= "
931                AND dossier.division = ".$_SESSION['division']."
932                ";
933            }
934            // Dans tous les cas si l'utilisateur fait partie d'une collectivité
935            // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
936            // collectivité
937            if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
938                $query_ct_where_user_filter .= "
939                AND dossier.om_collectivite=".$_SESSION['collectivite']."
940                ";
941            }
942    
943            /**
944             * Message d'aide
945             */
946            //
947            $message_filtre = "";
948            //
949            switch ($filtre) {
950                case "instructeur":
951                    $message_filtre = " "._("dont je suis l'instructeur");
952                    break;
953                case "division":
954                    $message_filtre = " "._("situés dans ma division");
955                    break;
956                case "aucun":
957                    if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
958                        $message_filtre = " "._("situés dans ma collectivité");
959                    } else {
960                        $message_filtre = " "._("situés dans toutes les collectivités");
961                    }
962                    break;
963            }
964            //
965            $message_help = sprintf(
966                _("Les messages marqués comme 'non lu' qui concernent des ".
967                   "dossiers d'instruction%s."),
968                $message_filtre
969            );
970    
971            /**
972             * Return
973             */
974            //
975            return array(
976                "arguments" => $arguments,
977                "message_help" => $message_help,
978                "query_ct_from" => $query_ct_from,
979                "query_ct_where_common" => $query_ct_where_common,
980                "query_ct_where_user_filter" => $query_ct_where_user_filter,
981            );
982        }
983    
984        /**
985       * WIDGET DASHBOARD - Retours de consultation       * WIDGET DASHBOARD - Retours de consultation
986       *       *
987       * @return void       * @return void

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26