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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3890 - (hide annotations)
Fri Apr 8 12:30:21 2016 UTC (8 years, 9 months ago) by fmichon
File size: 27367 byte(s)
* Ajout d'un filtre supplémentaire sur le widget des dossiers limites : les dossiers
  qui sont dans l'état clôturé ne peuvent pas apparaître dans ce widget. C'est une 
  double vérification puisque seul les dossiers sans décision apparaissent dans ce
  widget et qu'une décision est obligatoire pour clôturer un dossier. L'objectif
  de cet ajout est lié à d'éventuels imports de données antérieures qui ne 
  respecteraient pas cette règle.

1 mbroquet 3730 <?php
2     /**
3     * OM_WIDGET - Surcharge du core
4     *
5     * L'objectif de la surcharge est de coder les vues spécifiques des widgets
6     * de type 'file'.
7     *
8     * @package openads
9     * @version SVN : $Id: om_widget.class.php 5673 2015-12-21 19:35:24Z nmeucci $
10     */
11    
12     require_once "../core/obj/om_widget.class.php";
13    
14     class om_widget extends om_widget_core {
15    
16     function __construct($id, &$dnu1 = null, $dnu2 = null) {
17     $this->constructeur($id);
18     }
19    
20     /**
21 fmichon 3799 * Cette méthode retourne un arbre html représentant un raccourci.
22     *
23     * Un raccourci est composé d'un lien, d'une image et d'une description.
24     * Voir les widgets :
25     * - widget_nouvelle_demande_autre_dossier
26     * - widget_nouvelle_demande_dossier_encours
27     * - widget_nouvelle_demande_nouveau_dossier
28     */
29     function get_display_widget_shortlink($config) {
30     return sprintf (
31     '<a href="%s"><span><img src="%s" align="left" alt="%s" />%s</span></a>',
32     $config["a_href"],
33     $config["img_src"],
34     $config["img_alt"],
35     $config["a_content"]
36     );
37     }
38    
39     /**
40     * WIDGET DASHBOARD - widget_nouvelle_demande_autre_dossier.
41     */
42     function view_widget_nouvelle_demande_autre_dossier($content = null) {
43     echo $this->get_display_widget_shortlink(array(
44     "a_href" => "../scr/tab.php?obj=demande_autre_dossier",
45     "img_src" => "../app/img/dossier-existant.png",
46     "img_alt" => _("Autres dossiers"),
47     "a_content" => _("Cliquer ici pour saisir une nouvelle demande concernant un dossier en cours ou une autorisation existante"),
48     ));
49     }
50    
51     /**
52     * WIDGET DASHBOARD - widget_nouvelle_demande_dossier_encours.
53     */
54     function view_widget_nouvelle_demande_dossier_encours($content = null) {
55     echo $this->get_display_widget_shortlink(array(
56     "a_href" => "../scr/tab.php?obj=demande_dossier_encours",
57     "img_src" => "../app/img/dossier-existant.png",
58     "img_alt" => _("Dossier en cours"),
59     "a_content" => _("Cliquer ici pour saisir une nouvelle demande concernant un dossier en cours"),
60     ));
61     }
62    
63     /**
64     * WIDGET DASHBOARD - widget_nouvelle_demande_nouveau_dossier.
65     */
66     function view_widget_nouvelle_demande_nouveau_dossier($content = null) {
67     echo $this->get_display_widget_shortlink(array(
68     "a_href" => "../scr/form.php?obj=demande_nouveau_dossier&amp;action=0&amp;advs_id=&amp;tricol=&amp;valide=&amp;retour=tab&amp;new=",
69     "img_src" => "../app/img/dossier-nouveau.png",
70     "img_alt" => _("Nouveau dossier"),
71     "a_content" => _("Cliquer ici pour saisir une nouvelle demande concernant le depot d'un nouveau dossier"),
72     ));
73     }
74    
75     /**
76 mbroquet 3730 * WIDGET DASHBOARD - widget_recherche_dossier.
77     *
78     * Quatre cas d'utilisation :
79     * - 1 - La valeur recherchée correspond exactement au code d'un DI,
80     * alors on accède directement à la fiche de visualisation du DI.
81     * - 2 - La valeur recherchée renvoi plusieurs DI, alors on accède au
82     * listing des dossiers d'instruction avec le formulaire de
83     * recherche avancée pré-rempli avec la valeur saisie.
84     * - 3 - La valeur recherchée renvoi aucun enregistrement, alors on
85     * affiche un message en ce sens directement dans le widget.
86     * - 4 - Aucune valeur n'est saisie, alors on affiche un message en ce
87     * sens directement dans le widget.
88     *
89     * @return void
90     */
91     function view_widget_recherche_dossier($content = null) {
92    
93     /**
94     * Traitement de la validation du formulaire
95     */
96     //
97     if ($this->f->get_submitted_post_value("validation") != null
98     && $this->f->get_submitted_post_value("dossier") !== null
99     && $this->f->get_submitted_post_value("dossier") != "") {
100     // Mémorisation de la recherche
101     $search = $this->f->db->escapesimple($this->f->get_submitted_post_value("dossier"));
102     // Ajout d'une étoile au début s'il n'y en n'a pas.
103     // Par defaut * est toujours ajouté à la fin des recherches.
104     if (substr($search, 0, 1) != '*') {
105     $search = '*'.$search;
106     }
107     // Traitement des valeurs postées
108     $posted_dossiers = $this->f->db->escapesimple(strtolower(str_replace("*", "%", $this->f->get_submitted_post_value("dossier"))));
109     $posted_dossiers = str_replace(';', ',', $posted_dossiers);
110    
111     //
112     // UNE VALEUR SAISIE
113     //
114    
115     // WHERE - Filtre Collectivité
116     $where_collectivite = "";
117     // Si collectivité utilisateur mono alors filtre sur celle-ci
118     if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
119     //
120     $where_collectivite = "
121     AND dossier.om_collectivite=".$_SESSION['collectivite']."
122     ";
123     }
124    
125     // Construction de la requête
126     // Pour chaque dossier on cherche sur les deux champs du code du
127     // dossier (un avec et un sans espaces)
128     $posted_dossiers = explode(',', $posted_dossiers);
129     $liste_dossiers = array();
130     foreach ($posted_dossiers as $posted_dossier) {
131     $sql = "
132     SELECT
133     dossier
134     FROM
135     ".DB_PREFIXE."dossier
136     WHERE
137     (LOWER(dossier.dossier) LIKE '%".$posted_dossier."%'
138     OR LOWER(dossier.dossier_libelle) LIKE '%".$posted_dossier."%' )
139     ";
140     $sql .= $where_collectivite;
141     // Exécution de la requête
142     $res = $this->f->db->query($sql);
143     $this->f->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
144     $this->f->isDatabaseError($res);
145     // On récupère les numéros de dossier dans les résultats
146     while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
147     $liste_dossiers[] = $row['dossier'];
148     }
149     }
150     $total_dossiers = count($liste_dossiers);
151     // Si on obtient un seul résultat
152     if ($total_dossiers == 1) {
153     // On reformate le dossier
154     $dossier = strtoupper(str_replace(' ', '', $liste_dossiers[0]));
155     // On redirige vers le listing des DI
156     echo '
157     <script type="text/javascript" >
158     widget_recherche_dossier(\''.$dossier.'\', 1);
159     </script>
160     ';
161     // On arrête l'exécution du script car l'utilisateur a été
162     // redirigé vers un autre script
163     exit();
164     }
165     // Si on obtient plusieurs résultats
166     if ($total_dossiers > 1) {
167     // On redirige vers le listing des DI
168     echo '
169     <script type="text/javascript" >
170     widget_recherche_dossier(\''.$search.'\', '.$total_dossiers.');
171     </script>
172     ';
173     // On arrête l'exécution du script car l'utilisateur a été
174     // redirigé vers un autre script
175     exit();
176     }
177     // Cas d'utilisation n°3
178     // Si aucun dossier trouve
179     // Affiche un message d'erreur
180     $erreur = _("Aucun dossier trouve");
181    
182     } elseif ($this->f->get_submitted_post_value("validation") != null
183     && $this->f->get_submitted_post_value("dossier") !== null
184     && $this->f->get_submitted_post_value("dossier") == '') {
185    
186     //
187     // AUCUNE VALEUR SAISIE
188     //
189    
190     // Cas d'utilisation n°4
191     // Affiche un message d'erreur
192     $erreur = _("Veuillez saisir un No de dossier.");
193    
194     }
195    
196     /**
197     * Affichage du widget
198     */
199     // Affichage du message d'informations
200     printf(
201     '<div class="widget-help"><span class="info-16" title="%s"></span></div>',
202     _("Permet la recherche directe de dossiers d'instruction.\n\n".
203     "Deux modes de saisie sont possibles :\n".
204     "- Code de dossier intégral 'PC0130551300027P0' ou 'PC 013055 13 00027P0' pour un accès direct à la fiche de visualisation du dossier d'instruction,\n".
205     "- Code de dossier partiel 'DP' ou 'PC*P0' ou '*013055*' pour un accès au formulaire de recherche avancée des dossiers d'instruction.")
206     );
207     // Ouverture du form
208     echo "\t<form method=\"post\" id=\"widget_recherche_dossier_form\" action=\"../scr/dashboard.php\">\n";
209     // Affichage d'un éventuel message d'erreur
210     if (isset($erreur) && $erreur != "") {
211     $class = "error";
212     $this->f->displayMessage($class, $erreur);
213     }
214     // Configuration du formulaire de recherche
215     $champs = array("dossier");
216     $form = new $this->om_formulaire(null, 0, 0, $champs);
217     $form->setLib("dossier", '<span class="om-icon om-icon-16 om-icon-fix loupe-16">Recherche</span>');
218     $form->setType("dossier", "text");
219     $form->setTaille("dossier", 20);
220     $form->setMax("dossier", 250);
221     // Affichage du formulaire
222     $form->entete();
223     $form->afficher($champs, 0, false, false);
224     $form->enpied();
225     // Affichage des contrôles du formulaire
226     echo "\t<div class=\"formControls\">\n";
227     echo "\t\t<input type=\"submit\" class=\"om-button ui-button ui-widget ui-state-default ui-corner-all\"
228     value=\""._("Valider")."\" name=\"validation\" />\n";
229     echo "\t</div>\n";
230     // Fermeture du form
231     echo "\t</form>\n";
232     }
233    
234     /**
235     * Cette méthode permet de récupérer la configuration du widget 'Dossiers
236     * limites'.
237     *
238     * @return array
239     */
240     function get_config_dossiers_limites($arguments) {
241     // Initialisation du tableau des paramètres avec ses valeur par défaut
242     $arguments_default = array(
243     "nombre_de_jours" => 15,
244     "codes_datd" => null,
245     "filtre" => "instructeur",
246     );
247     // Vérification des arguments
248     foreach ($arguments_default as $key => $value) {
249     //
250     if (isset($arguments[$key])) {
251     //
252     $elem = trim($arguments[$key]);
253     //
254     if ($key === "nombre_de_jours"
255     && intval($elem) > 0) {
256     // Ce doit être un entier
257     $arguments[$key] = intval($elem);
258     continue;
259     } elseif ($key === "codes_datd"
260     && $elem != "") {
261     // Ce doit être un tableau
262     $arguments[$key] = explode(";", $elem);
263     continue;
264     } elseif ($key === "filtre"
265     && in_array($elem, array("instructeur", "division", "aucun"))) {
266     // La valeur doit être dans cette liste
267     $arguments[$key] = $elem;
268     continue;
269     }
270     }
271     //
272     $arguments[$key] = $value;
273     }
274     //
275     $nombre_de_jours = $arguments["nombre_de_jours"];
276     $codes_datd = $arguments["codes_datd"];
277     $filtre = $arguments["filtre"];
278    
279     /**
280     * Construction de la requête
281     */
282     // SELECT
283     $query_ct_select = "
284     dossier.dossier,
285     dossier.dossier_libelle,
286     dossier.date_limite,
287     dossier.date_limite_incompletude,
288     CASE
289     WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE
290     THEN to_char(dossier.date_limite_incompletude, 'DD/MM/YYYY')
291     ELSE
292     to_char(dossier.date_limite, 'DD/MM/YYYY')
293     END as date_limite_na,
294     COALESCE(
295     demandeur.particulier_nom,
296     demandeur.personne_morale_denomination
297     ) AS nom_petitionnaire,
298     CASE
299     WHEN dossier.enjeu_erp is TRUE
300     THEN '<span class=''om-icon om-icon-16 om-icon-fix enjeu_erp-16'' title=''"._('Enjeu ERP')."''>ERP</span>'
301     ELSE
302     ''
303     END
304     ||
305     CASE
306     WHEN dossier.enjeu_urba is TRUE
307     THEN '<span class=''om-icon om-icon-16 om-icon-fix enjeu_urba-16'' title=''"._('Enjeu Urba')."''>URBA</span>'
308     ELSE
309     ''
310     END AS enjeu
311     ";
312     // SELECT - CHAMPAFFICHE
313     $query_ct_select_champaffiche = array(
314     'dossier.dossier as "'._("dossier").'"',
315     'dossier.dossier_libelle as "'._("dossier").'"',
316     'COALESCE(
317     demandeur.particulier_nom,
318     demandeur.personne_morale_denomination
319     ) AS "'._("nom_petitionnaire").'"',
320     'CASE
321     WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE
322     THEN to_char(dossier.date_limite_incompletude, \'DD/MM/YYYY\')
323     ELSE
324     to_char(dossier.date_limite, \'DD/MM/YYYY\')
325     END as "'._("date_limite").'"',
326     'CASE
327     WHEN dossier.enjeu_erp is TRUE
328     THEN \'<span class="om-icon om-icon-16 om-icon-fix enjeu_erp-16" title="'._('Enjeu ERP').'">ERP</span>\'
329     ELSE
330     \'\'
331     END
332     ||
333     CASE
334     WHEN dossier.enjeu_urba is TRUE
335     THEN \'<span class="om-icon om-icon-16 om-icon-fix enjeu_urba-16" title="'._('Enjeu Urba').'">URBA</span>\'
336     ELSE
337     \'\'
338     END AS "'._("enjeu").'"',
339     // XXX Attention cette colonne est cachée en css est doit donc restée la dernière du tableau
340     'CASE WHEN incomplet_notifie IS TRUE AND incompletude IS TRUE THEN
341     dossier.date_limite_incompletude ELSE
342     dossier.date_limite END as date_limite_na',
343     );
344     // FROM
345     $query_ct_from = "
346     ".DB_PREFIXE."dossier
347 fmichon 3890 LEFT JOIN ".DB_PREFIXE."etat
348     ON dossier.etat = etat.etat
349 mbroquet 3730 LEFT JOIN ".DB_PREFIXE."lien_dossier_demandeur
350     ON dossier.dossier = lien_dossier_demandeur.dossier AND lien_dossier_demandeur.petitionnaire_principal IS TRUE
351     LEFT JOIN ".DB_PREFIXE."demandeur
352     ON lien_dossier_demandeur.demandeur = demandeur.demandeur
353     LEFT JOIN ".DB_PREFIXE."dossier_autorisation
354     ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
355     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
356     ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
357     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
358     ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
359     LEFT JOIN ".DB_PREFIXE."instructeur
360     ON dossier.instructeur=instructeur.instructeur
361     LEFT JOIN ".DB_PREFIXE."om_utilisateur
362     ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
363     ";
364     // WHERE - COMMON
365     $query_ct_where_common = "
366     (
367     (
368     dossier.incomplet_notifie IS FALSE
369     AND date_limite <= CURRENT_TIMESTAMP + ".$nombre_de_jours." * interval '1 day'
370     )
371     OR
372     (
373     dossier.incomplet_notifie IS TRUE
374     AND dossier.incompletude IS TRUE
375     AND date_limite_incompletude <= CURRENT_TIMESTAMP + ".$nombre_de_jours." * interval '1 day'
376     )
377     )
378 fmichon 3890 AND etat.statut != 'cloture'
379 mbroquet 3730 AND dossier.avis_decision IS NULL
380     AND LOWER(dossier.accord_tacite) = 'oui'
381     ";
382     // WHERE - DATD
383     // Filtre sur le type détaillé des dossiers
384     $query_ct_where_datd_filter = "";
385     if (!is_null($codes_datd)
386     && is_array($codes_datd)
387     && count($codes_datd) != 0) {
388     //
389     $sql_codes = "";
390     //
391     foreach ($codes_datd as $code) {
392     $sql_codes .= " LOWER(dossier_autorisation_type_detaille.code) = '".$this->f->db->escapesimple(strtolower($code))."' OR ";
393     }
394     $sql_codes = substr($sql_codes, 0, count($sql_codes) - 4);
395     //
396     $query_ct_where_datd_filter = " AND ( ".$sql_codes." ) ";
397     }
398     // WHERE - USER
399     // Filtre sur les dossiers qui concernent l'utilisateur
400     $query_ct_where_user_filter = "";
401     //
402     if ($filtre == "instructeur") {
403     //
404     $query_ct_where_user_filter = "
405     AND om_utilisateur.login='".$_SESSION['login']."'
406     ";
407     } elseif ($filtre == "division") {
408     //
409     $query_ct_where_user_filter .= "
410     AND dossier.division = ".$_SESSION['division']."
411     ";
412     } elseif ($filtre == "aucun") {
413     //
414     if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
415     $query_ct_where_user_filter = "
416     AND dossier.om_collectivite=".$_SESSION['collectivite']."
417     ";
418     }
419     }
420     // ORDER BY
421     $query_ct_orderby = "
422     date_limite_na
423     ";
424    
425     /**
426     * Message d'aide
427     */
428     //
429     $message_filtre = "";
430     //
431     switch($filtre) {
432     case "instructeur" :
433     $message_filtre = " "._("(filtrés par instructeur)");
434     break;
435     case "division" :
436     $message_filtre = " "._("(filtrés par division)");
437     break;
438     }
439     //
440     $message_help = sprintf(
441     _("Les dossiers%s avec acceptation tacite sur lesquels aucune décision n'a été prise et dont la date limite est dans moins de %s jours%s."),
442     (is_null($codes_datd) ? "": " (".implode(";",$codes_datd).")"),
443     $nombre_de_jours,
444     $message_filtre
445     );
446    
447     /**
448     * Return
449     */
450     //
451     return array(
452     "arguments" => $arguments,
453     "message_help" => $message_help,
454     "query_ct_select" => $query_ct_select,
455     "query_ct_select_champaffiche" => $query_ct_select_champaffiche,
456     "query_ct_from" => $query_ct_from,
457     "query_ct_where_common" => $query_ct_where_common,
458     "query_ct_where_datd_filter" => $query_ct_where_datd_filter,
459     "query_ct_where_user_filter" => $query_ct_where_user_filter,
460     "query_ct_orderby" => $query_ct_orderby,
461     );
462     }
463    
464     /**
465     * WIDGET DASHBOARD - Dossiers limites
466     *
467     * @return void
468     */
469     function view_widget_dossiers_limites($content = null) {
470    
471     /**
472     * Ce widget est configurable via l'interface Web. Lors de la création
473     * du widget dans le paramétrage il est possible de spécifier la ou les
474     * options suivantes :
475     *
476     * - nombre_de_jours : c'est le délai en jours avant la date limite à
477     * partir duquel on souhaite voir apparaître les dossiers dans le
478     * widget.
479     * (default) Par défaut la valeur est 15 jours.
480     *
481     * - codes_datd : la liste des types de dossiers à afficher. exemple :
482     * "PCI;PCA;DPS;CUa;CUb".
483     * (default) Par défaut tous les types sont affichés. [null]
484     *
485     * - filtre :
486     * = instructeur
487     * = division
488     * = aucun
489     * (default) Par défaut les dossiers sont filtrés sur l'instructeur.
490     */
491     // Liste des paramètres
492     $params = array("nombre_de_jours", "codes_datd", "filtre", );
493     // Formatage des arguments reçus en paramètres
494     $arguments = $this->get_arguments($content, $params);
495     // Récupération de la configuration du widget
496     $conf = $this->get_config_dossiers_limites($arguments);
497     //
498     $nombre_de_jours = $conf["arguments"]["nombre_de_jours"];
499     $codes_datd = $conf["arguments"]["codes_datd"];
500     $filtre = $conf["arguments"]["filtre"];
501    
502     /**
503     * Composition de la requête
504     */
505     //
506     $query = sprintf("
507     SELECT
508     %s
509     FROM
510     %s
511     WHERE
512     %s
513     %s
514     %s
515     ORDER BY
516     %s
517     LIMIT 10",
518     $conf["query_ct_select"],
519     $conf["query_ct_from"],
520     $conf["query_ct_where_common"],
521     $conf["query_ct_where_datd_filter"],
522     $conf["query_ct_where_user_filter"],
523     $conf["query_ct_orderby"]
524     );
525    
526     /**
527     * Exécution de la requête
528     */
529     //
530     $res = $this->f->db->query($query);
531     $this->addToLog(__METHOD__."(): db->query(\"".$query."\");", VERBOSE_MODE);
532     $this->f->isDatabaseError($res);
533    
534     // Affichage du message d'informations
535     printf(
536     '<div class="widget-help"><span class="info-16" title="%s"></span></div>',
537     $conf["message_help"]
538     );
539    
540     /**
541     * Si il n'y a aucun dossier à afficher, alors on affiche un message
542     * clair à l'utilisateur et on sort de la vue.
543     */
544     // Si il n'y a aucun dossier à afficher
545     if ($res->numrows() == 0) {
546     // Affichage du message d'informations
547     echo _("Vous n'avez pas de dossiers limites pour le moment.");
548     // Exit
549     return;
550     }
551    
552     /**
553     * Template nécessaires à l'affichage du widget
554     */
555     //
556     $template_table = '
557     <table class="tab-tab">
558     <thead>
559     <tr class="ui-tabs-nav ui-accordion ui-state-default tab-title">
560     <th class="title col-0 firstcol">
561     <span class="name">
562     %s
563     </span>
564     </th>
565     <th class="title col-1">
566     <span class="name">
567     %s
568     </span>
569     </th>
570     <th class="title col-2">
571     <span class="name">
572     %s
573     </span>
574     </th>
575     <th class="title col-3 lastcol">
576     <span class="name">
577     %s
578     </span>
579     </th>
580     </tr>
581     </thead>
582     <tbody>
583     %s
584     </tbody>
585     </table>
586     ';
587     //
588     $template_line = '
589     <tr class="tab-data odd">
590     <td class="col-1 firstcol">
591     %s
592     </td>
593     <td class="col-1">
594     %s
595     </td>
596     <td class="col-2">
597     %s
598     </td>
599     <td class="col-3 lastcol">
600     %s
601     </td>
602     </tr>
603     ';
604     //
605     $template_href = '../scr/form.php?obj=dossier_instruction&amp;action=3&amp;idx=%s';
606     //
607     $template_link = '
608     <a class="lienTable" href="%s">
609     %s
610     </a>
611     ';
612     //
613     $template_footer = '
614     <div class="widget-footer">
615     <a href="%s">
616     %s
617     </a>
618     </div>
619     ';
620    
621     /**
622     * Si il y a des dossiers à afficher, alors on affiche le widget.
623     */
624     // On construit le contenu du tableau
625     $ct_tbody = '';
626     while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
627     // On construit l'attribut href du lien
628     $ct_href = sprintf(
629     $template_href,
630     // idx
631     $row["dossier"]
632     );
633     // On construit la ligne
634     $ct_tbody .= sprintf(
635     $template_line,
636     // Colonne 1 - Numéro de dossier
637     sprintf(
638     $template_link,
639     $ct_href,
640     $row["dossier_libelle"]
641     ),
642     // Colonne 2 - Nom du pétitionnaire
643     sprintf(
644     $template_link,
645     $ct_href,
646     $row["nom_petitionnaire"]
647     ),
648     // Colonne 3 - Date limite
649     sprintf(
650     $template_link,
651     $ct_href,
652     $this->f->formatDate($row["date_limite_na"])
653     ),
654     // Colonne 4 - Enjeu
655     sprintf(
656     $template_link,
657     $ct_href,
658     $row["enjeu"]
659     )
660     );
661     }
662     // Affichage du tableau listant les dossiers
663     printf(
664     $template_table,
665     // Colonne 1 - Numéro de dossier
666     _('dossier'),
667     // Colonne 2 - Nom du pétitionnaire
668     _('nom_petitionnaire'),
669     // Colonne 3 - Date limite
670     _('date_limite'),
671     // Colonne 4 - Enjeu
672     _('enjeu'),
673     // Contenu du tableau
674     $ct_tbody
675     );
676     // Affichage du footer
677     printf(
678     $template_footer,
679     // href (avec les paramètres du widget)
680     sprintf(
681     "../scr/tab.php?obj=dossiers_limites&nombre_de_jours=%s&codes_datd=%s&filtre=%s",
682     $nombre_de_jours,
683     (is_null($codes_datd) ? "" : implode(";",$codes_datd)),
684     $filtre
685     ),
686     // titre
687     _("Voir +")
688     );
689     }
690    
691     /**
692     * Cet méthode permet de formater, la chaîne de caractères reçue du
693     * paramétrage du widget en un tableau de valeurs dont les clés
694     * correspondent aux clés passées en paramètre.
695     *
696     * @param string $content
697     * @param array $params
698     *
699     * @return array
700     */
701     function get_arguments($content = null, $params = array()) {
702     //
703     $arguments = array();
704     // On explose les paramètres reçus avec un élément par ligne
705     $params_tmp1 = explode("\n", $content);
706     // On boucle sur chaque ligne de paramètre
707     foreach ($params_tmp1 as $key => $value) {
708     // On explose le paramètre de sa valeur avec le séparateur '='
709     $params_tmp2[] = explode("=", $value);
710     }
711     // On boucle sur chaque paramètre reçu pour vérifier si la valeur reçue
712     // est acceptable ou non
713     foreach ($params_tmp2 as $key => $value) {
714     //
715     if (!isset($value[0]) || !isset($value[1])) {
716     continue;
717     }
718     //
719     if (in_array(trim($value[0]), $params)) {
720     $arguments[trim($value[0])] = trim($value[1]);
721     }
722     }
723     //
724     return $arguments;
725     }
726    
727     }
728    
729     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26