--- lib/A3C/LDAP.pm 2008/03/30 21:59:34 44 +++ lib/A3C/LDAP.pm 2008/05/01 12:59:02 101 @@ -104,30 +104,47 @@ =head2 as_collection_of - my $connection = $ldap->collection('Organization', $limit); + my $connection = $ldap->collection( + # name of model to use + 'Organization', + # optional params + limit => $limit, + filter => '(uid=foobar)', + ); =cut my $collection2filter = { - 'User' => '(objectClass=hrEduPerson)', + 'Person' => '(objectClass=hrEduPerson)', 'Organization' => '(objectClass=hrEduOrg)', }; sub collection { - my ( $self, $model, $limit ) = @_; + my $self = shift; + my $model = shift or die "no model?"; + my $args = {@_}; - $limit ||= 0; # unlimited by default + $args->{limit} ||= 0; # unlimited by default my $filter = $collection2filter->{$model}; - die "unknown model $model" unless $filter; +# die "unknown model $model" unless $filter; + # fallback to model named as objectClass + $filter ||= "(objectClass=$model)"; + + # add user filter + $filter = '(&' . $filter . $args->{filter} . ')' if $args->{filter}; $self->search( base => $self->base, filter => $filter, - sizelimit => $limit, + sizelimit => $args->{limit}, ); - Jifty->log->info("searching LDAP for $model with $filter limit $limit returned ", $self->count, " results"); + Jifty->log->info( + "Searching LDAP for $model with $filter ", + $args->{limit} ? 'limit ' . $args->{limit} . ' ' : '', + 'returned ', $self->count, ' results' + ); my $class = Jifty->app_class('Model', $model . 'Collection' ) or die "can't create ${model}Collection"; my $collection = $class->new() or die "can't $class->new"; @@ -136,11 +153,6 @@ my $model_obj = Jifty->app_class('Model',$model)->new; #warn dump( $model_obj ); my $additional; -# if ( $model eq 'User' ) { -# my $organization = A3C::Model::Organization->new; -# $self->ldap2model( $organization, $entry ); -# $additional->{organization} = $organization; -# } $self->ldap2model( $model_obj, $entry, %$additional ); $collection->add_record( $model_obj ); } @@ -182,7 +194,7 @@ my ( $id, $message ) = $model->load_or_create( %$data, %$additional ); if ( $id ) { - Jifty->log->info( $message || 'Added', ' ', ref($model), ' ', $model->id ); + Jifty->log->info( $message || 'Added', ' ', ref($model), ' ', $model->id, ' ', $model->name ); } else { Jifty->log->error( ref($model), " ", $message ); }