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/