projects
/
virtual-ldap
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
implement multiple values by keeping dn and repeating rows with changed
[virtual-ldap]
/
lib
/
LDAP
/
Koha.pm
diff --git
a/lib/LDAP/Koha.pm
b/lib/LDAP/Koha.pm
index
672aa1f
..
fccc38f
100644
(file)
--- 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 $user = 'unconfigured-user';
our $passwd = 'unconfigured-password';
-our $max_results = 15; # 100; # FIXME
+our $max_results = 15
00
; # 100; # FIXME
our $objectclass = 'HrEduPerson';
our $objectclass = 'HrEduPerson';
@@
-197,21
+197,45
@@
sub search {
warn "# ", $sth->rows, " results for ",dump( $reqData->{'filter'} );
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 );
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 );
}
} else {
warn "UNKNOWN request: ",dump( $reqData );
}