From 759e243d90a1800e318b306c768c52b76fb3af30 Mon Sep 17 00:00:00 2001
From: Johannes Meyer <johannes.meyer@netways.de>
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();