[dw-free] Avoid reading page spam when creating feeds
[commit: http://hg.dwscoalition.org/dw-free/rev/e17770214bbf]
http://bugs.dwscoalition.org/show_bug.cgi?id=2369
Show only the last three entries from a newly created feed on your read
page. (The feed's recent entries page, and subsequent fetches, will not be
affected).
Patch by
kareila.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=2369
Show only the last three entries from a newly created feed on your read
page. (The feed's recent entries page, and subsequent fetches, will not be
affected).
Patch by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Files modified:
- cgi-bin/LJ/S2/RecentPage.pm
- cgi-bin/LJ/SynSuck.pm
- cgi-bin/ljprotocol.pl
-------------------------------------------------------------------------------- diff -r 741f3b446e9f -r e17770214bbf cgi-bin/LJ/S2/RecentPage.pm --- a/cgi-bin/LJ/S2/RecentPage.pm Wed Feb 23 17:01:48 2011 +0800 +++ b/cgi-bin/LJ/S2/RecentPage.pm Wed Feb 23 20:23:30 2011 +0800 @@ -140,7 +140,7 @@ sub RecentPage security => $opts->{securityfilter}, itemids => \@itemids, dateformat => 'S2', - order => ( $u->is_community || $u->is_syndicated ) ? 'logtime' : '', + order => $u->is_community ? 'logtime' : '', err => \$err, posterid => $posteru_filter ? $posteru_filter->id : undef, ); diff -r 741f3b446e9f -r e17770214bbf cgi-bin/LJ/SynSuck.pm --- a/cgi-bin/LJ/SynSuck.pm Wed Feb 23 17:01:48 2011 +0800 +++ b/cgi-bin/LJ/SynSuck.pm Wed Feb 23 20:23:30 2011 +0800 @@ -291,7 +291,9 @@ sub process_content { } # post these items - my $newcount = 0; + my $itemcount = scalar @items; + my $newfeed = ! $su->timeupdate; # true if never updated before + my $newcount = 0; my $errorflag = 0; my $mindate; # "yyyy-mm-dd hh:mm:ss"; my $notedate = sub { @@ -310,12 +312,14 @@ sub process_content { $it->{$attr} = LJ::no_utf8_flag ( $it->{$attr} ); } + # duplicate entry detection my $dig = LJ::md5_struct($it)->b64digest; my $prevadd = $dbh->selectrow_array("SELECT MAX(dateadd) FROM synitem WHERE ". "userid=? AND item=?", undef, $userid, $dig); if ($prevadd) { $notedate->($prevadd); + $itemcount--; next; } @@ -326,7 +330,6 @@ sub process_content { undef, $userid, $dig, $now_dateadd); $notedate->($now_dateadd); - $newcount++; print "[$$] $dig - $it->{'subject'}\n" if $verbose; $it->{'text'} =~ s/^\s+//; $it->{'text'} =~ s/\s+$//; @@ -378,8 +381,13 @@ sub process_content { # just bail on entries older than two weeks instead of reposting them if ($own_time) { my $age = time() - LJ::mysqldate_to_time($it->{'time'}); - next if $age > $secs; # $secs is defined waaaaaaaay above + if ( $age > $secs ) { # $secs is defined waaaaaaaay above + $itemcount--; + next; + } } + + $newcount++; # we're committed to posting this item now my $command = "postevent"; my $req = { @@ -407,6 +415,13 @@ sub process_content { if ($it->{'text'} =~ /<(?:p|br)\b/i) { $req->{'props'}->{'opt_preformatted'} = 1; } + + # If this is a new feed, backdate all but last three items. + # Note this is a best effort; might not print all three entries + # if duplicate entries are detected later in the feed. + + $req->{props}->{opt_backdated} = 1 + if $newfeed && ( $itemcount - $newcount ) >= 3; # do an editevent if we've seen this item before my $id = $have_ids ? $it->{'id'} : $it->{'link'}; diff -r 741f3b446e9f -r e17770214bbf cgi-bin/ljprotocol.pl --- a/cgi-bin/ljprotocol.pl Wed Feb 23 17:01:48 2011 +0800 +++ b/cgi-bin/ljprotocol.pl Wed Feb 23 20:23:30 2011 +0800 @@ -1318,7 +1318,7 @@ sub postevent # don't allow backdated posts in communities return fail($err,152) if ( $req->{props}->{opt_backdated} && - ! ( $importer_bypass || $uowner->is_person ) ); + ! $importer_bypass && $uowner->is_community ); # do processing of embedded polls (doesn't add to database, just # does validity checking) @@ -1885,8 +1885,7 @@ sub editevent # don't allow backdated posts in communities return fail($err,152) if - ($req->{'props'}->{"opt_backdated"} && - ! $uowner->is_person); + $req->{props}->{opt_backdated} && $uowner->is_community; # make year/mon/day/hour/min optional in an edit event, # and just inherit their old values --------------------------------------------------------------------------------
no subject
no subject