From 5a7edc892f1b3cccab74ed150f9d6843912a39ee Mon Sep 17 00:00:00 2001
From: Ben Chavet <ben@chavet.net>
Date: Thu, 29 May 2014 18:57:44 +0000
Subject: [PATCH] Use preg_replace_callback instead of /e in preg_replace to
 fix E_DEPRECATED warnings

---
 lib/ds_ldap.php | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/lib/ds_ldap.php b/lib/ds_ldap.php
index c346660..8bc1ef8 100644
--- a/lib/ds_ldap.php
+++ b/lib/ds_ldap.php
@@ -1116,13 +1116,14 @@ private function unescapeDN($dn) {
 
 		if (is_array($dn)) {
 			$a = array();
-			foreach ($dn as $key => $rdn)
-				$a[$key] = preg_replace('/\\\([0-9A-Fa-f]{2})/e',"''.chr(hexdec('\\1')).''",$rdn);
-
+			foreach ($dn as $key => $rdn) {
+				$a[$key] = preg_replace_callback('/\\\([0-9A-Fa-f]{2})/', function($m) { return "''.chr(hexdec('${m[1]}')).''"; }, $rdn);
+			}
 			return $a;
 
-		} else
-			return preg_replace('/\\\([0-9A-Fa-f]{2})/e',"''.chr(hexdec('\\1')).''",$dn);
+		} else {
+			return preg_replace_callback('/\\\([0-9A-Fa-f]{2})/', function($m) { return "''.chr(hexdec('${m[1]}')).''"; }, $dn);
+		}
 	}
 
 	public function getRootDSE($method=null) {
