1 package Memories::User;
2 use base qw(Memories::DBI Maypole::Model::CDBI::Plain);
3 __PACKAGE__->columns(All => qw/id name password/);
4 __PACKAGE__->has_many(photos => "Memories::Photo");
6 sub register :Exported {
8 my $login = $r->params->{name};
9 my $pass = $r->params->{password};
10 $r->template("frontpage");
13 # Do we already exist?
14 if (!$login) { $r->template("login"); $r->message("You didn't enter a user name"); return; }
15 my ($user) = $class->search(name => $login);
16 if ($user) { $r->template("login"); $r->message("User name already exists"); return; }
17 $user = $class->create({name => $login, password => $pass });
19 $r->login_user($user->id);
25 my $user = $r->objects->[0];
26 my $page = $r->params->{page} || 1;
27 my $pager = Class::DBI::Pager::_pager("Memories::Photo",
28 Memories->config->{photos_per_page}, $page);
29 $r->{template_args}{photos} = [$pager->search(uploader =>
30 $user->id,{order_by => "uploaded desc"}) ];
31 $r->{template_args}{pager} = $pager;
32 $r->{template_args}{albums} = [$user->albums(privacy => 0)];
38 sub edit_albums :Exported {
40 $r->{template} = "view";
42 my $user = $r->objects->[0];
43 return unless $r->user and $r->user->id == $user->id;
44 if ($r->{params}{create}) {
45 $user->add_to_albums({
46 privacy => !!($r->{params}{new_privacy}),
47 name => $r->{params}{new_name}
49 } elsif ($r->{params}{changes}) {
50 for my $album ($user->albums) { #XXX
51 warn "Setting $album privacy to ".
52 $r->{params}{"privacy_".$album->id};
53 $album->privacy(!!$r->{params}{"privacy_".$album->id});
56 my @to_delete = map /(\d+)/,
57 grep /delete_\d+/, keys %{$r->{params}};
59 my $album = Memories::Album->retrieve($_);
60 if ($album and $album->user->id == $user->id) {
68 sub api_taglist :Exported {
70 my $user = $r->objects->[0];
71 $r->{output} .= $_->{tag}.":".$_->{count}."\n"
72 for Memories::Tagging->search_user_summary($user->id);
74 $r->{content_type} = "text/plain";