From daa98d3a8901c2860680be23c8be05dfb50fcf1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Sch=C3=BCle?= Date: Wed, 1 Mar 2023 11:23:45 +0100 Subject: [PATCH] fix(Admin/User): make sure we have emailUser information in searchUsers() --- tests/tine20/Admin/Frontend/JsonTest.php | 14 ++++++++++++++ tine20/Admin/Controller/User.php | 16 +++++++--------- tine20/Admin/Frontend/Json.php | 4 +--- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/tests/tine20/Admin/Frontend/JsonTest.php b/tests/tine20/Admin/Frontend/JsonTest.php index bd0a67833e4..e949e763fa1 100644 --- a/tests/tine20/Admin/Frontend/JsonTest.php +++ b/tests/tine20/Admin/Frontend/JsonTest.php @@ -1383,4 +1383,18 @@ public function testImportExportDefinitionSearch() ]]; $this->_json->searchImportExportDefinitions($filter, []); } + + public function testSearchUsersShowEmailUsage() + { + $this->_skipWithoutEmailSystemAccountConfig(); + + $filter = [['field' => "query", 'operator' => "contains", 'value' => Tinebase_Core::getUser()->accountEmailAddress]]; + $users = $this->_json->searchUsers($filter, []); + self::assertEquals(1, $users['totalcount'], print_r($users, true)); + $user = $users['results'][0]; + self::assertArrayHasKey('emailUser', $user); + $emailUser = $user['emailUser']; + self::assertArrayHasKey('emailMailSize', $emailUser, print_r($emailUser, true)); + self::assertArrayHasKey('emailMailQuota', $emailUser, print_r($emailUser, true)); + } } diff --git a/tine20/Admin/Controller/User.php b/tine20/Admin/Controller/User.php index 7c5a052fd99..e59900f0dde 100644 --- a/tine20/Admin/Controller/User.php +++ b/tine20/Admin/Controller/User.php @@ -92,16 +92,16 @@ public function searchFullUsers($_filter, $_sort = NULL, $_dir = 'ASC', $_start $result = $this->_userBackend->getUsers($_filter, $_sort, $_dir, $_start, $_limit, 'Tinebase_Model_FullUser'); if (Tinebase_EmailUser::manages(Tinebase_Config::IMAP)) { - $emailUser = null; + $emailUserBackend = null; try { - $emailUser = Tinebase_EmailUser::getInstance(); + $emailUserBackend = Tinebase_EmailUser::getInstance(); } catch (Tinebase_Exception_NotFound $tenf) { } - // FIXME if you want quota info: in Tinebase_User_Plugin_LdapInterface, inspectGetUserByProperty has a second param! - if (null !== $emailUser && !$emailUser instanceof Tinebase_User_Plugin_LdapInterface) { - foreach ($result as $user) { - $emailUser->inspectGetUserByProperty($user); + // FIXME LDAP email backends not supported! in Tinebase_User_Plugin_LdapInterface, inspectGetUserByProperty has a second param! + if (null !== $emailUserBackend && !$emailUserBackend instanceof Tinebase_User_Plugin_LdapInterface) { + foreach ($result as $idx => $user) { + $result[$idx] = $this->get($user->getId()); } } } @@ -119,9 +119,7 @@ public function searchCount($_filter) { $this->checkRight('VIEW_ACCOUNTS'); - $result = $this->_userBackend->getUsersCount($_filter); - - return $result; + return $this->_userBackend->getUsersCount($_filter); } /** diff --git a/tine20/Admin/Frontend/Json.php b/tine20/Admin/Frontend/Json.php index c1c063f6838..aa831c54e55 100644 --- a/tine20/Admin/Frontend/Json.php +++ b/tine20/Admin/Frontend/Json.php @@ -285,12 +285,10 @@ public function getUsers($filter, $sort, $dir, $start, $limit) } } - $result = array( + return array( 'results' => array_values($results), 'totalcount' => Admin_Controller_User::getInstance()->searchCount($filter) ); - - return $result; } /**