From 18f38cab61499d72bc054d4a4308c85718afc6e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Philipp=20Sch=C3=BCle?=
Date: Tue, 18 Feb 2025 09:37:41 +0100
Subject: [PATCH 1/2] tweak(Tinebase/Group): catch not found exception when
syncing group memberships
---
tine20/Tinebase/Group.php | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/tine20/Tinebase/Group.php b/tine20/Tinebase/Group.php
index 82dd1f25587..401483739a2 100644
--- a/tine20/Tinebase/Group.php
+++ b/tine20/Tinebase/Group.php
@@ -146,12 +146,12 @@ public static function factory($_backendType)
}
/**
- * syncronize groupmemberships for given $_username from syncbackend to local sql backend
+ * synchronize group memberships for given $_username from sync backend to local sql backend
*
* @todo sync secondary group memberships
* @param mixed $_username the login id of the user to synchronize
*/
- public static function syncMemberships($_username)
+ public static function syncMemberships($_username): void
{
if ($_username instanceof Tinebase_Model_FullUser) {
$username = $_username->accountLoginName;
@@ -162,6 +162,7 @@ public static function syncMemberships($_username)
Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . " Sync group memberships for: " . $username);
$userBackend = Tinebase_User::getInstance();
+ /** @var Tinebase_Group_Ldap $groupBackend */
$groupBackend = Tinebase_Group::getInstance();
$adbInstalled = Tinebase_Application::getInstance()->isInstalled('Addressbook');
@@ -170,7 +171,11 @@ public static function syncMemberships($_username)
$user = $userBackend->getUserByProperty('accountLoginName', $username, 'Tinebase_Model_FullUser');
- $membershipsSyncBackend = $groupBackend->getGroupMembershipsFromSyncBackend($user);
+ try {
+ $membershipsSyncBackend = $groupBackend->getGroupMembershipsFromSyncBackend($user);
+ } catch (Tinebase_Exception_NotFound $tenf) {
+ $membershipsSyncBackend = [];
+ }
if (! in_array($user->accountPrimaryGroup, $membershipsSyncBackend)) {
$membershipsSyncBackend[] = $user->accountPrimaryGroup;
}
@@ -180,8 +185,10 @@ public static function syncMemberships($_username)
sort($membershipsSqlBackend);
sort($membershipsSyncBackend);
if ($membershipsSqlBackend == $membershipsSyncBackend) {
- if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
- . ' Group memberships are already in sync.');
+ if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
+ Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
+ . ' Group memberships are already in sync.');
+ }
Tinebase_TransactionManager::getInstance()->commitTransaction($transactionId);
$transactionId = null;
From e9ff06e99924d871b0f9481cb7467f25849b30d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Philipp=20Sch=C3=BCle?=
Date: Tue, 18 Feb 2025 09:39:12 +0100
Subject: [PATCH 2/2] conf(ci/php_jobs): also run ldap tests on changes in
Tinebase_Group
---
ci/gitlab-ci/test_php_jobs.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/ci/gitlab-ci/test_php_jobs.yml b/ci/gitlab-ci/test_php_jobs.yml
index 0bd3c805445..ebdbb47a620 100644
--- a/ci/gitlab-ci/test_php_jobs.yml
+++ b/ci/gitlab-ci/test_php_jobs.yml
@@ -169,6 +169,7 @@ php-unit-servertests-source:
- "tine20/Tinebase/User.php"
- "tine20/Tinebase/User/*.php"
- "tine20/Tinebase/User/LdapPlugin/*.php"
+ - "tine20/Tinebase/Group.php"
- "tine20/Tinebase/Group/*.php"
- "tine20/Tinebase/Group/LdapPlugin/*.php"
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_LABELS =~ /php-unit-all-tests-ldap-source/