my $apr = Apache2::Request->new($r);
my $dbh = Sesse::pr0n::Common::get_dbh();
- my ($event, $abspath, $datesort);
+ my ($event, $abspath, $datesort, $tag);
if ($r->uri =~ /^\/\+all\/?/) {
$event = '+all';
$abspath = 1;
+ $tag = undef;
# augh, this needs 8.3, so we'll have to fiddle around a bit instead
# $datesort = 'DESC NULLS LAST';
+ $datesort = 'DESC';
+ } elsif ($r->uri =~ /^\/\+tags\/([a-zA-Z0-9-]+)\/?$/) {
+ $tag = $1;
+ $event = "+tags/$tag";
+ $abspath = 1;
+
$datesort = 'DESC';
} else {
# Find the event
or error($r, "Could not extract event");
$event = $1;
$abspath = 0;
+ $tag = undef;
$datesort = 'ASC';
}
# Fix common error: pr0n.sesse.net/event -> pr0n.sesse.net/event/
if ($r->uri !~ /\/$/) {
- $r->headers_out->{'location'} = "/$event/";
+ $r->headers_out->{'location'} = $r->uri . "/";
return Apache2::Const::REDIRECT;
}
);
my $where;
- if ($event eq '+all') {
+ if (defined($tag)) {
+ my $tq = $dbh->quote($tag);
+ $where = " AND id IN ( SELECT image FROM tags WHERE tag=$tq )";
+ } elsif ($event eq '+all') {
$where = '';
} else {
$where = ' AND event=' . $dbh->quote($event);
$settings{$s} = $val;
}
if ($s eq "model" || $s eq "lens") {
- $val =~ s/_/ /g;
- $settings{$s} = $val;
+ $settings{$s} = Sesse::pr0n::Common::pretty_unescape($val);
}
}
my ($date, $name);
- if ($event eq '+all') {
+ if ($event eq '+all' || defined($tag)) {
$ref = $dbh->selectrow_hashref("SELECT EXTRACT(EPOCH FROM MAX(last_update)) AS last_update FROM events WHERE vhost=?",
undef, $r->get_server_name)
or error($r, "Could not list events", 404, "File not found");
# Print the page itself
if ($settings{'fullscreen'}) {
$r->content_type("text/html; charset=utf-8");
- Sesse::pr0n::Templates::print_template($r, "fullscreen-header", { title => "$name [$event]" });
+
+ if (defined($tag)) {
+ my $title = Sesse::pr0n::Templates::process_template($r, "tag-title", { tag => $tag });
+ Sesse::pr0n::Templates::print_template($r, "fullscreen-header", { title => $title });
+ } else {
+ Sesse::pr0n::Templates::print_template($r, "fullscreen-header", { title => "$name [$event]" });
+ }
+
+ my @files = ();
while (my $ref = $q->fetchrow_hashref()) {
- $r->print(" [ \"" . $ref->{'event'} . "\", \"" . $ref->{'filename'} . "\" ],\n");
+ push @files, [ $ref->{'event'}, $ref->{'filename'} ];
+ }
+
+ for my $i (0..$#files) {
+ $r->print(" [ \"" . $files[$i]->[0] . "\", \"" . $files[$i]->[1] . "\" ]");
+ $r->print(",") unless ($i == $#files);
+ $r->print("\n");
}
my %settings_no_fullscreen = %settings;
infobox => $infobox
});
} else {
- Sesse::pr0n::Common::header($r, "$name [$event]");
+ if (defined($tag)) {
+ my $title = Sesse::pr0n::Templates::process_template($r, "tag-title", { tag => $tag });
+ Sesse::pr0n::Common::header($r, $title);
+ } else {
+ Sesse::pr0n::Common::header($r, "$name [$event]");
+ }
if (defined($date)) {
Sesse::pr0n::Templates::print_template($r, "date", { date => $date });
}