Changeset 88


Ignore:
Timestamp:
05/11/09 22:46:45 (15 years ago)
Author:
nanardon
Message:
  • really improve memberUID laziness on change
File:
1 edited

Legend:

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

    r87 r88  
    9494        $attr =~ /^memberUID$/ and do { 
    9595            my $gid = $self->get_field('gid') or next; 
    96             if (join("\0", sort @{ $self->get_field('memberUID') }) eq 
    97                 join("\0", sort @{ $data{$attr} || []})) { 
    98                 next; 
     96            my %member; 
     97            foreach (@{ $self->get_field('memberUID') }) { 
     98                $member{$_}{c} = 1; 
    9999            } 
    100             $self->db->prepare_cached('delete from users_groups where gid = ?') 
    101                 ->execute($gid); 
    102100            foreach (@{ $data{$attr} || []}) { 
     101                $member{$_}{n} = 1; 
     102            } 
     103 
     104            foreach (keys %member) { 
     105                $member{$_}{c} && $member{$_}{n} and next; # no change ! 
    103106                my $user = $self->base->get_object('user', $_) or next; 
    104107                my $uid = $user->get_field('uid') or next; 
    105                 my $sth = $self->db->prepare_cached( 
    106                     q{insert into users_groups (uid, gid) values (?,?)} 
    107                 ); 
    108                 $sth->execute($uid, $gid); 
     108                if ($member{$_}{n}) { 
     109                    my $sth = $self->db->prepare_cached( 
     110                        q{insert into users_groups (uid, gid) values (?,?)} 
     111                    ); 
     112                    $sth->execute($uid, $gid); 
     113                } elsif ($member{$_}{c}) { 
     114                    my $sth = $self->db->prepare_cached( 
     115                        q{delete from users_groups where uid = ? and gid = ?} 
     116                    ); 
     117                    $sth->execute($uid, $gid); 
     118                } # else {} # can't happend 
    109119            } 
    110120            next; 
Note: See TracChangeset for help on using the changeset viewer.