Changeset 33
- Timestamp:
- 02/16/07 22:31:28 (2 years ago)
- Files:
-
- trunk/Memories/Photo.pm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Memories/Photo.pm
r32 r33 1 1 package Memories::Photo; 2 use File::Basename; 3 use File::Copy; 4 use Archive::Any; 2 5 use strict; 3 6 use Carp qw(cluck confess); … … 44 47 sub do_upload :Exported { 45 48 my ($self, $r) = @_; 46 my %upload = $r->upload("photo"); 47 49 my $upload = $r->{ar}->upload("photo"); 50 # Check $self->type 51 my @photos = $self->upload_jpeg($upload->tempname, ($r->params->{title}||basename($upload->filename)), $r->params->{tags}, $r); 52 my @quarantined = grep { !$_->tags } @photos; 53 # Set it up to go again 54 $r->objects(\@photos); 55 $r->template("view"); 56 $r->message("Thanks for the upload!"); 57 # Deal with the quarantined 58 } 59 60 sub upload_jpeg { 61 my ($self, $filename, $title, $tags, $r) = @_; 62 my $quarantine; 48 63 my $photo = $self->create({ 49 64 uploader => $r->user, 50 65 uploaded => Time::Piece->new(), 51 title => $ r->params->{title},66 title => $title, 52 67 hit_count => 0, 53 68 rating => 0, 54 rated => 0, # Oh, the potential for divide by zero errors...69 rated => 0, 55 70 }); 56 57 # Dump content 58 if (!open OUT, ">". $photo->path("file")) { 59 die "Can't write ".$photo->path("file")." because $!"; 60 } 61 # XXX Check it's a JPEG, etc. 62 # XXX Unzip ZIP file 63 print OUT $upload{content}; 64 close OUT; 71 copy($filename, $photo->path("file")); 65 72 my ($x, $y) = dim(image_info($photo->path)); 66 73 $photo->x($x); $photo->y($y); … … 69 76 $photo->unrotate(); 70 77 if (!$photo->title){ 71 $photo->title($photo->title_exif || $upload{filename});78 $photo->title($photo->title_exif || basename($filename)); 72 79 } 73 80 74 81 $photo->make_thumb; 75 $ r->{params}{tags}||= join " ", map { qq{"$_"} } $photo->tags_exif;76 $photo->add_tags($ r->{params}{tags});82 $tags ||= join " ", map { qq{"$_"} } $photo->tags_exif; 83 $photo->add_tags($tags); 77 84 $photo->add_to_imageseek_library; 78 85 Memories->zap_cache(); … … 81 88 my $tag = "date:".$photo->shot->ymd; 82 89 $photo->add_to_system_tags({tag => Memories::SystemTag->find_or_create({name =>$tag}) }); 83 84 # Set it up to go again 85 $r->objects([$photo]); 86 $r->template("view"); 87 $r->message("Thanks for the upload! ". 88 ($r->{params}{tags} ? "" 89 : "Don't forget to <a href=\"?".$r->config->uri_base."photo/view/".$photo->id."?active=tagedit\">tag your photo</a>" 90 ) 91 ); 90 return $photo; 92 91 } 93 92
