1 | <?php |
---|
2 | |
---|
3 | // Sécurité |
---|
4 | if (!defined('_ECRIRE_INC_VERSION')) return; |
---|
5 | |
---|
6 | /** |
---|
7 | * Générer le traitement des formulaires de recherche |
---|
8 | * |
---|
9 | * @pipeline formulaire_charger |
---|
10 | * @param array $flux Données du pipeline |
---|
11 | * @return array Retourne les données du pipeline modifiées |
---|
12 | */ |
---|
13 | function cvt_rechercher_formulaire_charger($flux){ |
---|
14 | if ( |
---|
15 | $form = $flux['args']['form'] |
---|
16 | and strncmp($form, 'rechercher_', 11) == 0 // un #FORMULAIRE_RECHERCHER_XXX |
---|
17 | ) { |
---|
18 | // On modifie le texte du bouton de validation de Saisies s'il n'est pas déjà défini |
---|
19 | if (!isset($flux['data']['saisies_texte_submit'])) { |
---|
20 | $flux['data']['saisies_texte_submit'] = _T('info_rechercher'); |
---|
21 | } |
---|
22 | } |
---|
23 | |
---|
24 | return $flux; |
---|
25 | } |
---|
26 | |
---|
27 | /** |
---|
28 | * Générer le traitement des formulaires de recherche |
---|
29 | * |
---|
30 | * @pipeline formulaire_traiter |
---|
31 | * @param array $flux Données du pipeline |
---|
32 | * @return array Retourne les données du pipeline modifiées |
---|
33 | */ |
---|
34 | function cvt_rechercher_formulaire_traiter($flux){ |
---|
35 | if ( |
---|
36 | $form = $flux['args']['form'] |
---|
37 | and strncmp($form, 'rechercher_', 11) == 0 // un #FORMULAIRE_RECHERCHER_XXX |
---|
38 | and $args = $flux['args']['args'] |
---|
39 | ) { |
---|
40 | include_spip('inc/filtres'); |
---|
41 | |
---|
42 | // On va chercher le contexte de base du formulaire |
---|
43 | $contexte = array(); |
---|
44 | if ($fonction_charger = charger_fonction("charger", "formulaires/$form/", true)) { |
---|
45 | $contexte = call_user_func_array($fonction_charger, $args); |
---|
46 | } |
---|
47 | $contexte = pipeline( |
---|
48 | 'formulaire_charger', |
---|
49 | array( |
---|
50 | 'args' => array('form'=>$form, 'args'=>$args, 'je_suis_poste'=>false), |
---|
51 | 'data' => $contexte) |
---|
52 | ); |
---|
53 | |
---|
54 | // Il faut une configuration pour les champs de recherche |
---|
55 | if (isset($contexte['_rechercher_champs']) and $rechercher_champs = $contexte['_rechercher_champs']) { |
---|
56 | // Le premier argument doit être un URL de destination |
---|
57 | $redirect = $args[0]; |
---|
58 | |
---|
59 | foreach ($rechercher_champs as $champ=>$config) { |
---|
60 | // On netttoie l'ancienne valeur |
---|
61 | if (isset($config['multiple']) and $config['multiple']) { |
---|
62 | $redirect = parametre_url($redirect, $champ.'[]', ''); |
---|
63 | } |
---|
64 | else { |
---|
65 | $redirect = parametre_url($redirect, $champ, ''); |
---|
66 | } |
---|
67 | |
---|
68 | // Si une nouvelle valeur existe, on l'ajoute |
---|
69 | if ($nouvelle = _request($champ)) { |
---|
70 | $redirect = parametre_url($redirect, $champ, $nouvelle); |
---|
71 | } |
---|
72 | } |
---|
73 | |
---|
74 | // Si on a configuré une ancre |
---|
75 | if (isset($contexte['_rechercher_ancre']) and $ancre = $contexte['_rechercher_ancre']) { |
---|
76 | $redirect = ancre_url($redirect, $ancre); |
---|
77 | } |
---|
78 | |
---|
79 | if (!is_array($flux['data'])) { |
---|
80 | $flux['data'] = array(); |
---|
81 | } |
---|
82 | $flux['data']['redirect'] = $redirect; |
---|
83 | } |
---|
84 | } |
---|
85 | |
---|
86 | return $flux; |
---|
87 | } |
---|
88 | |
---|