Changeset 158


Ignore:
Timestamp:
05/22/09 04:55:03 (15 years ago)
Author:
nanardon
Message:
  • change db schema about group management
Location:
LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Group.pm

    r154 r158  
    6969            my $sth = $self->db->prepare_cached( 
    7070                q{ 
    71                 select "user".uid from users_groups join "user" 
    72                 on users_groups.uid = "user".uidNumber join 
    73                 "group" on "group".gidnumber = users_groups.gid 
    74                 where "group".groupname = ? order by uid 
     71                select id from user_attributes_groups 
     72                join user_attributes_list on 
     73                user_attributes_groups.attr = user_attributes_list.ikey 
     74                where value = ? and canonical = ? 
    7575                } 
    7676            ); 
    77             $sth->execute($self->id); 
     77            $sth->execute($self->id, 'memberOf'); 
    7878            my @res; 
    7979            while (my $res = $sth->fetchrow_hashref) { 
    80                 push(@res, $res->{uid}); 
     80                push(@res, $res->{id}); 
    8181            } 
    8282            return \@res; 
     
    9191    foreach my $attr (keys %data) { 
    9292        $attr =~ /^memberUID$/ and do { 
    93             my $gid = $self->get_field('gidnumber') or next; 
     93            my $cl = $self->base->_load_obj_class('user') or next; 
     94            my $attrid = $cl->_get_field_name_db('memberOf', $self->base) or next; 
    9495            my %member; 
    9596            foreach (@{ $self->get_field('memberUID') }) { 
     
    103104                $member{$_}{c} && $member{$_}{n} and next; # no change ! 
    104105                my $user = $self->base->get_object('user', $_) or next; 
    105                 my $uid = $user->get_field('uidnumber') or next; 
    106106                if ($member{$_}{n}) { 
    107107                    my $sth = $self->db->prepare_cached( 
    108                         q{insert into users_groups (uid, gid) values (?,?)} 
     108                        q{insert into user_attributes_groups (id, attr, value) values (?,?,?)} 
    109109                    ); 
    110                     $sth->execute($uid, $gid); 
     110                    $sth->execute($_, $attrid, $self->id); 
    111111                } elsif ($member{$_}{c}) { 
    112112                    my $sth = $self->db->prepare_cached( 
    113                         q{delete from users_groups where uid = ? and gid = ?} 
     113                        q{delete from user_attributes_groups where id = ? and attr = ? and value = ?} 
    114114                    ); 
    115                     $sth->execute($uid, $gid); 
     115                    $sth->execute($_, $attrid, $self->id); 
    116116                } # else {} # can't happend 
    117117            } 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm

    r156 r158  
    7474        my $sth = $self->db->prepare_cached( 
    7575            q{ 
    76             select groupname from users_groups join "user" 
    77             on users_groups.uid = "user".uidnumber join 
    78             "group" on "group".gidnumber = users_groups.gid 
    79             where "user".uid = ? order by groupname 
     76            select value from user_attributes_groups 
     77            join user_attributes_list on 
     78            user_attributes_groups.attr = user_attributes_list.ikey 
     79            where id = ? and canonical = ? 
    8080            } 
    8181        ); 
    82         $sth->execute($self->id); 
     82        $sth->execute($self->id, 'memberOf'); 
    8383        my @res; 
    8484        while (my $res = $sth->fetchrow_hashref) { 
    85             push(@res, $res->{groupname}); 
     85            push(@res, $res->{value}); 
    8686        } 
    8787        return \@res; 
     
    124124    foreach my $attr (keys %data) { 
    125125        $attr =~ /^memberOf$/ and do { 
    126             my $uid = $self->get_field('uidnumber') or next; 
     126            my $attrid = $self->_get_field_name_db('memberOf', $self->base) or next; 
    127127            my %member; 
    128128            foreach (@{ $self->get_field('memberOf') }) { 
     
    136136                $member{$_}{c} && $member{$_}{n} and next; # no change ! 
    137137                my $group = $self->base->get_object('group', $_) or next; 
    138                 my $gid = $group->get_field('gidnumber') or next; 
    139138                if ($member{$_}{n}) { 
    140139                    my $sth = $self->db->prepare_cached( 
    141                         q{insert into users_groups (uid, gid) values (?,?)} 
     140                        q{insert into user_attributes_groups (id, attr, value) values (?,?,?)} 
    142141                    ); 
    143                     $sth->execute($uid, $gid); 
     142                    $sth->execute($self->id, $attrid, $_); 
    144143                } elsif ($member{$_}{c}) { 
    145144                    my $sth = $self->db->prepare_cached( 
    146                         q{delete from users_groups where uid = ? and gid = ?} 
     145                        q{delete from user_attributes_groups where id = ? and attr = ? and value = ?} 
    147146                    ); 
    148                     $sth->execute($uid, $gid); 
     147                    $sth->execute($self->id, $attrid, $_); 
    149148                } # else {} # can't happend 
    150149            } 
Note: See TracChangeset for help on using the changeset viewer.