[fotobilder] r1466: LJSUP-11945 (API didnt create new album)
Committer: ailyin
LJSUP-11945 (API didnt create new album)U trunk/lib/FB/Protocol/Fotki/UploadPic.pm
Modified: trunk/lib/FB/Protocol/Fotki/UploadPic.pm
===================================================================
--- trunk/lib/FB/Protocol/Fotki/UploadPic.pm 2012-04-24 15:29:29 UTC (rev 1465)
+++ trunk/lib/FB/Protocol/Fotki/UploadPic.pm 2012-04-25 11:52:29 UTC (rev 1466)
@@ -193,24 +193,36 @@
return $err->(401) if $free_space <= 0;
return $err->(402) if $free_space < $length;
- # TODO: process Galleries: add uploaded photo into specified galleries (albums)
-
+ my $album;
+ if ( $vars->{'Gallery'} && @{ $vars->{'Gallery'} } ) {
+ my ($galvar) = @{ $vars->{'Gallery'} };
+ if ( my $album_id = $galvar->{'GalID'} ) {
+ $album = LJ::Pics::Album->load( $lj_user, $album_id );
- # to which galleries should this picture be added?
- my @albums;
- GALLERY:
- foreach my $gvar (@{$vars->{Gallery}}) {
+ } elsif ( my $album_title = $galvar->{'GalName'} ) {
+ my @albums = LJ::Pics::Album->list( 'userid' => $lj_userid );
+ ($album) = grep { $_->album_title eq $album_title } @albums;
- # TODO here
+ unless ($album) {
+ my $galsec = $galvar->{'GalSec'};
+ my ( $security, $allowmask ) =
+ FB::Protocol::Fotki->fb2lj_security($galsec);
+ $album = LJ::Pics::Album->create(
+ 'userid' => $lj_userid,
+ 'album_title' => $album_title,
+ 'security' => $security,
+ 'allowmask' => $allowmask,
+ );
+ }
+ }
}
# use default upload album if no albums specified
- unless (@albums) {
- my $a = LJ::Pics::Album->default_album( $lj_user, 'create' => 1 )
+ unless ($album) {
+ $album = LJ::Pics::Album->default_album( $lj_user, 'create' => 1 )
or return $err->(502 => "Cannot load default album");
- push @albums, $a;
}
# now we're finished with all input error checking, and we know that all the
@@ -267,36 +279,33 @@
return $err->(510) unless $content; # should never happen, but be safe
# add photo to all necessary albums
- my $photo;
- foreach my $album (@albums) {
- $photo = LJ::Pics::Photo->create(
- 'userid' => $lj_userid,
- 'album_id' => $album->album_id,
- 'security' => $security,
- 'allowmask' => $allowmask,
- );
+ my $photo = LJ::Pics::Photo->create(
+ 'userid' => $lj_userid,
+ 'album_id' => $album->album_id,
+ 'security' => $security,
+ 'allowmask' => $allowmask,
+ );
- my $upload_res = eval { $photo->upload_photo($content); 1 };
- unless ($upload_res) {
- $photo->delete;
- return $err->( 510, $@ );
- }
+ my $upload_res = eval { $photo->upload_photo($content); 1 };
+ unless ($upload_res) {
+ $photo->delete;
+ return $err->( 510, $@ );
+ }
- return $err->(513 => 'Error adding photo to album '.$album->album_id) unless $photo;
- # Meta information
- # -- existence vs definition checked at top
- if (defined $vars->{Meta}) {
- my $meta = $vars->{Meta};
+ return $err->(513 => 'Error adding photo to album '.$album->album_id) unless $photo;
+ # Meta information
+ # -- existence vs definition checked at top
+ if (defined $vars->{Meta}) {
+ my $meta = $vars->{Meta};
- # set photo title
- if (defined $meta->{Title}) {
- $photo->set_title($meta->{Title}) or return $err->(511 => "Couldn't set title prop");
- }
+ # set photo title
+ if (defined $meta->{Title}) {
+ $photo->set_title($meta->{Title}) or return $err->(511 => "Couldn't set title prop");
+ }
- # set photo description
- if (defined $meta->{Description}) {
- $photo->set_desc($meta->{Description}) or return $err->(511 => "Couldn't set Description");
- }
+ # set photo description
+ if (defined $meta->{Description}) {
+ $photo->set_desc($meta->{Description}) or return $err->(511 => "Couldn't set Description");
}
}
