Changeset 493


Ignore:
Timestamp:
10/05/09 07:09:18 (15 years ago)
Author:
nanardon
Message:
  • fix forward modification in database (due to swith string => array)
Location:
LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql
Files:
3 edited

Legend:

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

    r462 r493  
    6161sub _create { 
    6262    my ($class, $base, $id, %data) = @_; 
     63    $data{'forward'} = [ $data{'forward'} ] unless(ref $data{'forward'}); 
    6364    my $sth = $base->db->prepare_cached(q{ 
    6465        select name from aliases where lower(name) = lower(?) 
     
    132133} 
    133134 
     135sub set_fields { 
     136    my ($self, %attrs) = @_; 
     137    foreach (keys %attrs) { 
     138        /^forward$/ and do { 
     139            $attrs{$_} = [ $attrs{$_} ] unless(ref $attrs{$_}); 
     140        }; 
     141    } 
     142    $self->SUPER::set_fields(%attrs); 
     143} 
     144 
    1341451; 
    135146 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm

    r488 r493  
    6666        memberOf        => 'memberOf', 
    6767        forward => 'forward', 
     68        aliases => 'aliases', 
    6869        (map { $_ => $_ } $self->_address_fields), 
    6970        (map { $_ => $_ } $self->_office_address_fields), 
     
    8081        otheraddress => 'otheraddress', 
    8182        mainaddress => 'mainaddress', 
    82         aliases => 'aliases', 
    8383        revaliases => 'revaliases', 
     84        postalAddress => 'postalAddress', 
    8485        facsimileTelephoneNumber => 'facsimileTelephoneNumber', 
    8586        ) : ()), 
     
    197198        $sth->finish; 
    198199        return $res->{name}; 
    199     } elsif (grep { $field eq $_ } __PACKAGE__->_address_fields(), $self->_office_address_fields) { 
     200    } elsif (grep { $field eq $_ } __PACKAGE__->_address_fields(), 
     201        $self->_office_address_fields, 'postalAddress') { 
    200202        if (my $fmainaddress = $self->get_c_field('mainaddress')) { 
    201203            my $address = $self->base->get_object('address', $fmainaddress); 
     
    210212    } elsif ($field eq 'aliases') { 
    211213        my $sth = $self->db->prepare(q{ 
    212             select name from aliases where array[lower($1)] <@ 
     214            select name from aliases where array[lower($1)] = 
    213215                string_to_array(lower(array_to_string("forward", ',')), ',') 
    214216        } . ($self->base->{wexported} ? '' : 'and exported = true')); 
     
    296298            next; 
    297299        }; 
     300        $attr =~ /^aliases$/ and do { 
     301            my %aliases = map { $_ => 1 } @{$data{$attr}}; 
     302            foreach ($self->get_attributes('aliases')) { 
     303                $aliases{$_} ||= 0; 
     304                $aliases{$_} +=2; 
     305            } 
     306            foreach (keys %aliases) { 
     307                if ($aliases{$_} == 2) { 
     308                    warn "del $_"; 
     309                } elsif ($aliases{$_} == 1) { 
     310                    warn "new $_"; 
     311                } # 3 no change 
     312            } 
     313            next; 
     314        }; 
    298315        grep { $attr eq $_ } (__PACKAGE__->_office_address_fields, __PACKAGE__->_address_fields()) and do { 
    299316            my $fmainaddress = $self->_get_c_field('mainaddress'); 
     
    311328            } 
    312329            if (my $address = $self->base->get_object('address', $fmainaddress)) { 
    313                 $res += $address->set_c_fields($attr => $data{$attr}); 
     330                $res += $address->set_c_fields($attr => $data{$attr}) ||0; 
    314331            } 
    315332            next; 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/objects.pm

    r453 r493  
    3030# This fields are special in sense they may come from site field 
    3131sub _address_fields { qw(co l postalCode streetAddress postOfficeBox st 
    32     facsimileTelephoneNumber o postalAddress) } 
     32    facsimileTelephoneNumber o) } 
    3333 
    3434=head1 FUNCTIONS 
Note: See TracChangeset for help on using the changeset viewer.