$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';
+ $datesort = 'DESC NULLS LAST';
} elsif ($r->uri =~ /^\/\+tags\/([a-zA-Z0-9-]+)\/?$/) {
$tag = $1;
$event = "+tags/$tag";
$abspath = 1;
- $datesort = 'DESC';
+ $datesort = 'DESC NULLS LAST';
} else {
# Find the event
$r->uri =~ /^\/([a-zA-Z0-9-]+)\/?$/
$event = $1;
$abspath = 0;
$tag = undef;
- $datesort = 'ASC';
+ $datesort = 'ASC NULLS LAST';
}
# Fix common error: pr0n.sesse.net/event -> pr0n.sesse.net/event/
if ($model eq '') {
# no defined model
- $where .= " AND id NOT IN ( SELECT image FROM exif_info WHERE key='Model' AND TRIM(value)<>'' )";
+ $where .= " AND model IS NULL";
} else {
- $where .= " AND id IN ( SELECT image FROM exif_info WHERE key='Model' AND TRIM(value)=$mq )";
+ $where .= " AND model=$mq";
}
- # This doesn't match 1:1 if there's both lens and lensspec, but it should be OK in practice
if ($lens eq '') {
# no defined lens
- $where .= " AND id NOT IN ( SELECT image FROM exif_info WHERE (key='Lens' OR key='LensSpec') AND TRIM(value)<>'' )";
+ $where .= " AND lens IS NULL";
} else {
- $where .= " AND id IN ( SELECT image FROM exif_info WHERE (key='Lens' OR key='LensSpec') AND TRIM(value)=$lq )";
+ $where .= " AND lens=$lq";
}
}
if (defined($author)) {
# Find all images related to this event.
my $limit = (defined($start) && defined($num) && !$settings{'fullscreen'}) ? (" LIMIT $num OFFSET " . ($start-1)) : "";
- my $q = $dbh->prepare("SELECT *, (date - INTERVAL '6 hours')::date AS day FROM images WHERE vhost=? $where ORDER BY COALESCE((date - INTERVAL '6 hours')::date, '1970-01-01') $datesort,takenby,date,filename $limit")
+ my $q = $dbh->prepare("SELECT *, (date - INTERVAL '6 hours')::date AS day FROM images WHERE vhost=? $where ORDER BY (date - INTERVAL '6 hours')::date $datesort,takenby,date,filename $limit")
or dberror($r, "prepare()");
$q->execute($r->get_server_name)
or dberror($r, "image enumeration");
my $returnurl = "http://" . $r->get_server_name . "/" . $event . "/" .
Sesse::pr0n::Common::get_query_string(\%settings_no_fullscreen, \%defsettings);
-
+
# *whistle*
$returnurl =~ s/&/&/g;
Sesse::pr0n::Templates::print_template($r, "fullscreen-footer", {
vhost => $r->get_server_name,
- start => $settings{'start'} - 1,
returnurl => $returnurl,
+ start => $settings{'start'} - 1,
sel => $settings{'sel'},
infobox => $infobox
});
if (1 || $event ne '+all') {
# Find the equipment used
my $eq = $dbh->prepare("
- SELECT
- TRIM(model.value) AS model,
- coalesce(TRIM(lens_spec.value), TRIM(lens.value)) AS lens,
+ SELECT
+ model,
+ lens,
COUNT(*) AS num
- FROM ( SELECT * FROM images WHERE vhost=? $where ) i
- LEFT JOIN exif_info model ON i.id=model.image
- LEFT JOIN ( SELECT * FROM exif_info WHERE key='Lens' ) lens ON i.id=lens.image
- LEFT JOIN ( SELECT * FROM exif_info WHERE key='LensSpec') lens_spec ON i.id=lens_spec.image
- WHERE model.key='Model'
+ FROM images
+ WHERE vhost=? $where
GROUP BY 1,2
ORDER BY 1,2")
or die "Couldn't prepare to find equipment: $!";
}
sub print_viewres {
my ($r, $event, $settings, $defsettings) = @_;
- my @alternatives = qw(320x256 512x384 640x480 800x600 1024x768 1280x960 1400x1050 1600x1200);
+ my @alternatives = qw(320x256 512x384 640x480 800x600 1024x768 1152x864 1280x960 1400x1050 1600x1200);
chomp (my $unlimited = Sesse::pr0n::Templates::fetch_template($r, 'viewres-unlimited'));
chomp (my $original = Sesse::pr0n::Templates::fetch_template($r, 'viewres-original'));
push @alternatives, [ $unlimited, undef, undef ];