source: spip-zone/_plugins_/_dev_/widgets/action/widgets_html.php @ 5933

Last change on this file since 5933 was 5933, checked in by fil@…, 15 years ago

securite fonctionnelle chez moi

File size: 2.4 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5// fonction d'API manquante a SPIP...
6function autoriser_modifs($quoi = 'article', $id = 0) {
7        global $connect_id_auteur;
8        $connect_id_auteur = intval($GLOBALS['auteur_session']['id_auteur']);
9
10        if ($quoi != 'article') {
11                echo "pas implemente";
12                return false;
13        }
14
15        include_spip('inc/auth');
16        auth_rubrique(); # definit $connect_toutes_rubriques (argh)
17        return acces_article($id);
18}
19
20function action_widgets_html_dist() {
21        include_spip('inc/widgets');
22        include_spip('inc/texte');
23        include_spip('inc/rubriques');
24
25        header("Content-Type: text/html; charset=".$GLOBALS['meta']['charset']);
26
27        // Est-ce qu'on a recu des donnees ?
28        if (isset($_POST['widgets'])) {
29                $modifs = post_widgets();
30                if (is_array($modifs)
31                AND count($modifs) >= 1) { // normalement, un seul pour l'instant...
32                        foreach($modifs as $m) {
33                                if (preg_match(
34                                ',(article)-(titre|surtitre|soustitre|descriptif|chapo|texte|ps)-(\d+),',
35                                $m[0], $regs)) {
36                                        // Enregistrer dans la base
37                                        if ($m[2]
38                                        AND autoriser_modifs('article', $regs[3])
39                                        // TODO: on pourrait tester aussi le md5 envoye contre celui
40                                        // qui correspond a la base actuelle : dans ce cas avertir
41                                        // que "le contenu a ete modifie entre temps", et renvoyer
42                                        // un formulaire ad-hoc.
43                                        ) {
44                                                include_spip('action/editer_article');
45                                                revisions_articles($regs[3], false,
46                                                        array($regs[2] => $m[1]));
47                                        }
48
49                                        // type du widget
50                                        if (in_array($regs[2], array('chapo', 'texte', 'descriptif')))
51                                                echo propre($m[1]);
52                                        else
53                                                echo typo($m[1]);
54                                }
55                        }
56                } else if ($modifs === false) {
57                        echo "erreur";
58                }
59        }
60
61        // sinon on affiche le formulaire demande
62        else if (preg_match(
63        ',(article)-(titre|surtitre|soustitre|descriptif|chapo|texte|ps)-(\d+),',
64        $_GET['class'], $regs)) {
65
66                // type du widget
67                if (in_array($regs[2], array('chapo', 'texte', 'descriptif')))
68                        $type = 'texte';
69                else
70                        $type = 'ligne';
71
72                $s = spip_query("SELECT ".$regs[2]." AS val FROM spip_".$regs[1]."s
73                WHERE id_".$regs[1]."=".$regs[3]);
74                if ($t = spip_fetch_array($s)) {
75                        echo "<form method='post' action='".self()."'>\n";
76                        $n = new SecureWidget($regs[0], $t['val']);
77                        echo $n->code();
78                        echo $n->input($type);
79                        echo '<div style="position:absolute">';
80      echo '<input type="submit" value="ok" />'."\n";
81                        echo '<input class="cancel_widget" type="button" value="cancel" />'."\n";
82                        echo '</div>'."\n";
83      echo '</form>'."\n";
84                }
85        }
86}
87
88?>
Note: See TracBrowser for help on using the repository browser.