Changeset 1490 for trunk/LATMOS-Accounts/lib/LATMOS/Accounts
- Timestamp:
- 12/01/15 09:25:48 (9 years ago)
- Location:
- trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql.pm
r1457 r1490 137 137 } 138 138 139 sub _sync_dyn_aliases { 140 my ($self) = @_; 141 142 my @groups = $self->search_objects('aliases', 'autoMemberFilter=*'); 143 144 foreach (@groups) { 145 my $g = $self->get_object('aliases', $_) or next; 146 $g->populate_dyn_aliases; 147 } 148 } 149 139 150 sub _commit { 140 151 my ($self) = @_; 141 152 142 153 $self->_sync_dyn_group; 154 $self->_sync_dyn_aliases; 143 155 144 156 if ($ENV{LA_NO_COMMIT}) { -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Aliases.pm
r1472 r1490 77 77 ); 78 78 }, 79 ro => sub { 80 $_[0] && $_[0]->_get_c_field('autoMemberFilter') ? 1 : 0 81 }, 79 82 }, 80 83 finalpoint => { … … 136 139 }, 137 140 comment => { }, 141 autoMemberFilter => { 142 multiple => 1, 143 set => sub { 144 my ($self, $data) = @_; 145 $self->object->set_fields($self->name, $data) or return; 146 $self->object->populate_dyn_aliases; 147 return 1; 148 } 149 150 }, 151 autoExclude => { 152 multiple => 1, 153 reference => 'user', 154 }, 138 155 } 139 156 ) … … 186 203 } 187 204 205 =head2 populate_dyn_aliases 206 207 Synchronise aliase's forward according filter set into C<autoMemberFilter> attribute. 208 209 =cut 210 211 sub populate_dyn_aliases { 212 my ($self) = @_; 213 214 215 if (!$self->get_field('autoMemberFilter')) { 216 return 0; 217 } 218 219 my %email = $self->base->attributes_summary_by_object('user', 'mail'); 220 221 $self->base->log(LA_DEBUG, 222 "Populating alaises %s from autoMemberFilter attribute", 223 $self->id 224 ); 225 my $filter = $self->get_field('autoMemberFilter'); 226 my $autoex = $self->get_field('autoExclude'); 227 my %exclude = map { $_ => 1 } grep { $_ } (ref $autoex ? @$autoex : $autoex); 228 229 my @users = $self->base->search_objects('user', ref $filter ? @{ $filter } : $filter); 230 231 my @forward = (); 232 233 foreach my $user (@users) { 234 $exclude{$user} and next; 235 $email{$user} or next; 236 my $mail = $email{$user}->[0] or next; 237 push(@forward, $mail); 238 } 239 240 my $sth = $self->base->db->prepare_cached( 241 'UPDATE aliases SET forward = ? WHERE ikey = ?' 242 ); 243 if (!$sth->execute(\@forward, $self->Iid)) { 244 $self->base->log(LA_ERR, "Cannot update forward for aliases %s: %s", $self->id, $sth->errstr()); 245 return; 246 } 247 248 return 1; 249 } 188 250 189 251 1;
Note: See TracChangeset
for help on using the changeset viewer.