X-Git-Url: http://git.rot13.org/?p=virtual-ldap;a=blobdiff_plain;f=lib%2FLDAP%2FKoha.pm;h=fccc38f99894ae987601cce436fab4b245125df1;hp=672aa1f5181dfd96902f01d3a9dd79ebe9d2b60c;hb=73b88761ef8b4801dddb2a8117dcaab4b98a9545;hpb=33aa21f83590dc7189bbc67ecf660f9566facd11 diff --git a/lib/LDAP/Koha.pm b/lib/LDAP/Koha.pm index 672aa1f..fccc38f 100644 --- a/lib/LDAP/Koha.pm +++ b/lib/LDAP/Koha.pm @@ -25,7 +25,7 @@ our $database = 'koha'; our $user = 'unconfigured-user'; our $passwd = 'unconfigured-password'; -our $max_results = 15; # 100; # FIXME +our $max_results = 1500; # 100; # FIXME our $objectclass = 'HrEduPerson'; @@ -197,21 +197,45 @@ sub search { warn "# ", $sth->rows, " results for ",dump( $reqData->{'filter'} ); + my $last_dn = '?'; + my $entry; + while (my $row = $sth->fetchrow_hashref) { my ( $dn, $attributes ) = _dn_attributes( $row, $base ); - my $entry = Net::LDAP::Entry->new; - $entry->dn( $dn ); - $entry->add( %$attributes ); + warn "# dn $last_dn ... $dn\n"; + + if ( $dn ne $last_dn ) { + + if ( $entry ) { + #$entry->changetype( 'modify' ); + warn "### entry ",$entry->dump( \*STDERR ); + push @entries, $entry; + undef $entry; + } - #$entry->changetype( 'modify' ); + $entry = Net::LDAP::Entry->new; + $entry->dn( $dn ); - warn "### entry ",$entry->dump( \*STDERR ); + $entry->add( %$attributes ); + + } else { + foreach my $n ( keys %$attributes ) { + my $v = $attributes->{$n}; + warn "# attr $n = $v\n"; + $entry->add( $n, $v ) if $entry->get_value( $n ) ne $v; + } + } + + + $last_dn = $dn; - push @entries, $entry; } + warn "### last entry ",$entry->dump( \*STDERR ); + push @entries, $entry; + } else { warn "UNKNOWN request: ",dump( $reqData ); }