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. |
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 |
|
|
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. |
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", |
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 |
?> |
?> |