X-Git-Url: https://git.sesse.net/?p=pr0n;a=blobdiff_plain;f=perl%2FSesse%2Fpr0n%2FSelect.pm;h=9db9d7b045db1ac4506d5d30eb65f77b22cfc0d7;hp=21dca6a662611418a828abe2d4d06647e0de432d;hb=45ee05e19e1039e74e2b7ca4955b007d2cd3ed69;hpb=b9c62b0e96eb2b04cf0f4355174831606f982f18 diff --git a/perl/Sesse/pr0n/Select.pm b/perl/Sesse/pr0n/Select.pm index 21dca6a..9db9d7b 100644 --- a/perl/Sesse/pr0n/Select.pm +++ b/perl/Sesse/pr0n/Select.pm @@ -3,53 +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; - if (defined($apr->param('mode')) && $apr->param('mode') eq 'single') { - # single mode; enable one (FIXME: need to support disable too) - my $filename = $apr->param('filename'); - $dbh->do('UPDATE images SET selected=\'t\' WHERE event=? AND filename=?', undef, $event, $filename); - } else { - # traditional multi-mode - $dbh->do('UPDATE images SET selected=\'f\' WHERE event=?', undef, $event); - - my @params = $apr->param(); - my $key; - for $key (@params) { - if ($key =~ /^sel-(\d+)/ && $apr->param($key) eq 'on') { - my $id = $1; - my $q = $dbh->do('UPDATE images SET selected=\'t\' WHERE id=?', undef, $id) - or dberror($r, "Selection of $id failed: $!"); - $r->print("

Selected image ID `$id'.

\n"); - } - } + 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 events SET last_update=CURRENT_TIMESTAMP WHERE id=?', undef, $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;