source: spip-zone/_plugins_/cvt_rechercher/trunk/cvt_rechercher_pipelines.php @ 120021

Last change on this file since 120021 was 120021, checked in by rastapopoulos@…, 13 months ago

Si jamais le retour du traiter était pas un tableau, pas d'erreur php

File size: 2.5 KB
Line 
1<?php
2
3// Sécurité
4if (!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 */
13function 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 */
34function 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
Note: See TracBrowser for help on using the repository browser.