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&action=0&advs_id=&tricol=&valide=&retour=tab&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&action=3&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 |
?> |