]> git.decadent.org.uk Git - memories.git/blobdiff - Memories/Photo.pm
It's unlikely we'll get DOS people doing that but reminds me to do the
[memories.git] / Memories / Photo.pm
index 1eb08244ea35afc1496cf795f4a66e8520633164..b7696b14befef481ace2a63fb958dca39e827ef6 100644 (file)
@@ -94,7 +94,7 @@ sub upload_file {
     my $mm = File::MMagic->new;
     my $res = $mm->checktype_filename($filename);
     warn "$filename is a $res\n";
-    if ($res =~ m{/x-zip} or $offered_name =~ /t(ar\.)?gz/) {
+    if ($res =~ m{/x-zip} or $offered_name =~ /t(ar\.)?gz/i) {
         return $self->upload_archive($r, $filename);
     } elsif ($res =~ m{image/jpeg}) {
         return $self->upload_jpeg($r, $filename, $offered_name);
@@ -372,22 +372,28 @@ sub edit_tags :Exported {
     my ($self, $r) = @_;
     my $photo = $r->objects->[0];
     my %params = %{$r->params};
+    my $exifTool = new Image::ExifTool;
     for (keys %params) { 
         next unless /delete_(\d+)/;
         my $tagging = Memories::Tagging->retrieve($1) or next;
         next unless $tagging->photo->id == $photo->id;
+        $exifTool->SetNewValue(Keywords => $1, DelValue => 1);
         $tagging->delete;
     }
+    $exifTool->WriteInfo($photo->path);
     $photo->add_tags($params{newtags});
     $r->template("view");
 }
 
 sub add_tags {
     my ($photo, $tagstring) = @_;
+    my $exifTool = new Image::ExifTool;
 
     for my $tag (Tagtools->separate_tags($tagstring)) {
-        $photo->add_to_tags({tag => Memories::Tag->find_or_create({name =>$tag}) })
+        $photo->add_to_tags({tag => Memories::Tag->find_or_create({name =>$tag}) });
+        $exifTool->SetNewValue(Keywords => $tag, AddValue => 1);
     }
+    $exifTool->WriteInfo($photo->path);
 }
 
 # Work out some common properties from a set of potential photo metadata