From 759e243d90a1800e318b306c768c52b76fb3af30 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Tue, 23 Jun 2015 15:05:47 +0200 Subject: [PATCH] Ldap\Connection: Add method fetchPairs() --- library/Icinga/Protocol/Ldap/Connection.php | 36 +++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/library/Icinga/Protocol/Ldap/Connection.php b/library/Icinga/Protocol/Ldap/Connection.php index 3931f59a5..7ed636485 100644 --- a/library/Icinga/Protocol/Ldap/Connection.php +++ b/library/Icinga/Protocol/Ldap/Connection.php @@ -169,6 +169,42 @@ class Connection implements Selectable return $values; } + public function fetchPairs(Query $query, array $fields = null) + { + if ($fields === null) { + $fields = $query->getColumns(); + } + + if (count($fields) < 2) { + throw new ProgrammingError('You are required to request at least two attributes'); + } + + $columns = $desiredColumnNames = array(); + foreach ($fields as $alias => $column) { + if (is_int($alias)) { + $columns[] = $column; + $desiredColumnNames[] = $column; + } else { + $columns[$alias] = $column; + $desiredColumnNames[] = $alias; + } + + if (count($desiredColumnNames) === 2) { + break; + } + } + + $results = $this->fetchAll($query, $columns); + $pairs = array(); + foreach ($results as $row) { + $colOne = $desiredColumnNames[0]; + $colTwo = $desiredColumnNames[1]; + $pairs[$row->$colOne] = $row->$colTwo; + } + + return $pairs; + } + public function hasDN($dn) { $this->connect();