/[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 3799 - (show annotations)
Fri Mar 18 17:45:39 2016 UTC (8 years, 10 months ago) by fmichon
File size: 27253 byte(s)
* Coding : Factorisation des widgets de raccourcis pour accéder aux écrans de saisie de nouvelles demandes.

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."lien_dossier_demandeur
348 ON dossier.dossier = lien_dossier_demandeur.dossier AND lien_dossier_demandeur.petitionnaire_principal IS TRUE
349 LEFT JOIN ".DB_PREFIXE."demandeur
350 ON lien_dossier_demandeur.demandeur = demandeur.demandeur
351 LEFT JOIN ".DB_PREFIXE."dossier_autorisation
352 ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
353 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
354 ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
355 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
356 ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
357 LEFT JOIN ".DB_PREFIXE."instructeur
358 ON dossier.instructeur=instructeur.instructeur
359 LEFT JOIN ".DB_PREFIXE."om_utilisateur
360 ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
361 ";
362 // WHERE - COMMON
363 $query_ct_where_common = "
364 (
365 (
366 dossier.incomplet_notifie IS FALSE
367 AND date_limite <= CURRENT_TIMESTAMP + ".$nombre_de_jours." * interval '1 day'
368 )
369 OR
370 (
371 dossier.incomplet_notifie IS TRUE
372 AND dossier.incompletude IS TRUE
373 AND date_limite_incompletude <= CURRENT_TIMESTAMP + ".$nombre_de_jours." * interval '1 day'
374 )
375 )
376 AND dossier.avis_decision IS NULL
377 AND LOWER(dossier.accord_tacite) = 'oui'
378 ";
379 // WHERE - DATD
380 // Filtre sur le type détaillé des dossiers
381 $query_ct_where_datd_filter = "";
382 if (!is_null($codes_datd)
383 && is_array($codes_datd)
384 && count($codes_datd) != 0) {
385 //
386 $sql_codes = "";
387 //
388 foreach ($codes_datd as $code) {
389 $sql_codes .= " LOWER(dossier_autorisation_type_detaille.code) = '".$this->f->db->escapesimple(strtolower($code))."' OR ";
390 }
391 $sql_codes = substr($sql_codes, 0, count($sql_codes) - 4);
392 //
393 $query_ct_where_datd_filter = " AND ( ".$sql_codes." ) ";
394 }
395 // WHERE - USER
396 // Filtre sur les dossiers qui concernent l'utilisateur
397 $query_ct_where_user_filter = "";
398 //
399 if ($filtre == "instructeur") {
400 //
401 $query_ct_where_user_filter = "
402 AND om_utilisateur.login='".$_SESSION['login']."'
403 ";
404 } elseif ($filtre == "division") {
405 //
406 $query_ct_where_user_filter .= "
407 AND dossier.division = ".$_SESSION['division']."
408 ";
409 } elseif ($filtre == "aucun") {
410 //
411 if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
412 $query_ct_where_user_filter = "
413 AND dossier.om_collectivite=".$_SESSION['collectivite']."
414 ";
415 }
416 }
417 // ORDER BY
418 $query_ct_orderby = "
419 date_limite_na
420 ";
421
422 /**
423 * Message d'aide
424 */
425 //
426 $message_filtre = "";
427 //
428 switch($filtre) {
429 case "instructeur" :
430 $message_filtre = " "._("(filtrés par instructeur)");
431 break;
432 case "division" :
433 $message_filtre = " "._("(filtrés par division)");
434 break;
435 }
436 //
437 $message_help = sprintf(
438 _("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."),
439 (is_null($codes_datd) ? "": " (".implode(";",$codes_datd).")"),
440 $nombre_de_jours,
441 $message_filtre
442 );
443
444 /**
445 * Return
446 */
447 //
448 return array(
449 "arguments" => $arguments,
450 "message_help" => $message_help,
451 "query_ct_select" => $query_ct_select,
452 "query_ct_select_champaffiche" => $query_ct_select_champaffiche,
453 "query_ct_from" => $query_ct_from,
454 "query_ct_where_common" => $query_ct_where_common,
455 "query_ct_where_datd_filter" => $query_ct_where_datd_filter,
456 "query_ct_where_user_filter" => $query_ct_where_user_filter,
457 "query_ct_orderby" => $query_ct_orderby,
458 );
459 }
460
461 /**
462 * WIDGET DASHBOARD - Dossiers limites
463 *
464 * @return void
465 */
466 function view_widget_dossiers_limites($content = null) {
467
468 /**
469 * Ce widget est configurable via l'interface Web. Lors de la création
470 * du widget dans le paramétrage il est possible de spécifier la ou les
471 * options suivantes :
472 *
473 * - nombre_de_jours : c'est le délai en jours avant la date limite à
474 * partir duquel on souhaite voir apparaître les dossiers dans le
475 * widget.
476 * (default) Par défaut la valeur est 15 jours.
477 *
478 * - codes_datd : la liste des types de dossiers à afficher. exemple :
479 * "PCI;PCA;DPS;CUa;CUb".
480 * (default) Par défaut tous les types sont affichés. [null]
481 *
482 * - filtre :
483 * = instructeur
484 * = division
485 * = aucun
486 * (default) Par défaut les dossiers sont filtrés sur l'instructeur.
487 */
488 // Liste des paramètres
489 $params = array("nombre_de_jours", "codes_datd", "filtre", );
490 // Formatage des arguments reçus en paramètres
491 $arguments = $this->get_arguments($content, $params);
492 // Récupération de la configuration du widget
493 $conf = $this->get_config_dossiers_limites($arguments);
494 //
495 $nombre_de_jours = $conf["arguments"]["nombre_de_jours"];
496 $codes_datd = $conf["arguments"]["codes_datd"];
497 $filtre = $conf["arguments"]["filtre"];
498
499 /**
500 * Composition de la requête
501 */
502 //
503 $query = sprintf("
504 SELECT
505 %s
506 FROM
507 %s
508 WHERE
509 %s
510 %s
511 %s
512 ORDER BY
513 %s
514 LIMIT 10",
515 $conf["query_ct_select"],
516 $conf["query_ct_from"],
517 $conf["query_ct_where_common"],
518 $conf["query_ct_where_datd_filter"],
519 $conf["query_ct_where_user_filter"],
520 $conf["query_ct_orderby"]
521 );
522
523 /**
524 * Exécution de la requête
525 */
526 //
527 $res = $this->f->db->query($query);
528 $this->addToLog(__METHOD__."(): db->query(\"".$query."\");", VERBOSE_MODE);
529 $this->f->isDatabaseError($res);
530
531 // Affichage du message d'informations
532 printf(
533 '<div class="widget-help"><span class="info-16" title="%s"></span></div>',
534 $conf["message_help"]
535 );
536
537 /**
538 * Si il n'y a aucun dossier à afficher, alors on affiche un message
539 * clair à l'utilisateur et on sort de la vue.
540 */
541 // Si il n'y a aucun dossier à afficher
542 if ($res->numrows() == 0) {
543 // Affichage du message d'informations
544 echo _("Vous n'avez pas de dossiers limites pour le moment.");
545 // Exit
546 return;
547 }
548
549 /**
550 * Template nécessaires à l'affichage du widget
551 */
552 //
553 $template_table = '
554 <table class="tab-tab">
555 <thead>
556 <tr class="ui-tabs-nav ui-accordion ui-state-default tab-title">
557 <th class="title col-0 firstcol">
558 <span class="name">
559 %s
560 </span>
561 </th>
562 <th class="title col-1">
563 <span class="name">
564 %s
565 </span>
566 </th>
567 <th class="title col-2">
568 <span class="name">
569 %s
570 </span>
571 </th>
572 <th class="title col-3 lastcol">
573 <span class="name">
574 %s
575 </span>
576 </th>
577 </tr>
578 </thead>
579 <tbody>
580 %s
581 </tbody>
582 </table>
583 ';
584 //
585 $template_line = '
586 <tr class="tab-data odd">
587 <td class="col-1 firstcol">
588 %s
589 </td>
590 <td class="col-1">
591 %s
592 </td>
593 <td class="col-2">
594 %s
595 </td>
596 <td class="col-3 lastcol">
597 %s
598 </td>
599 </tr>
600 ';
601 //
602 $template_href = '../scr/form.php?obj=dossier_instruction&amp;action=3&amp;idx=%s';
603 //
604 $template_link = '
605 <a class="lienTable" href="%s">
606 %s
607 </a>
608 ';
609 //
610 $template_footer = '
611 <div class="widget-footer">
612 <a href="%s">
613 %s
614 </a>
615 </div>
616 ';
617
618 /**
619 * Si il y a des dossiers à afficher, alors on affiche le widget.
620 */
621 // On construit le contenu du tableau
622 $ct_tbody = '';
623 while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
624 // On construit l'attribut href du lien
625 $ct_href = sprintf(
626 $template_href,
627 // idx
628 $row["dossier"]
629 );
630 // On construit la ligne
631 $ct_tbody .= sprintf(
632 $template_line,
633 // Colonne 1 - Numéro de dossier
634 sprintf(
635 $template_link,
636 $ct_href,
637 $row["dossier_libelle"]
638 ),
639 // Colonne 2 - Nom du pétitionnaire
640 sprintf(
641 $template_link,
642 $ct_href,
643 $row["nom_petitionnaire"]
644 ),
645 // Colonne 3 - Date limite
646 sprintf(
647 $template_link,
648 $ct_href,
649 $this->f->formatDate($row["date_limite_na"])
650 ),
651 // Colonne 4 - Enjeu
652 sprintf(
653 $template_link,
654 $ct_href,
655 $row["enjeu"]
656 )
657 );
658 }
659 // Affichage du tableau listant les dossiers
660 printf(
661 $template_table,
662 // Colonne 1 - Numéro de dossier
663 _('dossier'),
664 // Colonne 2 - Nom du pétitionnaire
665 _('nom_petitionnaire'),
666 // Colonne 3 - Date limite
667 _('date_limite'),
668 // Colonne 4 - Enjeu
669 _('enjeu'),
670 // Contenu du tableau
671 $ct_tbody
672 );
673 // Affichage du footer
674 printf(
675 $template_footer,
676 // href (avec les paramètres du widget)
677 sprintf(
678 "../scr/tab.php?obj=dossiers_limites&nombre_de_jours=%s&codes_datd=%s&filtre=%s",
679 $nombre_de_jours,
680 (is_null($codes_datd) ? "" : implode(";",$codes_datd)),
681 $filtre
682 ),
683 // titre
684 _("Voir +")
685 );
686 }
687
688 /**
689 * Cet méthode permet de formater, la chaîne de caractères reçue du
690 * paramétrage du widget en un tableau de valeurs dont les clés
691 * correspondent aux clés passées en paramètre.
692 *
693 * @param string $content
694 * @param array $params
695 *
696 * @return array
697 */
698 function get_arguments($content = null, $params = array()) {
699 //
700 $arguments = array();
701 // On explose les paramètres reçus avec un élément par ligne
702 $params_tmp1 = explode("\n", $content);
703 // On boucle sur chaque ligne de paramètre
704 foreach ($params_tmp1 as $key => $value) {
705 // On explose le paramètre de sa valeur avec le séparateur '='
706 $params_tmp2[] = explode("=", $value);
707 }
708 // On boucle sur chaque paramètre reçu pour vérifier si la valeur reçue
709 // est acceptable ou non
710 foreach ($params_tmp2 as $key => $value) {
711 //
712 if (!isset($value[0]) || !isset($value[1])) {
713 continue;
714 }
715 //
716 if (in_array(trim($value[0]), $params)) {
717 $arguments[trim($value[0])] = trim($value[1]);
718 }
719 }
720 //
721 return $arguments;
722 }
723
724 }
725
726 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26