Changeset 57
- Timestamp:
- 02/24/05 16:54:06
- Files:
-
- trunk/plugins/spamlookup/mt-spamlookup.cgi (modified) (9 diffs)
- trunk/plugins/spamlookup/tmpl/comments.tmpl (modified) (4 diffs)
- trunk/plugins/spamlookup/tmpl/pings.tmpl (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plugins/spamlookup/mt-spamlookup.cgi
r54 r57 36 36 37 37 use MT::App; 38 use MT::Util qw(format_ts offset_time mark_odd_rows );38 use MT::Util qw(format_ts offset_time mark_odd_rows encode_url); 39 39 use MT::Author qw(APPROVED BLOCKED); 40 40 use vars qw(@ISA); … … 91 91 92 92 my @ids = $query->param('is_spam'); 93 if ($query->param('action') =~ m/Delete/) { 94 $app->delete_these($type, \@ids); 95 } elsif ($query->param('action') =~ m/Approve/) { 96 $app->approve_these($type, \@ids); 97 } elsif ($query->param('action') =~ m/Moderate/) { 98 $app->moderate_these($type, \@ids); 93 if (my $action = $query->param('action')) { 94 if ($action =~ m/Delete/) { 95 $app->delete_these($type, \@ids); 96 } elsif ($action =~ m/Approve/) { 97 $app->approve_these($type, \@ids); 98 } elsif ($action =~ m/Moderate/) { 99 $app->moderate_these($type, \@ids); 100 } 99 101 } 100 102 101 103 $app->select_objects(\%param); 102 104 103 $param{prev_offset_val} = $param{offset } - $param{limit};105 $param{prev_offset_val} = $param{offset_val} - $param{limit}; 104 106 $param{prev_offset} = 1 if $param{prev_offset_val} >= 0; 105 107 $param{next_offset} = 1 if $param{more}; 106 $param{next_offset_val} = $param{offset} + $param{limit};107 108 $param{"limit_".$param{limit}} = 1; 108 109 $param{type} = $type; … … 140 141 } 141 142 142 143 143 $app->build_page('despam.tmpl', \%param); 144 144 } 145 145 146 sub approve_these { 147 my $self = shift; 148 $self->operate_these('approve', @_); 149 } 150 sub moderate_these { 151 my $self = shift; 152 $self->operate_these('moderate', @_); 153 } 146 154 sub delete_these { 147 my $app = shift; 148 my ($type, $action, $ids) = @_; 155 my $self = shift; 156 $self->operate_these('delete', @_); 157 } 158 159 sub operate_these { 160 my $app = shift; 161 my ($action, $type, $ids) = @_; 149 162 150 163 return unless @$ids; … … 234 247 235 248 my $offset = $query->param('offset') || 0; 249 $param->{offset_val} = $offset; 236 250 my $limit = $query->param('limit') || 20; 237 my $filter = $app->{mode} eq 'despam'; 251 my $filter = $query->param('filter') || ''; 252 $filter = 'spam' if $app->{mode} eq 'despam'; 253 my $filter_val = $query->param('filter_val') || ''; 254 my $filter_status = $query->param('filter_status') || ''; 255 my $filter_args = ''; 256 $filter_args .= '&filter='.$filter if $filter ne 'spam'; 257 $filter_args .= '&filter_status='.encode_url($filter_status) if $filter eq 'status'; 258 $filter_args .= '&filter_val='.encode_url($filter_val) if $filter eq 'message'; 259 $param->{filter_args} = $filter_args; 260 $param->{filter} = $filter; 261 if ($filter eq 'message') { 262 $param->{filter_val} = $filter_val; 263 } elsif ($filter eq 'status') { 264 $param->{filter_status} = $filter_status; 265 } 238 266 239 267 my $iter; … … 241 269 require MT::Comment; 242 270 my $terms = {}; 243 $terms->{visible} = 1 if $filter ;271 $terms->{visible} = 1 if $filter eq 'spam'; 244 272 my $args = { offset => $offset, limit => ($limit*10)+1, 'sort' => 'created_on', direction => 'descend' }; 245 273 $iter = MT::Comment->load_iter($terms, $args); … … 251 279 $iter = MT::TBPing->load_iter($terms, $args); 252 280 } 281 my $re; 282 if ($filter eq 'message') { 283 my $patt = $filter_val; 284 if ($patt =~ m!^/!) { 285 $re = $patt; 286 my ($opt) = $re =~ m!/([^/]*)$!; 287 $re =~ s!^/!!; 288 $re =~ s!/[^/]*$!!; 289 $re = '(?'.$opt.':'.$re.')' if $opt; 290 $re = eval { qr/$re/ }; 291 } 292 $re ||= '(?i:' . quotemeta($patt) . ')'; 293 } 253 294 254 295 my @loop; 255 296 require MT::Callback; 256 297 my $cb = new MT::Callback(method => 'Despam'); 257 my (%blogs, $obj, $start_date, $end_date );298 my (%blogs, $obj, $start_date, $end_date, $text, $approved); 258 299 my $count = 0; 259 300 while ($obj = $iter->()) { 301 if ($type eq 'comments') { 302 $text = join "\n", 303 ($obj->email || ''), 304 ($obj->author || ''), 305 ($obj->url || ''), 306 ($obj->text || ''); 307 $approved = $obj->visible ? 1 : 0; 308 } else { 309 $text = join "\n", 310 ($obj->blog_name || ''), 311 ($obj->title || ''), 312 ($obj->source_url || ''), 313 ($obj->excerpt || ''); 314 $approved = defined $obj->created_by ? ($obj->created_by == 1 ? 0 : 1) : 1; 315 } 316 $offset++; 317 if ($filter eq 'message') { 318 next if $text !~ m/$re/; 319 } elsif ($filter eq 'status') { 320 if ($filter_status eq 'approved') { 321 next unless $approved; 322 } elsif ($filter_status eq 'moderated') { 323 next if $approved; 324 } 325 } 260 326 $start_date = $obj->created_on unless defined $start_date; 261 327 $end_date = $obj->created_on; 262 $ offset++; $count++;328 $count++; 263 329 last if $count == ($limit * 10); 264 next if ($type ne 'comments') && (($obj->created_by || 0) == 1) && $filter; 265 next unless $obj->ip || $filter; # objects without an ip address aren't very despammable 330 next if ($type ne 'comments') && (($obj->created_by || 0) == 1) && ($filter eq 'spam'); 266 331 my $data = $obj->column_values; 267 332 my $blog_id = $obj->blog_id; … … 273 338 $blogs{$blog_id} = $blog; 274 339 } 275 if ($filter ) {340 if ($filter eq 'spam') { 276 341 $cb->error(''); 277 342 my $result = MT::Plugin::SpamLookup::filter($cb, $app, $obj); … … 341 406 $data->{blog_name} = $blog->name; 342 407 $data->{created_on_relative_date} = relative_date(ts2epoch($blog->id, $obj->created_on()), offset_time(time, $blog), $obj->created_on, "%Y-%m-%d"); 343 if ($filter ) {408 if ($filter eq 'spam') { 344 409 my @urls = MT::Plugin::SpamLookup::extract_urls($text, 2); 345 410 my @domain_loop; … … 362 427 } 363 428 $param->{object_loop} = \@loop; 364 $param->{ offset} = $offset;429 $param->{next_offset_val} = $offset; 365 430 $param->{limit} = $limit; 366 431 } trunk/plugins/spamlookup/tmpl/comments.tmpl
r54 r57 50 50 <div id="filters"> 51 51 <form method="get" action="<TMPL_VAR NAME=SCRIPT_URL>" id="filterform"> 52 <input type="hidden" name="__mode" value=" list_comments" />53 <input type="hidden" name=" blog_id" value="<TMPL_VAR NAME=BLOG_ID>" />52 <input type="hidden" name="__mode" value="view" /> 53 <input type="hidden" name="_type" value="comments" /> 54 54 55 55 <MT_TRANS phrase="Show comments where"> … … 64 64 <span id="filter_status_prefs" style="display: none"> 65 65 <MT_TRANS phrase="is"> 66 <select name="filter_ val">66 <select name="filter_status"> 67 67 <option value="approved">Approved</option> 68 68 <option value="moderated">Moderated</option> … … 74 74 <hr /> 75 75 <MT_TRANS phrase="Currently showing comments where"> 76 <TMPL_IF NAME=FILTER_VAL> 76 77 '<MT_TRANS phrase="<TMPL_VAR NAME=FILTER>">' 78 <MT_TRANS phrase="contains"> 79 '<TMPL_VAR NAME=FILTER_VAL ESCAPE=HTML>'. 80 </TMPL_IF> 81 <TMPL_IF NAME=FILTER_STATUS> 82 <MT_TRANS phrase="Status"> 77 83 <MT_TRANS phrase="is"> 78 '<TMPL_VAR NAME=FILTER_VAL ESCAPE=HTML>'. 79 <input type="button" name="reset_filter" value="<MT_TRANS phrase="Reset Filter">" onclick="window.location='<TMPL_VAR NAME=SCRIPT_URL>?__mode=list_comments&blog_id=<TMPL_VAR NAME=BLOG_ID>'" /> 84 '<TMPL_VAR NAME=FILTER_STATUS ESCAPE=HTML>'. 85 </TMPL_IF> 86 <input type="button" name="reset_filter" value="<MT_TRANS phrase="Reset Filter">" onclick="window.location='<TMPL_VAR NAME=SCRIPT_URL>?__mode=view&_type=comments'" /> 80 87 </TMPL_IF> 81 88 … … 148 155 <input type="button" onclick="checkAll('is_spam',true)" name="check_all" value="<MT_TRANS phrase="Check All">" /> 149 156 <input type="button" onclick="checkAll('is_spam',false)" name="uncheck_all" value="<MT_TRANS phrase="Uncheck All">" /> 150 <input type="button" onclick="doRemoveItems( 'is_spam', 'comment', 'comments')" name="delete_comments" value="<MT_TRANS phrase="Delete">" />157 <input type="button" onclick="doRemoveItems(this.form, 'comment', 'comments', 'is_spam')" name="delete_comments" value="<MT_TRANS phrase="Delete">" /> 151 158 <input type="submit" name="action" value="Approve" /> 152 159 <input type="submit" name="action" value="Moderate" /> trunk/plugins/spamlookup/tmpl/pings.tmpl
r53 r57 48 48 <div id="filters"> 49 49 <form method="get" action="<TMPL_VAR NAME=SCRIPT_URL>" id="filterform"> 50 <input type="hidden" name="__mode" value=" list_comments" />51 <input type="hidden" name=" blog_id" value="<TMPL_VAR NAME=BLOG_ID>" />50 <input type="hidden" name="__mode" value="view" /> 51 <input type="hidden" name="_type" value="pings" /> 52 52 53 53 <MT_TRANS phrase="Show pings where"> 54 <select name="filter" onchange="selectPrefs(this)"> 55 <option value="message"><MT_TRANS phrase="Message"></option> 54 <select name="filter" onchange="selectPrefs(this)"><option value="message"><MT_TRANS phrase="Message"></option> 56 55 <option value="status"><MT_TRANS phrase="Status"></option> 57 56 </select> 58 57 <span id="filter_message_prefs"> 59 <MT_TRANS phrase="contains"> 60 <input name="filter_val" value="" /> 58 <MT_TRANS phrase="contains"> <input name="filter_val" value="" /> 61 59 </span> 62 60 <span id="filter_status_prefs" style="display: none"> 63 61 <MT_TRANS phrase="is"> 64 <select name="filter_ val">62 <select name="filter_status"> 65 63 <option value="approved">Approved</option> 66 64 <option value="moderated">Moderated</option> … … 71 69 <TMPL_IF NAME=FILTER> 72 70 <hr /> 73 <MT_TRANS phrase="Currently showing comments where"> 71 <MT_TRANS phrase="Currently showing pings where"> 72 <TMPL_IF NAME=FILTER_VAL> 74 73 '<MT_TRANS phrase="<TMPL_VAR NAME=FILTER>">' 74 <MT_TRANS phrase="contains"> 75 '<TMPL_VAR NAME=FILTER_VAL ESCAPE=HTML>'. 76 </TMPL_IF> 77 <TMPL_IF NAME=FILTER_STATUS> 78 <MT_TRANS phrase="Status"> 75 79 <MT_TRANS phrase="is"> 76 '<TMPL_VAR NAME=FILTER_VAL ESCAPE=HTML>'. 77 <input type="button" name="reset_filter" value="<MT_TRANS phrase="Reset Filter">" onclick="window.location='<TMPL_VAR NAME=SCRIPT_URL>?__mode=list_comments&blog_id=<TMPL_VAR NAME=BLOG_ID>'" /> 80 '<TMPL_VAR NAME=FILTER_STATUS ESCAPE=HTML>'. 81 </TMPL_IF> 82 <input type="button" name="reset_filter" value="<MT_TRANS phrase="Reset Filter">" onclick="window.location='<TMPL_VAR NAME=SCRIPT_URL>?__mode=view&_type=pings'" /> 78 83 </TMPL_IF> 79 84 80 85 </form> 81 86 </div> 82 83 87 84 88 <form method="post" action="<TMPL_VAR NAME=SCRIPT_URL>">
