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;
}
/**