X-Git-Url: https://git.sesse.net/?p=pr0n;a=blobdiff_plain;f=perl%2FSesse%2Fpr0n%2FSelect.pm;h=9db9d7b045db1ac4506d5d30eb65f77b22cfc0d7;hp=a2b15e7d65fe306552c68e629e407151f1c0d181;hb=3d40b6487a2276c403022a1534eb943a5374ebc5;hpb=4522cf8bd8c20a0afd1605196422ab51a3901e95 diff --git a/perl/Sesse/pr0n/Select.pm b/perl/Sesse/pr0n/Select.pm index a2b15e7..9db9d7b 100644 --- a/perl/Sesse/pr0n/Select.pm +++ b/perl/Sesse/pr0n/Select.pm @@ -3,37 +3,41 @@ use strict; use warnings; use Sesse::pr0n::Common qw(error dberror); -use Apache2::Request; sub handler { my $r = shift; - my $apr = Apache2::Request->new($r); my $dbh = Sesse::pr0n::Common::get_dbh(); my ($user, $takenby) = Sesse::pr0n::Common::check_access($r); - if (!defined($user)) { - return Apache2::Const::OK; - } + return Sesse::pr0n::Common::generate_401($r) if (!defined($user)); - my $event = $apr->param('event'); + my $event = $r->param('event'); - Sesse::pr0n::Common::header($r, "Selection results"); + my $res = Plack::Response->new(200); + my $io = IO::String->new; + Sesse::pr0n::Common::header($r, $io, "Selection results"); { # Enable transactions and error raising temporarily local $dbh->{AutoCommit} = 0; local $dbh->{RaiseError} = 1; - # FIXME: need to support disable too - my $filename = $apr->param('filename'); - $dbh->do('UPDATE images SET selected=\'t\' WHERE vhost=? AND event=? AND filename=?', undef, $r->get_server_name, $event, $filename); + my $filename = $r->param('filename'); + my $selected = $r->param('selected'); + my $sql_selected = 'f'; + if (!defined($selected) || $selected eq '1') { + $sql_selected = 't'; + } + $dbh->do('UPDATE images SET selected=? WHERE vhost=? AND event=? AND filename=?', undef, $sql_selected, Sesse::pr0n::Common::get_server_name($r), $event, $filename); } - $dbh->do('UPDATE last_picture_cache SET last_update=CURRENT_TIMESTAMP WHERE vhost=? AND event=?', undef, $r->get_server_name, $event) - or dberror($r, "Cache invalidation failed"); - - Sesse::pr0n::Common::footer($r); + $dbh->do('UPDATE last_picture_cache SET last_update=CURRENT_TIMESTAMP WHERE vhost=? AND event=?', undef, Sesse::pr0n::Common::get_server_name($r), $event) + or return dberror($r, "Cache invalidation failed"); + Sesse::pr0n::Common::purge_cache($r, $res, "/$event/"); + Sesse::pr0n::Common::footer($r, $io); - return Apache2::Const::OK; + $io->setpos(0); + $res->body($io); + return $res; } 1;