--- lib/LDAP/Koha.pm 2009/04/17 21:39:45 47 +++ lib/LDAP/Koha.pm 2009/04/17 23:16:00 48 @@ -25,7 +25,7 @@ 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 @@ 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 ); }