Ignore:
Timestamp:
05/22/09 04:55:03 (15 years ago)
Author:
nanardon
Message:
  • change db schema about group management
File:
1 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            } 
Note: See TracChangeset for help on using the changeset viewer.