From e9e1e766fa27b190f194941c497f022ad7bf1b1f Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Wed, 25 Jul 2007 15:48:34 +0200 Subject: [PATCH] Insert tags into the tags table on upload/other update. --- perl/Sesse/pr0n/Common.pm | 19 ++++++++++++++++++- sql/pr0n.sql | 1 + sql/upgrade-v2.50.sql | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/perl/Sesse/pr0n/Common.pm b/perl/Sesse/pr0n/Common.pm index d73df38..b9a651c 100644 --- a/perl/Sesse/pr0n/Common.pm +++ b/perl/Sesse/pr0n/Common.pm @@ -195,7 +195,9 @@ sub update_image_info { my ($r, $id, $width, $height) = @_; # Also find the date taken if appropriate (from the EXIF tag etc.) - my $info = Image::ExifTool::ImageInfo(get_disk_location($r, $id)); + my $exiftool = Image::ExifTool->new; + $exiftool->ExtractInfo(get_disk_location($r, $id)); + my $info = $exiftool->GetInfo(); my $datetime = undef; if (defined($info->{'DateTimeOriginal'})) { @@ -212,6 +214,7 @@ sub update_image_info { undef, $width, $height, $datetime, $id) or die "Couldn't update width/height in SQL: $!"; + # EXIF information $dbh->do('DELETE FROM exif_info WHERE image=?', undef, $id) or die "Couldn't delete old EXIF information in SQL: $!"; @@ -225,6 +228,20 @@ sub update_image_info { or die "Couldn't insert EXIF information in database: $!"; } + # Tags + my @tags = $exiftool->GetValue('Keywords', 'ValueConv'); + $dbh->do('DELETE FROM tags WHERE image=?', + undef, $id) + or die "Couldn't delete old tag information in SQL: $!"; + + my $q = $dbh->prepare('INSERT INTO tags (image,tag) VALUES (?,?)') + or die "Couldn't prepare inserting tag information: $!"; + + for my $tag (@tags) { + $q->execute($id, guess_charset($tag)) + or die "Couldn't insert tag information in database: $!"; + } + # update the last_picture cache as well (this should of course be done # via a trigger, but this is less complicated :-) ) $dbh->do('UPDATE last_picture_cache SET last_picture=GREATEST(last_picture, ?) WHERE (vhost,event)=(SELECT vhost,event FROM images WHERE id=?)', diff --git a/sql/pr0n.sql b/sql/pr0n.sql index cddf386..0bca09a 100644 --- a/sql/pr0n.sql +++ b/sql/pr0n.sql @@ -98,4 +98,5 @@ GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE images TO pr0n; GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE shadow_files TO pr0n; GRANT SELECT ON TABLE users TO pr0n; GRANT SELECT,INSERT,DELETE ON TABLE exif_info TO pr0n; +GRANT SELECT,INSERT,DELETE ON TABLE tags TO pr0n; GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE last_picture_cache TO pr0n; diff --git a/sql/upgrade-v2.50.sql b/sql/upgrade-v2.50.sql index d2440ae..ad63bdf 100644 --- a/sql/upgrade-v2.50.sql +++ b/sql/upgrade-v2.50.sql @@ -15,3 +15,4 @@ CREATE TABLE tags ( ); CREATE INDEX tags_tag ON tags ( tag ); +GRANT SELECT,INSERT,DELETE ON TABLE tags TO pr0n; -- 2.39.2