X-Git-Url: https://git.sesse.net/?p=pr0n;a=blobdiff_plain;f=perl%2FSesse%2Fpr0n%2FIndex.pm;h=1be7b9e63e2a1ccf436519561005f5281432c2eb;hp=cb83a9252933dcb9c19dae44de0b13666c835b7b;hb=HEAD;hpb=a87ec2d26798c3da2934068c15bbe5dc087db91c diff --git a/perl/Sesse/pr0n/Index.pm b/perl/Sesse/pr0n/Index.pm index cb83a92..d72be98 100644 --- a/perl/Sesse/pr0n/Index.pm +++ b/perl/Sesse/pr0n/Index.pm @@ -58,7 +58,7 @@ sub handler { 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); } @@ -161,7 +161,51 @@ sub handler { # 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 AND NOT is_render 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"); @@ -178,11 +222,13 @@ sub handler { 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] ? "" . HTML::Entities::encode_entities($_->[0]) . "" : 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"); }