From f847df8e50b83142f6c0c3dc70e70654d8bd76fc Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Tue, 14 May 2019 09:49:20 +0200 Subject: [PATCH] Fix broken resource details when kolabDescAttribute contains non-JSON-formatted value (Bifrost#T209152) We'll display such string as a resource description (if not specified otherwise). --- .../drivers/ldap/resources_driver_ldap.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/plugins/calendar/drivers/ldap/resources_driver_ldap.php b/plugins/calendar/drivers/ldap/resources_driver_ldap.php index c377393d..bd2d610c 100644 --- a/plugins/calendar/drivers/ldap/resources_driver_ldap.php +++ b/plugins/calendar/drivers/ldap/resources_driver_ldap.php @@ -116,17 +116,21 @@ class resources_driver_ldap extends resources_driver { $rec['ID'] = rcube_ldap::dn_decode($rec['ID']); - if (is_array($rec['attributes']) && $rec['attributes'][0]) { - $attributes = array(); + $attributes = array(); - foreach ($rec['attributes'] as $sattr) { + foreach ((array) $rec['attributes'] as $sattr) { + $sattr = trim($sattr); + if ($sattr && $sattr[0] === '{') { $attr = @json_decode($sattr, true); $attributes += $attr; } - - $rec['attributes'] = $attributes; + else if ($sattr && empty($rec['description'])) { + $rec['description'] = $sattr; + } } + $rec['attributes'] = $attributes; + // force $rec['members'] to be an array if (!empty($rec['members']) && !is_array($rec['members'])) { $rec['members'] = array($rec['members']);