Changeset 1782 for trunk/LATMOS-Accounts/lib/LATMOS/Accounts
- Timestamp:
- 06/20/16 23:52:02 (8 years ago)
- Location:
- trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Aliases.pm
r1729 r1782 161 161 label => l('Automatics filters'), 162 162 }, 163 autoFromSutype => { 164 multiple => 1, 165 set => sub { 166 my ($self, $data) = @_; 167 $self->object->set_fields($self->name, $data) or return; 168 $self->object->populate_dyn_aliases; 169 return 1; 170 }, 171 label => l('From group type'), 172 }, 163 173 autoExclude => { 164 174 multiple => 1, … … 227 237 228 238 229 if (!$self->get_field('autoMemberFilter')) { 239 if (!$self->get_field('autoMemberFilter') 240 && !$self->get_field('autoFromSutype') ) { 230 241 return 0; 231 242 } … … 246 257 247 258 my %email = $self->base->attributes_summary_by_object('user', 'mail'); 248 249 my $filter = $self->get_field('autoMemberFilter'); 259 my %users; 260 250 261 my $autoex = $self->get_field('autoExclude'); 251 262 my %exclude = map { $_ => 1 } grep { $_ } (ref $autoex ? @$autoex : $autoex); 252 263 253 my @users = $self->base->search_objects('user', ref $filter ? @{ $filter } : $filter); 264 if (my $filter = $self->get_field('autoMemberFilter')) { 265 $users{$_} = 1 foreach( $self->base->search_objects('user', ref $filter ? @{ $filter } : $filter) ); 266 } 267 268 if (my $filter = $self->get_field('autoFromSutype')) { 269 my @suTypeFilter = map { "sutype=$_" } (ref $filter ? @{ $filter } : $filter); 270 foreach my $group ($self->base->search_objects('group', @suTypeFilter)) { 271 foreach ($self->base->search_objects('user', "memberOf=$group")) { 272 $users{$_} = 1; 273 } 274 } 275 } 254 276 255 277 my %forward = (); 256 278 257 foreach my $user ( @users) {279 foreach my $user (keys %users) { 258 280 $exclude{$user} and next; 259 281 $email{$user} or next; -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Group.pm
r1737 r1782 46 46 $_[0] && 47 47 (($_[0]->_get_c_field('sutype') ||'') =~ /^(jobtype|contrattype)$/ 48 || $_[0]->_get_c_field('autoMemberFilter')) 48 || $_[0]->_get_c_field('autoMemberFilter') 49 || $_[0]->_get_c_field('autoFromSutype')) 49 50 ? 1 : 0 50 51 }, … … 82 83 $_[0] && 83 84 (($_[0]->_get_c_field('sutype') ||'') =~ /^(jobtype|contrattype)$/ 84 || $_[0]->_get_c_field('autoMemberFilter')) 85 || $_[0]->_get_c_field('autoMemberFilter') 86 || $_[0]->_get_c_field('autoFromSutype')) 85 87 ? 1 : 0 86 88 }, … … 125 127 monitored => 1, 126 128 label => l('Structure'), 129 multiple => 1, 127 130 }, 128 131 autoMemberFilter => { … … 135 138 }, 136 139 label => l('Automatics filters'), 140 }, 141 autoFromSutype => { 142 reference => 'sutype', 143 multiple => 1, 144 set => sub { 145 my ($self, $data) = @_; 146 $self->object->set_fields($self->name, $data) or return; 147 $self->object->populate_dyn_group; 148 return 1; 149 }, 150 label => l('From group type'), 137 151 }, 138 152 label => { … … 206 220 my ($self) = @_; 207 221 208 if (!$self->get_field('autoMemberFilter')) { 222 if ( 223 !$self->get_field('autoMemberFilter') 224 && !$self->get_field('autoFromSutype')) { 209 225 return 0; 210 226 } 211 227 $self->base->log(LA_DEBUG, 212 "Populating group %s from autoMemberFilter attribute",228 "Populating group %s from autoMemberFilter/autoFromSutype attribute", 213 229 $self->id 214 230 ); 215 my $filter = $self->get_field('autoMemberFilter'); 216 my $res = $self->_set_group_members( 217 [ $self->base->search_objects( 218 'user', 219 ref $filter ? @{ $filter } : $filter 220 ) ] 221 ); 231 232 my %users; 233 234 if (my $filter = $self->get_field('autoFromSutype')) { 235 my @suTypeFilter = map { "sutype=$_" } (ref $filter ? @{ $filter } : $filter); 236 foreach my $group ($self->base->search_objects('group', @suTypeFilter)) { 237 foreach ($self->base->search_objects('user', "memberOf=$group")) { 238 $users{$_} = 1; 239 } 240 } 241 } 242 243 244 if (my $filter = $self->get_field('autoMemberFilter')) { 245 foreach ($self->base->search_objects( 246 'user', 247 ref $filter ? @{ $filter } : $filter)) { 248 $users{$_} = 1; 249 } 250 } 251 252 my $res = $self->_set_group_members([ keys %users ]); 253 222 254 $res; 223 255 }
Note: See TracChangeset
for help on using the changeset viewer.