Dotclear

source: plugins/antispam/index.php @ 565:a094a2471615

Revision 565:a094a2471615, 6.3 KB checked in by kozlika, 14 years ago (diff)

Accessib/ergo: améliorations des formulaires et titres de blog, antispam, users

Et le souci du détail avec une coquille dans un commentaire de users.php révélée par notre découvreur du jour. Thanks to adjaya  http://forum.dotclear.org/viewtopic.php?pid=306160#p306160

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Antispam, a plugin for Dotclear 2.
5#
6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12if (!defined('DC_CONTEXT_ADMIN')) { return; }
13dcPage::check('admin');
14
15dcAntispam::initFilters();
16$filters = dcAntispam::$filters->getFilters();
17
18$page_name = __('Antispam');
19$filter_gui = false;
20$default_tab = null;
21
22try
23{
24     # Show filter configuration GUI
25     if (!empty($_GET['f']))
26     {
27          if (!isset($filters[$_GET['f']])) {
28               throw new Exception(__('Filter does not exist.'));
29          }
30
31          if (!$filters[$_GET['f']]->hasGUI()) {
32               throw new Exception(__('Filter has no user interface.'));
33          }
34
35          $filter = $filters[$_GET['f']];
36          $filter_gui = $filter->gui($filter->guiURL());
37     }
38
39     # Remove all spam
40     if (!empty($_POST['delete_all']))
41     {
42          $ts = dt::str('%Y-%m-%d %H:%M:%S',$_POST['ts'],$core->blog->settings->system->blog_timezone);
43
44          dcAntispam::delAllSpam($core,$ts);
45          http::redirect($p_url.'&del=1');
46     }
47
48     # Update filters
49     if (isset($_POST['filters_upd']))
50     {
51          $filters_opt = array();
52          $i = 0;
53          foreach ($filters as $fid => $f) {
54               $filters_opt[$fid] = array(false,$i);
55               $i++;
56          }
57
58          # Enable active filters
59          if (isset($_POST['filters_active']) && is_array($_POST['filters_active'])) {
60               foreach ($_POST['filters_active'] as $v) {
61                    $filters_opt[$v][0] = true;
62               }
63          }
64
65          # Order filters
66          if (!empty($_POST['f_order']) && empty($_POST['filters_order']))
67          {
68               $order = $_POST['f_order'];
69               asort($order);
70               $order = array_keys($order);
71          }
72          elseif (!empty($_POST['filters_order']))
73          {
74               $order = explode(',',trim($_POST['filters_order'],','));
75          }
76
77          if (isset($order)) {
78               foreach ($order as $i => $f) {
79                    $filters_opt[$f][1] = $i;
80               }
81          }
82
83          # Set auto delete flag
84          if (isset($_POST['filters_auto_del']) && is_array($_POST['filters_auto_del'])) {
85               foreach ($_POST['filters_auto_del'] as $v) {
86                    $filters_opt[$v][2] = true;
87               }
88          }
89
90          dcAntispam::$filters->saveFilterOpts($filters_opt);
91          http::redirect($p_url.'&upd=1');
92     }
93}
94catch (Exception $e)
95{
96     $core->error->add($e->getMessage());
97}
98?>
99<html>
100<head>
101  <title><?php echo $page_name; ?></title>
102  <?php
103  echo
104  dcPage::jsToolMan().
105  dcPage::jsPageTabs($default_tab).
106  dcPage::jsLoad('index.php?pf=antispam/antispam.js');
107  ?>
108  <link rel="stylesheet" type="text/css" href="index.php?pf=antispam/style.css" />
109</head>
110<body>
111<?php
112
113if ($filter_gui !== false)
114{
115     echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.$p_url.'">'.$page_name.'</a>'.
116          ' &rsaquo; <span class="page-title">'.sprintf(__('%s configuration'),$filter->name).'</span></h2>';
117
118     echo $filter_gui;
119}
120else
121{
122     echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_name.'</span></h2>';
123
124     # Information
125     $spam_count = dcAntispam::countSpam($core);
126     $published_count = dcAntispam::countPublishedComments($core);
127     $moderationTTL = $core->blog->settings->antispam->antispam_moderation_ttl;
128
129     echo
130     '<form action="'.$p_url.'" method="post" class="fieldset">'.
131     '<h3>'.__('Information').'</h3>';
132
133     if (!empty($_GET['del'])) {
134          echo '<p class="message">'.__('Spam comments have been successfully deleted.').'</p>';
135     }
136
137     echo
138     '<ul class="spaminfo">'.
139     '<li class="spamcount"><a href="comments.php?status=-2">'.__('Junk comments:').'</a> '.
140     '<strong>'.$spam_count.'</strong></li>'.
141     '<li class="hamcount"><a href="comments.php?status=1">'.__('Published comments:').'</a> '.
142     $published_count.'</li>'.
143     '</ul>';
144
145     if ($spam_count > 0)
146     {
147          echo
148          '<p>'.$core->formNonce().
149          form::hidden('ts',time()).
150          '<input name="delete_all" class="delete" type="submit" value="'.__('Delete all spams').'" /></p>';
151     }
152     if ($moderationTTL != null && $moderationTTL >=0) {
153          echo '<p>'.sprintf(__('All spam comments older than %s day(s) will be automatically deleted.'), $moderationTTL).' '.
154          __('You can modify this duration in ').
155          '<a href="blog_pref.php"> '.__('Blog preferences').'</a></p>';
156     }
157     echo '</form>';
158
159
160     # Filters
161     echo
162     '<form action="'.$p_url.'" method="post" class="fieldset">';
163
164     if (!empty($_GET['upd'])) {
165          echo '<p class="message">'.__('Filters configuration has been successfully saved.').'</p>';
166     }
167
168     echo
169     '<table class="dragable">'.
170     '<caption>'.__('Available spam filters').'</caption>'.
171     '<thead><tr>'.
172     '<th>'.__('Order').'</th>'.
173     '<th>'.__('Active').'</th>'.
174     '<th>'.__('Auto Del.').'</th>'.
175     '<th class="nowrap">'.__('Filter name').'</th>'.
176     '<th colspan="2">'.__('Description').'</th>'.
177     '</tr></thead>'.
178     '<tbody id="filters-list" >';
179
180     $i = 0;
181     foreach ($filters as $fid => $f)
182     {
183          $gui_link = '&nbsp;';
184          if ($f->hasGUI()) {
185               $gui_link =
186               '<a href="'.html::escapeHTML($f->guiURL()).'">'.
187               '<img src="images/edit-mini.png" alt="'.__('Filter configuration').'" '.
188               'title="'.__('Filter configuration').'" /></a>';
189          }
190
191          echo
192          '<tr class="line'.($f->active ? '' : ' offline').'" id="f_'.$fid.'">'.
193          '<td class="handle">'.form::field(array('f_order['.$fid.']'),2,5,(string) $i, '', '', false, 'title="'.__('position').'"').'</td>'.
194          '<td class="nowrap">'.form::checkbox(array('filters_active[]'),$fid,$f->active, '', '', false, 'title="'.__('Active').'"').'</td>'.
195          '<td class="nowrap">'.form::checkbox(array('filters_auto_del[]'),$fid,$f->auto_delete, '', '', false, 'title="'.__('Auto Del.').'"').'</td>'.
196          '<td class="nowrap" scope="raw">'.$f->name.'</td>'.
197          '<td class="maximal">'.$f->description.'</td>'.
198          '<td class="status">'.$gui_link.'</td>'.
199          '</tr>';
200          $i++;
201     }
202     echo
203     '</tbody></table>'.
204     '<p>'.form::hidden('filters_order','').
205     $core->formNonce().
206     '<input type="submit" name="filters_upd" value="'.__('Save').'" /></p>'.
207     '</form>';
208
209
210     # Syndication
211     if (DC_ADMIN_URL)
212     {
213          $ham_feed = $core->blog->url.$core->url->getBase('hamfeed').'/'.$code = dcAntispam::getUserCode($core);
214          $spam_feed = $core->blog->url.$core->url->getBase('spamfeed').'/'.$code = dcAntispam::getUserCode($core);
215
216          echo
217          '<h3>'.__('Syndication').'</h3>'.
218          '<ul class="spaminfo">'.
219          '<li class="feed"><a href="'.$spam_feed.'">'.__('Junk comments RSS feed').'</a></li>'.
220          '<li class="feed"><a href="'.$ham_feed.'">'.__('Published comments RSS feed').'</a></li>'.
221          '</ul>';
222     }
223}
224?>
225
226</body>
227</html>
Note: See TracBrowser for help on using the repository browser.

Sites map