Changeset 386 for LATMOS-Accounts


Ignore:
Timestamp:
08/25/09 19:11:24 (15 years ago)
Author:
nanardon
Message:
  • address attributes now update main address attributes
Location:
LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql
Files:
2 edited

Legend:

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

    r360 r386  
    8585                } 
    8686            } 
     87            $fdata{$attr} = $data{$attr} || undef; 
     88            next; 
    8789        }; 
    8890        $fdata{$attr} = $data{$attr} || undef; 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm

    r385 r386  
    4949} 
    5050 
    51 sub _office_address_fields { qw(telephoneNumber physicalDeliveryOfficeName) } 
     51sub _office_address_fields { qw(telephoneNumber physicalDeliveryOfficeName site) } 
    5252 
    5353sub _inline_fields { 
     
    6464    return ( 
    6565        memberOf        => 'memberOf', 
     66        map { $_ => $_ } $self->_address_fields, 
     67        map { $_ => $_ } $self->_office_address_fields, 
    6668        (($for !~ /w/) ? ( 
    6769        uid => 'name', 
     
    8082        forward => 'forward', 
    8183        revaliases => 'revaliases', 
    82         map { $_ => $_ } $self->_address_fields, 
    83         map { $_ => $_ } $self->_office_address_fields, 
    8484        ) : ()), 
    8585    ) 
     
    201201        $sth->finish; 
    202202        return $res->{name}; 
    203     } elsif (grep { $field eq $_ } $self->_office_address_fields) { 
     203    } elsif (grep { $field eq $_ } __PACKAGE__->_address_fields(), $self->_office_address_fields) { 
    204204        if (my $fmainaddress = $self->get_c_field('mainaddress')) { 
    205205            my $address = $self->base->get_object('address', $fmainaddress); 
     
    212212            return $self->SUPER::get_field($field); 
    213213        } 
    214     } elsif (grep { $field eq $_ } __PACKAGE__->_address_fields()) { 
    215         if (my $fmainaddress = $self->get_c_field('mainaddress')) { 
    216             my $address = $self->base->get_object('address', $fmainaddress); 
    217             if ($address) { 
    218                 return $address->get_c_field($field); 
    219             } else { # can't happend 
    220                 return; 
    221             } 
    222         } elsif (my $fsite = $self->get_c_field('site')) { 
    223             my $site = $self->base->get_object('site', $fsite); 
    224             if ($site) { 
    225                 return $site->get_c_field($field); 
    226             } else { # can't happend 
    227                 return; 
    228             } 
    229         } else { 
    230             return; 
    231         } 
    232214    } elsif ($field eq 'aliases') { 
    233215        my $sth = $self->db->prepare(q{ 
     
    264246    my ($self, %data) = @_; 
    265247    my %fdata; 
     248    my $res = 0; 
    266249    foreach my $attr (keys %data) { 
    267250        $attr =~ /^memberOf$/ and do { 
     
    282265                    ); 
    283266                    $sth->execute($self->id, 'memberUID', $group->_get_ikey); 
     267                    $res++; 
    284268                } elsif ($member{$_}{c}) { 
    285269                    my $sth = $self->db->prepare_cached( 
     
    287271                    ); 
    288272                    $sth->execute($self->id, 'memberUID', $group->_get_ikey); 
     273                    $res++; 
    289274                } # else {} # can't happend 
    290275            } 
    291276            next; 
    292277        }; 
    293         $attr =~ /^site$/ and do { 
    294             my $site = $self->base->get_object('site', $data{$attr}); 
    295             if ($site) { 
    296                 foreach (__PACKAGE__->_address_fields()) { 
    297                     $fdata{$_} = undef; 
    298                     $data{$_} = undef; 
    299                 } 
    300             } 
    301         }; 
    302278        grep { $attr eq $_ } (__PACKAGE__->_office_address_fields, __PACKAGE__->_address_fields()) and do { 
    303             if (my $fmainaddress = $self->get_c_field('mainaddress')) { 
    304                 my $address = $self->base->get_object('address', $fmainaddress); 
    305                 if ($address) { 
    306                     $address->set_fields($attr => $data{$attr}); 
    307                 } 
     279            my $fmainaddress = $self->get_c_field('mainaddress'); 
     280            if (!$fmainaddress) { 
     281                $fmainaddress = '$self->id' . '-' . map { ('a'..'z')[rand(26)] } 
     282                (0..4); 
     283                $self->base->create_c_object( 
     284                    'address', $fmainaddress, 
     285                    isMainAddress => 1 ) or return; 
     286            } 
     287            if (my $address = $self->base->get_object('address', $fmainaddress)) { 
     288                $res += $address->set_c_fields($attr => $data{$attr}); 
    308289            } 
    309290            next; 
     
    312293    } 
    313294    if (keys %fdata) { 
    314         $self->SUPER::set_fields(%fdata); 
    315     } else { return 0; } 
     295        return $self->SUPER::set_fields(%fdata) + $res; 
     296    } else { return $res; } 
    316297} 
    317298 
Note: See TracChangeset for help on using the changeset viewer.