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(" <p>Selected image ID `$id'.</p>\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;