From 5f300a100ea1d4b11eeaf7c088ce9bde29b89657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20M=C3=BCller?= <p.mueller@pcsg.de> Date: Tue, 23 Aug 2022 16:21:34 +0200 Subject: [PATCH] feat: handle deleted users quiqqer/memberships#18 --- events.xml | 3 +++ src/QUI/Memberships/Events.php | 17 +++++++++++++++++ src/QUI/Memberships/Membership.php | 8 ++++---- src/QUI/Memberships/Users/MembershipUser.php | 19 ++++++++++++------- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/events.xml b/events.xml index f6214ab..e0fe927 100644 --- a/events.xml +++ b/events.xml @@ -1,7 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <events> <event on="onPackageSetup" fire="\QUI\Memberships\Events::onPackageSetup"/> + <event on="onUserSave" fire="\QUI\Memberships\Events::onUserSave"/> + <event on="onUserDelete" fire="\QUI\Memberships\Events::onUserDelete"/> + <event on="onQuiqqerOrderSuccessful" fire="\QUI\Memberships\Events::onQuiqqerOrderSuccessful" priority="5"/> <event on="onQuiqqerProductsFieldDeleteBefore" fire="\QUI\Memberships\Events::onQuiqqerProductsFieldDeleteBefore"/> diff --git a/src/QUI/Memberships/Events.php b/src/QUI/Memberships/Events.php index e0801ba..55ad3ee 100644 --- a/src/QUI/Memberships/Events.php +++ b/src/QUI/Memberships/Events.php @@ -123,6 +123,23 @@ public static function onUserSave(QUI\Users\User $User) } } + /** + * quiqqer/quiqqer: onUserDelete + * + * Delete user from alle memberships + * + * @param QUI\Users\User $User + * @return void + */ + public static function onUserDelete(QUI\Users\User $User): void + { + $membershipUsers = QUI\Memberships\Users\Handler::getInstance()->getMembershipUsersByUserId($User->getId()); + + foreach ($membershipUsers as $MembershipUser) { + $MembershipUser->delete(); + } + } + /** * quiqqer/products * diff --git a/src/QUI/Memberships/Membership.php b/src/QUI/Memberships/Membership.php index 5d40e9a..6e540b6 100644 --- a/src/QUI/Memberships/Membership.php +++ b/src/QUI/Memberships/Membership.php @@ -375,9 +375,10 @@ public function searchUsers($searchParams, $archivedOnly = false, $countOnly = f $sql = "SELECT `musers`.id"; } - $sql .= " FROM `".$tbl."` musers, `".$usersTbl."` users"; + $sql .= " FROM `".$tbl."` musers LEFT JOIN `".$usersTbl."` users"; + $sql .= ' ON `musers`.userId = `users`.id'; - $where[] = '`musers`.userId = `users`.id'; +// $where[] = '`musers`.userId = `users`.id'; $where[] = '`musers`.membershipId = '.$this->id; if ($archivedOnly === false) { @@ -420,8 +421,7 @@ public function searchUsers($searchParams, $archivedOnly = false, $countOnly = f } // ORDER - if (!empty($searchParams['sortOn']) - ) { + if (!empty($searchParams['sortOn'])) { $sortOn = Orthos::clear($searchParams['sortOn']); switch ($sortOn) { diff --git a/src/QUI/Memberships/Users/MembershipUser.php b/src/QUI/Memberships/Users/MembershipUser.php index 4a28fb0..675f569 100644 --- a/src/QUI/Memberships/Users/MembershipUser.php +++ b/src/QUI/Memberships/Users/MembershipUser.php @@ -762,9 +762,14 @@ public function getUserId() * @return QUI\Users\User * @throws \QUI\Exception */ - public function getUser() + public function getUser(): ?QUI\Users\User { - return QUI::getUsers()->get($this->getUserId()); + try { + return QUI::getUsers()->get($this->getUserId()); + } catch (\Exception $Exception) { + QUI\System\Log::writeException($Exception); + return null; + } } /** @@ -1073,13 +1078,13 @@ public function getBackendViewData() return [ 'id' => $this->getId(), - 'userId' => $QuiqqerUser->getId(), + 'userId' => $this->getUserId(), 'membershipId' => $Membership->getId(), 'membershipTitle' => $Membership->getTitle(), - 'username' => $QuiqqerUser->getUsername(), - 'firstname' => $QuiqqerUser->getAttribute('firstname'), - 'lastname' => $QuiqqerUser->getAttribute('lastname'), - 'fullName' => $QuiqqerUser->getName(), + 'username' => $QuiqqerUser ? $QuiqqerUser->getUsername() : '-', + 'firstname' => $QuiqqerUser ? $QuiqqerUser->getAttribute('firstname') : '-', + 'lastname' => $QuiqqerUser ? $QuiqqerUser->getAttribute('lastname') : '-', + 'fullName' => $QuiqqerUser ? $QuiqqerUser->getName() : '-', 'addedDate' => $this->getAttribute('addedDate'), 'beginDate' => $this->getAttribute('beginDate'), 'endDate' => $this->getAttribute('endDate'), -- GitLab