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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3890 - (show 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 <?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 * 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 * 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 LEFT JOIN ".DB_PREFIXE."etat
348 ON dossier.etat = etat.etat
349 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 AND etat.statut != 'cloture'
379 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