my $where;
if ($event eq '+all') {
- $where = '';
+ $where = ' AND (event,vhost) IN ( SELECT event,vhost FROM events WHERE NOT hidden )';
} else {
$where = ' AND event=' . $dbh->quote($event);
}
- # Any NEF files => default to processing
- my $ref = $dbh->selectrow_hashref("SELECT * FROM images WHERE vhost=? $where AND ( LOWER(filename) LIKE '%.nef' OR LOWER(filename) LIKE '%.cr2' ) LIMIT 1",
+ # Any NEF files with no non-NEF renders => default to processing
+ my $ref = $dbh->selectrow_hashref("SELECT * FROM images WHERE vhost=? $where AND ( LOWER(filename) LIKE '%.nef' OR LOWER(filename) LIKE '%.cr2' ) AND render_id IS NULL LIMIT 1",
undef, Sesse::pr0n::Common::get_server_name($r))
and $defsettings{'xres'} = $defsettings{'yres'} = undef;
}
}
if (defined($author)) {
- my $aq = $dbh->quote($author);
-
- $where .= " AND takenby=$aq";
+ my @authors = split /,/, $author;
+ $where .= " AND takenby IN (" . join(', ', map { $dbh->quote($_) } @authors) . ")";
}
if (defined($num) && $num == -1) {
# }
# Count the number of selected images.
- $ref = $dbh->selectrow_hashref("SELECT COUNT(*) AS num_selected FROM images WHERE vhost=? $where AND selected=\'t\'", undef, Sesse::pr0n::Common::get_server_name($r));
+ $ref = $dbh->selectrow_hashref("SELECT COUNT(*) AS num_selected FROM images WHERE vhost=? $where AND selected AND NOT is_render", undef, Sesse::pr0n::Common::get_server_name($r));
my $num_selected = $ref->{'num_selected'};
# 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 (date - INTERVAL '6 hours')::date $datesort,takenby,date,filename $limit")
+ my $extra_joins = "";
+ my $extra_fields = "";
+ if ($settings{'fullscreen'}) {
+ $extra_joins = <<"EOF";
+ LEFT JOIN exif_info exif_prog ON images.id=exif_prog.image AND exif_prog.key = 'ExposureProgram'
+ LEFT JOIN exif_info exif_focal ON images.id=exif_focal.image AND exif_focal.key = 'FocalLength'
+ LEFT JOIN exif_info exif_shutter ON images.id=exif_shutter.image AND exif_shutter.key = 'ExposureTime'
+ LEFT JOIN exif_info exif_fnum ON images.id=exif_fnum.image AND exif_fnum.key = 'FNumber'
+ LEFT JOIN exif_info exif_iso1 ON images.id=exif_iso1.image AND exif_iso1.key = 'ISO'
+ LEFT JOIN exif_info exif_iso2 ON images.id=exif_iso2.image AND exif_iso2.key = 'ISOSetting'
+ LEFT JOIN exif_info exif_ev1 ON images.id=exif_ev1.image AND exif_ev1.key = 'ExposureBiasValue'
+ LEFT JOIN exif_info exif_ev2 ON images.id=exif_ev2.image AND exif_ev2.key = 'ExposureCompensation'
+ LEFT JOIN exif_info exif_date ON images.id=exif_date.image AND exif_date.key = 'DateTimeOriginal'
+ LEFT JOIN exif_info exif_model ON images.id=exif_model.image AND exif_model.key = 'Model'
+ LEFT JOIN exif_info exif_flash ON images.id=exif_flash.image AND exif_flash.key = 'Flash'
+EOF
+ $extra_fields = <<"EOF";
+ exif_prog.value AS "ExposureProgram",
+ exif_focal.value AS "FocalLength",
+ exif_shutter.value AS "ExposureTime",
+ exif_fnum.value AS "FNumber",
+ exif_iso1.value AS "ISO",
+ exif_iso2.value AS "ISOSetting",
+ exif_ev1.value AS "ExposureBiasValue",
+ exif_ev2.value AS "ExposureCompensation",
+ exif_date.value AS "DateTimeOriginal",
+ exif_model.value AS "Model",
+ exif_flash.value AS "Flash",
+EOF
+ }
+
+ my $q = $dbh->prepare(<<"EOF")
+SELECT *,
+ $extra_fields
+ (date - INTERVAL '6 hours')::date AS day
+FROM
+ images
+ $extra_joins
+WHERE
+ vhost=?
+ $where
+ AND NOT is_render
+ORDER BY (date - INTERVAL '6 hours')::date $datesort,takenby,date,filename
+$limit
+EOF
or return dberror($r, "prepare()");
$q->execute(Sesse::pr0n::Common::get_server_name($r))
or return dberror($r, "image enumeration");
while (my $ref = $q->fetchrow_hashref()) {
my $width = defined($ref->{'width'}) ? $ref->{'width'} : -1;
my $height = defined($ref->{'height'}) ? $ref->{'height'} : -1;
- push @files, [ $ref->{'event'}, $ref->{'filename'}, $width, $height ];
+ my @parts = Sesse::pr0n::Common::make_infobox_parts($ref);
+ @parts = map { $_->[1] ? "<strong>" . HTML::Entities::encode_entities($_->[0]) . "</strong>" : HTML::Entities::encode_entities($_->[0]) } @parts;
+ push @files, [ $ref->{'event'}, $ref->{'filename'}, $width, $height, join('', @parts) ];
}
for my $i (0..$#files) {
- my $line = sprintf " [ \"%s\", \"%s\", %d, %d ]", @{$files[$i]};
+ my $line = sprintf " [ \"%s\", \"%s\", %d, %d, \"%s\" ]", @{$files[$i]};
$line .= "," unless ($i == $#files);
$io->print($line . "\n");
}
Sesse::pr0n::Templates::print_template($r, $io, "overloadmode");
}
- print_viewres($r, $io, $event, \%settings, \%defsettings);
print_selected($r, $io, $event, \%settings, \%defsettings) if ($num_selected > 0);
print_fullscreen($r, $io, $event, \%settings, \%defsettings);
print_nextprev($r, $io, $event, $where, \%settings, \%defsettings);
COUNT(*) AS num
FROM images
WHERE vhost=? $where
+ AND NOT is_render
GROUP BY 1,2
ORDER BY 1,2")
or die "Couldn't prepare to find equipment: $!";
$imgsz = " width=\"$width\" height=\"$height\"";
}
+ # Add fullscreen link.
+ my %fssettings = %settings;
+ $fssettings{'fullscreen'} = 1;
+ my $fsquery = Sesse::pr0n::Common::get_query_string(\%fssettings, \%defsettings);
+ $fsquery .= '#' . $img_num;
+
my $filename = $ref->{'filename'};
my $uri = $filename;
if (defined($xres) && defined($yres) && $xres != -1 && $xres != -2) {
} else {
$io->print(" ");
}
- $io->print("<a href=\"$prefix$uri\"><img src=\"$prefix${thumbxres}x${thumbyres}/$filename\" alt=\"\"$imgsz /></a>\n");
+ $io->print("<a href=\"$prefix$uri\" id=\"$img_num\" onclick=\"location.href='$prefix$fsquery';return false;\"><img src=\"$prefix${thumbxres}x${thumbyres}/$filename\" alt=\"\"$imgsz /></a>\n");
if ($rot == 1) {
$io->print(" 90 <input type=\"checkbox\" name=\"rot-" .
$io->print(" </p>\n");
}
-sub print_viewres {
- my ($r, $io, $event, $settings, $defsettings) = @_;
- my @alternatives = qw(320x256 512x384 640x480 800x600 1024x768 1152x864 1280x960 1400x1050 1600x1200 1920x1440 2048x1536 2304x1728);
- 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, -2, -2 ];
- push @alternatives, [ $original, -1, -1 ];
-
- print_changes($r, $io, $event, 'viewres', $settings, $defsettings,
- 'xres', 'yres', \@alternatives);
-}
-
sub print_nextprev {
my ($r, $io, $event, $where, $settings, $defsettings) = @_;
my $start = $settings->{'start'};
return unless (defined($start) && defined($num));
# determine total number
- my $ref = $dbh->selectrow_hashref("SELECT count(*) AS num_images FROM images WHERE vhost=? $where",
+ my $ref = $dbh->selectrow_hashref("SELECT count(*) AS num_images FROM images WHERE vhost=? $where AND NOT is_render",
undef, Sesse::pr0n::Common::get_server_name($r))
or return dberror($r, "image enumeration");
my $num_images = $ref->{'num_images'};