source: spip-zone/_plugins_/_stable_/forms/forms_et_tables_1_9_1/balise/forms.php @ 7921

Last change on this file since 7921 was 7911, checked in by cedric@…, 14 years ago

sans le var_dump, et apres avoir teste le code commité ca va toujours mieux
pis faut bien ca pour rattraper le core non ?

File size: 4.2 KB
Line 
1<?php
2/*
3 * forms
4 * Gestion de formulaires editables dynamiques
5 *
6 * Auteurs :
7 * Antoine Pitrou
8 * Cedric Morin
9 * Renato
10 * ??? 2005,2006 - Distribue sous licence GNU/GPL
11 *
12 */
13
14if (!defined("_ECRIRE_INC_VERSION")) return;    #securite
15
16// Pas besoin de contexte de compilation
17global $balise_FORMS_collecte;
18$balise_FORMS_collecte = array('id_form','id_article','id_donnee');
19
20function balise_FORMS ($p) {
21        return calculer_balise_dynamique($p,'FORMS', array('id_form', 'id_article', 'id_donnee', 'class'));
22}
23
24function balise_FORMS_stat($args, $filtres) {
25        return $args;
26}
27 
28function balise_FORMS_dyn($id_form = 0, $id_article = 0, $id_donnee = 0, $class='', $script_validation = 'valide_form', $message_confirm='forms:avis_message_confirmation',$reponse_enregistree="forms:reponse_enregistree",$forms_obligatoires="") {
29        $url = self();
30        // nettoyer l'url qui est passee par htmlentities pour raison de securites
31        $url = str_replace("&amp;","&",$url);
32        if ($retour=='') $retour = $url;
33
34        $res = spip_query("SELECT * FROM spip_forms WHERE id_form="._q($id_form));
35        if (!$row = spip_fetch_array($res)) return;
36        else {
37                if ($forms_obligatoires!='' && $row['forms_obligatoires']!='') $forms_obligatoires .= ",";
38                $forms_obligatoires .= $row['forms_obligatoires'];
39                // substituer le formulaire obligatoire pas rempli si necessaire
40                if (strlen($forms_obligatoires)){
41                        $row=Forms_obligatoire($row,$forms_obligatoires);
42                        $id_form=$row['id_form'];
43                }
44        }
45
46        $erreur = array();
47        $reponse = '';
48        $formok = '';
49        $valeurs = array('0'=>'0');
50        $affiche_sondage = '';
51        $formactif = (_DIR_RESTREINT==_DIR_RESTREINT_ABS || preg_match(',donnee_edit$,',_request('exec')))?' ':'';
52
53        $id_donnee = $id_donnee?$id_donnee:intval(_request('id_donnee'));
54        $flag_reponse = (_request('ajout_reponse') == 'oui' && _request('id_form') == $id_form) && _request('nobotnobot')=='';
55        if ($flag_reponse) {
56                include_spip('inc/forms');
57                $url_validation = Forms_enregistrer_reponse_formulaire($id_form, $id_donnee, $erreur, $reponse, $script_validation, $id_article?"id_article=$id_article":"");
58                if (!$erreur) {
59                        $formok = _T($reponse_enregistree);
60                        if ($reponse)
61                          $reponse = _T($message_confirm,array('mail'=>$reponse));
62                }
63                else {
64                        // on reinjecte get et post dans $valeurs
65                        foreach($_GET as $key => $val)
66                                $valeurs[$key] = interdire_scripts($val);
67                        foreach($_POST as $key => $val)
68                                $valeurs[$key] = interdire_scripts($val);
69                }
70        }
71        elseif (!_DIR_RESTREINT && $id_donnee=_request('id_donnee'))
72                $valeurs = Forms_valeurs($id_form,$id_donnee);
73        elseif (_DIR_RESTREINT!="" && $row['modifiable']=='oui'){
74                global $auteur_session;
75                $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
76                $cookie = $_COOKIE[Forms_nom_cookie_form($id_form)];
77                //On retourne les donnees si auteur ou cookie
78                $q = "SELECT donnees.id_donnee " .
79                        "FROM spip_forms_donnees AS donnees " .
80                        "WHERE donnees.id_form="._q($id_form)." ".
81                        "AND donnees.statut='publie' ";
82                if ($cookie) $q.="AND (cookie="._q($cookie)." OR id_auteur="._q($id_auteur).") ";
83                else
84                        if ($id_auteur)
85                                $q.="AND id_auteur="._q($id_auteur)." ";
86                        else
87                                $q.="AND 0=1 ";
88                //si unique, ignorer id_donnee, si pas id_donnee, ne renverra rien
89                if ($row['multiple']=='oui' && $id_donnee) $q.="AND donnees.id_donnee="._q($id_donnee);
90                $res = spip_query($q);
91                if($row2 = spip_fetch_array($res)){
92                        $valeurs = Forms_valeurs($id_form,$row2['id_donnee']);
93                }
94        }
95
96        if ($row['type_form'] == 'sondage' && $row['public']=='oui'){
97                include_spip('inc/forms');
98                if ((Forms_verif_cookie_sondage_utilise($id_form)==true)&&(_DIR_RESTREINT!=""))
99                        $affiche_sondage=' ';
100        }
101        include_spip('inc/filtres');
102        return array('formulaires/forms', 0, 
103                array(
104                        'erreur_message'=>isset($erreur['@'])?$erreur['@']:'',
105                        'erreur'=>serialize($erreur),
106                        'reponse'=>filtrer_entites($reponse),
107                        'id_article' => $id_article,
108                        'id_form' => $id_form,
109                        'id_donnee' => $id_donnee?$id_donnee:'',
110                        'self' => $url,
111                        'valeurs' => serialize($valeurs),
112                        'url_validation' => str_replace("&amp;","&",$url_validation),
113                        'affiche_sondage' => $affiche_sondage,
114                        'formok' => filtrer_entites($formok),
115                        'formvisible' => $formok?(_DIR_RESTREINT!=_DIR_RESTREINT_ABS):true,
116                        'formactif' => $formactif,
117                        'class' => 'formulaires/'.($class?$class:'forms_structure')
118                ));
119}
120
121?>
Note: See TracBrowser for help on using the repository browser.