Dotclear

Changeset 1052:de274bbd7b80


Ignore:
Timestamp:
12/03/12 14:14:58 (13 years ago)
Author:
franck <carnet.franck.paul@…>
Branch:
default
Message:

Cope with junk comments without antispam plugin enabled (addresses #903)

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • admin/comments.php

    r1051 r1052  
    1515dcPage::check('usage,contentadmin'); 
    1616 
     17if (!empty($_POST['delete_all_spam'])) 
     18{ 
     19     try { 
     20          $core->blog->delJunkComments(); 
     21          http::redirect('comments.php?delspam=1'); 
     22     } catch (Exception $e) { 
     23          $core->error->add($e->getMessage()); 
     24     } 
     25} 
     26 
    1727# Creating filter combo boxes 
    1828# Filter form we'll put in html_block 
     
    164174if (!$core->error->flag()) 
    165175{ 
     176     if (!empty($_GET['delspam'])) { 
     177          dcPage::message(__('Spam comments have been successfully deleted.')); 
     178     } 
     179      
    166180     # Filters 
    167181     if (!$show_filters) { 
     
    210224      
    211225     if (!$with_spam) { 
     226 
    212227          $spam_count = $core->blog->getComments(array('comment_status'=>-2),true)->f(0); 
    213            
    214           if (!empty($_GET['delspam'])) { 
    215                dcPage::message(__('Spam comments have been successfully deleted.')); 
    216           } 
    217228           
    218229          if ($spam_count > 0) { 
    219230                
    220                if ($core->plugins->moduleExists('antispam')) { 
    221                     echo  
    222                     '<form action="plugin.php?p=antispam" method="post" class="fieldset">'; 
    223                } 
     231               echo  
     232                    '<form action="comments.php" method="post" class="fieldset">'; 
    224233 
    225234               if ($spam_count == 1) { 
     
    231240               } 
    232241                
    233                if ($core->plugins->moduleExists('antispam')) { 
    234  
    235                     $moderationTTL = $core->blog->settings->antispam->antispam_moderation_ttl; 
    236                     $spam_redir = 
    237                          'comments.php?type='.$type. 
    238                          '&author='.preg_replace('/%/','%%',$author). 
    239                          '&status='.$status. 
    240                          '&sortby='.$sortby. 
    241                          '&ip='.preg_replace('/%/','%%',$ip). 
    242                          '&order='.$order. 
    243                          '&page='.$page. 
    244                          '&nb='.$nb_per_page; 
    245                      
    246                     echo 
     242               echo 
    247243                    $core->formNonce(). 
    248                     form::hidden('ts',time()). 
    249                     form::hidden('redir',$spam_redir). 
    250244                    '<input name="delete_all_spam" class="delete" type="submit" value="'.__('Delete all spams').'" /></p>'; 
    251245 
    252                     if ($moderationTTL != null && $moderationTTL >=0) { 
    253                          echo '<p>'.sprintf(__('All spam comments older than %s day(s) will be automatically deleted.'), $moderationTTL).' '. 
    254                          sprintf(__('You can modify this duration in the %s'),'<a href="blog_pref.php"> '.__('Blog preferences').'</a>'). 
    255                          '</p>'; 
    256                     } 
    257  
    258                     echo '</form>'; 
    259                } 
     246               # --BEHAVIOR-- adminCommentsSpamForm 
     247               $core->callBehavior('adminCommentsSpamForm',$core); 
     248 
     249               echo '</form>'; 
    260250          } 
    261251     } 
  • inc/core/class.dc.blog.php

    r1042 r1052  
    22152215          $this->triggerBlog(); 
    22162216     } 
     2217 
     2218     public function delJunkComments() 
     2219     { 
     2220          if (!$this->core->auth->check('delete,contentadmin',$this->id)) { 
     2221               throw new Exception(__('You are not allowed to delete comments')); 
     2222          } 
     2223           
     2224          # mySQL uses "INNER JOIN" synthax 
     2225          if ($this->con->driver() == 'mysql') { 
     2226               $strReq =  
     2227                    'DELETE FROM tc '. 
     2228                    'USING '.$this->prefix.'comment tc '. 
     2229                    'INNER JOIN '.$this->prefix.'post tp '; 
     2230          } 
     2231          # pgSQL uses nothing special 
     2232          else { 
     2233               $strReq =  
     2234                    'DELETE FROM '.$this->prefix.'comment tc '. 
     2235                    'USING '.$this->prefix.'post tp '; 
     2236          } 
     2237           
     2238          $strReq .=  
     2239               'WHERE tc.post_id = tp.post_id '. 
     2240               "AND tp.blog_id = '".$this->con->escape($this->id)."' ". 
     2241               'AND comment_status = -2'; 
     2242           
     2243          #If user can only delete, we need to check the post's owner 
     2244          if (!$this->core->auth->check('contentadmin',$this->id)) 
     2245          { 
     2246               $strReq .=  
     2247                    "AND user_id = '".$this->con->escape($this->core->auth->userID())."' "; 
     2248          } 
     2249           
     2250          $this->con->execute($strReq); 
     2251          $this->triggerBlog(); 
     2252     } 
    22172253      
    22182254     private function getCommentCursor($cur) 
  • plugins/antispam/_admin.php

    r324 r1052  
    4949     $core->addBehavior('adminBlogPreferencesForm',array('antispamBehaviors','adminBlogPreferencesForm')); 
    5050     $core->addBehavior('adminBeforeBlogSettingsUpdate',array('antispamBehaviors','adminBeforeBlogSettingsUpdate')); 
     51     $core->addBehavior('adminCommentsSpamForm',array('antispamBehaviors','adminCommentsSpamForm')); 
    5152} 
    5253 
    5354class antispamBehaviors 
    5455{ 
     56     public static function adminCommentsSpamForm($core) 
     57     { 
     58          $ttl = $core->blog->settings->antispam->antispam_moderation_ttl; 
     59          if ($ttl != null && $ttl >=0) { 
     60               echo '<p>'.sprintf(__('All spam comments older than %s day(s) will be automatically deleted.'), $ttl).' '. 
     61               sprintf(__('You can modify this duration in the %s'),'<a href="blog_pref.php"> '.__('Blog preferences').'</a>'). 
     62               '</p>'; 
     63          } 
     64     } 
     65 
    5566     public static function adminBlogPreferencesForm($core,$settings) 
    5667     { 
  • plugins/antispam/antispam.js

    r1049 r1052  
    44          dragsort.makeTableSortable(this,dotclear.sortable.setHandle, dotclear.sortable.saveOrder); 
    55     }); 
    6      $('form input[type=submit][name=delete_all_spam]').click(function(){ 
     6     $('form input[type=submit][name=delete_all]').click(function(){ 
    77          return window.confirm(dotclear.msg.confirm_spam_delete); 
    88     }); 
  • plugins/antispam/index.php

    r1049 r1052  
    2020$default_tab = null; 
    2121 
    22 $redir = isset($_POST['redir']) && strpos($_POST['redir'],'://') === false ? 
    23      $_POST['redir'] : $p_url; 
    24  
    2522try 
    2623{ 
     
    4138 
    4239     # Remove all spam 
    43      if (!empty($_POST['delete_all_spam'])) 
     40     if (!empty($_POST['delete_all'])) 
    4441     { 
    4542          $ts = dt::str('%Y-%m-%d %H:%M:%S',$_POST['ts'],$core->blog->settings->system->blog_timezone); 
    4643 
    4744          dcAntispam::delAllSpam($core,$ts); 
    48           http::redirect($redir.'&delspam=1'); 
     45          http::redirect($p_url.'&del=1'); 
    4946     } 
    5047 
     
    141138     '<h3>'.__('Information').'</h3>'; 
    142139 
    143      if (!empty($_GET['delspam'])) { 
     140     if (!empty($_GET['del'])) { 
    144141          dcPage::message(__('Spam comments have been successfully deleted.')); 
    145142     } 
     
    158155          '<p>'.$core->formNonce(). 
    159156          form::hidden('ts',time()). 
    160           '<input name="delete_all_spam" class="delete" type="submit" value="'.__('Delete all spams').'" /></p>'; 
     157          '<input name="delete_all" class="delete" type="submit" value="'.__('Delete all spams').'" /></p>'; 
    161158     } 
    162159     if ($moderationTTL != null && $moderationTTL >=0) { 
Note: See TracChangeset for help on using the changeset viewer.

Sites map