Dotclear

source: plugins/antispam/index.php @ 1274:f004cbcbc7f4

Revision 1274:f004cbcbc7f4, 6.7 KB checked in by franck <carnet.franck.paul@…>, 12 years ago (diff)

fixes #1480, row is better than raw for a good scope :-)

RevLine 
[0]1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Antispam, a plugin for Dotclear 2.
5#
[1179]6# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
[0]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          }
[223]30
[0]31          if (!$filters[$_GET['f']]->hasGUI()) {
32               throw new Exception(__('Filter has no user interface.'));
33          }
[223]34
[0]35          $filter = $filters[$_GET['f']];
36          $filter_gui = $filter->gui($filter->guiURL());
37     }
[223]38
[0]39     # Remove all spam
[1052]40     if (!empty($_POST['delete_all']))
[0]41     {
42          $ts = dt::str('%Y-%m-%d %H:%M:%S',$_POST['ts'],$core->blog->settings->system->blog_timezone);
[223]43
[0]44          dcAntispam::delAllSpam($core,$ts);
[1052]45          http::redirect($p_url.'&del=1');
[0]46     }
[223]47
[0]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          }
[223]57
[0]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          }
[223]64
[0]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          }
[223]76
[0]77          if (isset($order)) {
78               foreach ($order as $i => $f) {
79                    $filters_opt[$f][1] = $i;
80               }
81          }
[223]82
[0]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          }
[223]89
[0]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>
[892]101  <title><?php echo ($filter_gui !== false ? sprintf(__('%s configuration'),$filter->name).' - ' : '').$page_name; ?></title>
[1040]102  <script type="text/javascript">
103  //<![CDATA[
104  <?php
105  echo dcPage::jsVar('dotclear.msg.confirm_spam_delete',__('Are you sure you want to delete all spams?'));
106  ?>
107  //]]>
108  </script>
[0]109  <?php
[1130]110  echo dcPage::jsPageTabs($default_tab);
111  $core->auth->user_prefs->addWorkspace('accessibility');
112  if (!$core->auth->user_prefs->accessibility->nodragdrop) {
113     echo
114          dcPage::jsLoad('js/jquery/jquery-ui.custom.js').
115          dcPage::jsLoad('index.php?pf=antispam/antispam.js');
[1127]116  }
[0]117  ?>
118  <link rel="stylesheet" type="text/css" href="index.php?pf=antispam/style.css" />
119</head>
120<body>
121<?php
122
123if ($filter_gui !== false)
124{
[505]125     echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.$p_url.'">'.$page_name.'</a>'.
126          ' &rsaquo; <span class="page-title">'.sprintf(__('%s configuration'),$filter->name).'</span></h2>';
[223]127
[0]128     echo $filter_gui;
129}
130else
131{
[505]132     echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_name.'</span></h2>';
133
[0]134     # Information
135     $spam_count = dcAntispam::countSpam($core);
136     $published_count = dcAntispam::countPublishedComments($core);
137     $moderationTTL = $core->blog->settings->antispam->antispam_moderation_ttl;
[223]138
[0]139     echo
[536]140     '<form action="'.$p_url.'" method="post" class="fieldset">'.
141     '<h3>'.__('Information').'</h3>';
[223]142
[1052]143     if (!empty($_GET['del'])) {
[907]144          dcPage::message(__('Spam comments have been successfully deleted.'));
[0]145     }
[223]146
[0]147     echo
148     '<ul class="spaminfo">'.
149     '<li class="spamcount"><a href="comments.php?status=-2">'.__('Junk comments:').'</a> '.
150     '<strong>'.$spam_count.'</strong></li>'.
151     '<li class="hamcount"><a href="comments.php?status=1">'.__('Published comments:').'</a> '.
152     $published_count.'</li>'.
153     '</ul>';
[223]154
[0]155     if ($spam_count > 0)
156     {
157          echo
158          '<p>'.$core->formNonce().
159          form::hidden('ts',time()).
[1052]160          '<input name="delete_all" class="delete" type="submit" value="'.__('Delete all spams').'" /></p>';
[0]161     }
162     if ($moderationTTL != null && $moderationTTL >=0) {
[565]163          echo '<p>'.sprintf(__('All spam comments older than %s day(s) will be automatically deleted.'), $moderationTTL).' '.
[1207]164          sprintf(__('You can modify this duration in the %s'),'<a href="blog_pref.php#antispam_moderation_ttl"> '.__('Blog preferences').'</a>').
[1125]165               '</p>';
[0]166     }
[536]167     echo '</form>';
[223]168
169
[0]170     # Filters
171     echo
[1130]172     '<form action="'.$p_url.'" method="post" class="fieldset" id="filters-form">';
[223]173
[0]174     if (!empty($_GET['upd'])) {
[907]175          dcPage::message(__('Filters configuration has been successfully saved.'));
[0]176     }
[223]177
[0]178     echo
179     '<table class="dragable">'.
[536]180     '<caption>'.__('Available spam filters').'</caption>'.
[0]181     '<thead><tr>'.
182     '<th>'.__('Order').'</th>'.
183     '<th>'.__('Active').'</th>'.
[223]184     '<th>'.__('Auto Del.').'</th>'.
[0]185     '<th class="nowrap">'.__('Filter name').'</th>'.
186     '<th colspan="2">'.__('Description').'</th>'.
187     '</tr></thead>'.
188     '<tbody id="filters-list" >';
[223]189
[0]190     $i = 0;
191     foreach ($filters as $fid => $f)
192     {
193          $gui_link = '&nbsp;';
194          if ($f->hasGUI()) {
195               $gui_link =
196               '<a href="'.html::escapeHTML($f->guiURL()).'">'.
197               '<img src="images/edit-mini.png" alt="'.__('Filter configuration').'" '.
198               'title="'.__('Filter configuration').'" /></a>';
199          }
[223]200
[0]201          echo
202          '<tr class="line'.($f->active ? '' : ' offline').'" id="f_'.$fid.'">'.
[1130]203          '<td class="handle">'.form::field(array('f_order['.$fid.']'),2,5,(string) $i, 'position', '', false, 'title="'.__('position').'"').'</td>'.
[223]204          '<td class="nowrap">'.form::checkbox(array('filters_active[]'),$fid,$f->active, '', '', false, 'title="'.__('Active').'"').'</td>'.
205          '<td class="nowrap">'.form::checkbox(array('filters_auto_del[]'),$fid,$f->auto_delete, '', '', false, 'title="'.__('Auto Del.').'"').'</td>'.
[1274]206          '<td class="nowrap" scope="row">'.$f->name.'</td>'.
[0]207          '<td class="maximal">'.$f->description.'</td>'.
208          '<td class="status">'.$gui_link.'</td>'.
209          '</tr>';
210          $i++;
211     }
212     echo
213     '</tbody></table>'.
214     '<p>'.form::hidden('filters_order','').
215     $core->formNonce().
216     '<input type="submit" name="filters_upd" value="'.__('Save').'" /></p>'.
[536]217     '</form>';
[223]218
219
[0]220     # Syndication
221     if (DC_ADMIN_URL)
222     {
[776]223          $ham_feed = $core->blog->url.$core->url->getURLFor(
224               'hamfeed',
225               $code = dcAntispam::getUserCode($core)
226          );
227          $spam_feed = $core->blog->url.$core->url->getURLFor(
228               'spamfeed',
229               $code = dcAntispam::getUserCode($core)
230          );
[223]231
[0]232          echo
[536]233          '<h3>'.__('Syndication').'</h3>'.
[0]234          '<ul class="spaminfo">'.
235          '<li class="feed"><a href="'.$spam_feed.'">'.__('Junk comments RSS feed').'</a></li>'.
236          '<li class="feed"><a href="'.$ham_feed.'">'.__('Published comments RSS feed').'</a></li>'.
[536]237          '</ul>';
[0]238     }
239}
240?>
241
242</body>
[536]243</html>
Note: See TracBrowser for help on using the repository browser.

Sites map