Changeset 386 for LATMOS-Accounts
- Timestamp:
- 08/25/09 19:11:24 (15 years ago)
- 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 85 85 } 86 86 } 87 $fdata{$attr} = $data{$attr} || undef; 88 next; 87 89 }; 88 90 $fdata{$attr} = $data{$attr} || undef; -
LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm
r385 r386 49 49 } 50 50 51 sub _office_address_fields { qw(telephoneNumber physicalDeliveryOfficeName ) }51 sub _office_address_fields { qw(telephoneNumber physicalDeliveryOfficeName site) } 52 52 53 53 sub _inline_fields { … … 64 64 return ( 65 65 memberOf => 'memberOf', 66 map { $_ => $_ } $self->_address_fields, 67 map { $_ => $_ } $self->_office_address_fields, 66 68 (($for !~ /w/) ? ( 67 69 uid => 'name', … … 80 82 forward => 'forward', 81 83 revaliases => 'revaliases', 82 map { $_ => $_ } $self->_address_fields,83 map { $_ => $_ } $self->_office_address_fields,84 84 ) : ()), 85 85 ) … … 201 201 $sth->finish; 202 202 return $res->{name}; 203 } elsif (grep { $field eq $_ } $self->_office_address_fields) {203 } elsif (grep { $field eq $_ } __PACKAGE__->_address_fields(), $self->_office_address_fields) { 204 204 if (my $fmainaddress = $self->get_c_field('mainaddress')) { 205 205 my $address = $self->base->get_object('address', $fmainaddress); … … 212 212 return $self->SUPER::get_field($field); 213 213 } 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 happend220 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 happend227 return;228 }229 } else {230 return;231 }232 214 } elsif ($field eq 'aliases') { 233 215 my $sth = $self->db->prepare(q{ … … 264 246 my ($self, %data) = @_; 265 247 my %fdata; 248 my $res = 0; 266 249 foreach my $attr (keys %data) { 267 250 $attr =~ /^memberOf$/ and do { … … 282 265 ); 283 266 $sth->execute($self->id, 'memberUID', $group->_get_ikey); 267 $res++; 284 268 } elsif ($member{$_}{c}) { 285 269 my $sth = $self->db->prepare_cached( … … 287 271 ); 288 272 $sth->execute($self->id, 'memberUID', $group->_get_ikey); 273 $res++; 289 274 } # else {} # can't happend 290 275 } 291 276 next; 292 277 }; 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 };302 278 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}); 308 289 } 309 290 next; … … 312 293 } 313 294 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; } 316 297 } 317 298
Note: See TracChangeset
for help on using the changeset viewer.