source: server/trunk/web/lib/Sophie/Controller/User.pm @ 46

Last change on this file since 46 was 36, checked in by nanardon, 14 years ago
  • propery call fetchdata

command line parsing is done by the Model

File size: 1.7 KB
Line 
1package Sophie::Controller::User;
2use Moose;
3use namespace::autoclean;
4use MIME::Base64;
5use Storable qw/nfreeze thaw/;
6
7BEGIN {extends 'Catalyst::Controller'; }
8
9=head1 NAME
10
11Sophie::Controller::User - Catalyst Controller
12
13=head1 DESCRIPTION
14
15Catalyst Controller.
16
17=head1 METHODS
18
19=cut
20
21
22=head2 index
23
24=cut
25
26sub index :Path :Args(0) {
27    my ( $self, $c ) = @_;
28
29    $c->response->body('Matched Sophie::Controller::User in User.');
30}
31
32sub fetch_user_data : Private {
33    my ( $self, $c, $user, $dataname ) = @_;
34
35    if (my $rs = $c->model('Base')->resultset('Users')->search(
36        mail => $user,
37    )->search_related(
38        'UsersData', { varname => $dataname }
39    )->next) {
40        $c->stash->{xmlrpc} = thaw( decode_base64( $rs->get_column('value') ) );
41    } else {
42        $c->stash->{xmlrpc} = '';
43    }
44
45    return $c->stash->{xmlrpc};
46}
47
48
49sub fetchdata : XMLRPC {
50    my ( $self, $c, $dataname ) = @_;
51
52    return $c->forward('fetch_user_data', [ $c->user || '', $dataname ]);
53}
54
55sub set_user_data : Private {
56    my ( $self, $c, $user, $dataname, $data ) = @_;
57
58    my $User = $c->model('Base')->resultset('Users')->find( { mail => $user } )
59        or return;
60
61    $c->model('Base')->resultset('UsersData')->update_or_create({
62        Users => $User,
63        varname => $dataname,
64        value => encode_base64( nfreeze($data) ),
65    });
66    $c->model('Base')->storage->dbh->commit;
67}
68
69sub setdata : XMLRPC {
70    my ( $self, $c, $dataname, $data ) = @_;
71
72    return $c->forward('set_user_data', [ $c->user, $dataname, $data ]);
73}
74
75=head1 AUTHOR
76
77Olivier Thauvin
78
79=head1 LICENSE
80
81This library is free software. You can redistribute it and/or modify
82it under the same terms as Perl itself.
83
84=cut
85
86__PACKAGE__->meta->make_immutable;
87
881;
Note: See TracBrowser for help on using the repository browser.