#} else {
# Look it up in the database
- my $ref = $dbh->selectrow_hashref('SELECT id,width,height FROM images WHERE event=? AND vhost=? AND filename=?',
+ my $ref = $dbh->selectrow_hashref('SELECT id,render_id,width,height FROM images WHERE event=? AND vhost=? AND filename=?',
undef, $event, Sesse::pr0n::Common::get_server_name($r), $filename);
return error($r, "Could not find $event/$filename", 404, "File not found") unless (defined($ref));
+ if (defined($xres) && defined($yres) && defined($ref->{'render_id'}) && !$infobox) {
+ # We have a render, we're not asked for the original, and we do not have infobox.
+ $ref = $dbh->selectrow_hashref('SELECT id,filename,width,height FROM images WHERE id=?',
+ undef, $ref->{'render_id'});
+ return error($r, "Could not find render of $event/$filename", 404, "File not found") unless (defined($ref));
+ $filename = $ref->{'filename'};
+ }
+
$id = $ref->{'id'};
$dbwidth = $ref->{'width'};
$dbheight = $ref->{'height'};
$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;
# }
# 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 $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")
or return dberror($r, "prepare()");
$q->execute(Sesse::pr0n::Common::get_server_name($r))
or return dberror($r, "image enumeration");
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: $!";
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'};
selected boolean DEFAULT false,
model character varying,
lens character varying,
+ is_render boolean NOT NULL DEFAULT false, -- Is this a render of another picture? (If so, don't show it separately.)
+ render_id integer, -- If not NULL, show this picture instead of ourselves for all JPEG-creation purposes.
- FOREIGN KEY (vhost,event) REFERENCES events (vhost,event)
+ FOREIGN KEY (vhost,event) REFERENCES events (vhost,event),
+ FOREIGN KEY (vhost,event,render_id) REFERENCES images (vhost,event,id),
+
+ -- Redundant with the primary key, but the foreign key needs it.
+ UNIQUE (vhost,event,id),
+
+ CHECK (NOT (is_render AND (render_id IS NOT NULL)))
);
CREATE UNIQUE INDEX unique_filenames ON images USING btree (vhost, event, filename);
selected boolean,
model character varying,
lens character varying
+ is_render boolean NOT NULL,
+ render_id integer,
);
CREATE TABLE users (
--- /dev/null
+alter table images add column is_render boolean NOT NULL DEFAULT false;
+alter table images add column render_id integer;
+CREATE UNIQUE INDEX unique_id_for_render ON images USING btree (vhost, event, id);
+alter table images add foreign key (render_id,vhost,event) REFERENCES images (id,vhost,event);
+alter table images add check (NOT (is_render AND (render_id IS NOT NULL)));
+
+alter table deleted_images add column is_render boolean NOT NULL DEFAULT false;
+alter table deleted_images add column render_id integer;