diff --git a/composer.json b/composer.json index 53e10a8dfebdde69879297ca1ef0c89ab0d1ade4..87ead11936b4f710da8913f5fb2d758eb18dcd07 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,7 @@ }, "require": { "quiqqer\/core": "^2", - "quiqqer\/verification": "^2" + "quiqqer\/verification": "^3" }, "autoload": { "psr-4": { diff --git a/src/QUI/Memberships/Users/AbortCancelVerification.php b/src/QUI/Memberships/Users/AbortCancelVerification.php index 7ff249334fa7bff0351eb37a09a167feab7ef25e..56c94217e41d86370f3acbb9be0d045654f1ea0f 100644 --- a/src/QUI/Memberships/Users/AbortCancelVerification.php +++ b/src/QUI/Memberships/Users/AbortCancelVerification.php @@ -3,26 +3,30 @@ namespace QUI\Memberships\Users; use QUI; -use QUI\Memberships\Users\Handler as MembershipUsersHandler; -use QUI\Verification\Verifier; +use QUI\Verification\Entity\AbstractVerification; +use QUI\Verification\Entity\LinkVerification; +use QUI\Verification\Enum\VerificationErrorReason; +use quiqqer\memberships\src\QUI\Memberships\Users\AbstractMembershipUserLinkVerificationHandler; /** * Class CancelVerification * * Verification process for abortion of MembershipUser cancellation by frontend user */ -class AbortCancelVerification extends QUI\Verification\AbstractVerification +class AbortCancelVerification extends AbstractMembershipUserLinkVerificationHandler { /** * Get the duration of a Verification (minutes) * - * @return int|false - duration in minutes; + * @param AbstractVerification $verification + * @return int|null - duration in minutes; * if this method returns false use the module setting default value - * @throws \QUI\Exception + * @throws QUI\Exception */ - public function getValidDuration(): bool|int + public function getValidDuration(AbstractVerification $verification): ?int { - $MembershipUser = MembershipUsersHandler::getInstance()->getChild($this->getIdentifier()); + /** @var LinkVerification $verification */ + $MembershipUser = $this->getMembershipUser($verification); $endDate = $MembershipUser->getAttribute('endDate'); $endDate = strtotime($endDate) / 60; // minutes $now = time() / 60; // minutes @@ -33,37 +37,27 @@ public function getValidDuration(): bool|int /** * Execute this method on successful verification * + * @param LinkVerification $verification * @return void - * @throws \QUI\Exception + * @throws QUI\Exception */ - public function onSuccess(): void + public function onSuccess(LinkVerification $verification): void { - /** @var MembershipUser $MembershipUser */ - $MembershipUser = MembershipUsersHandler::getInstance()->getChild($this->getIdentifier()); + $MembershipUser = $this->getMembershipUser($verification); $MembershipUser->setEditUser(QUI::getUsers()->getSystemUser()); $MembershipUser->confirmAbortCancel(); } - /** - * Execute this method on unsuccessful verification - * - * @return void - */ - public function onError(): void - { - // nothing - } - /** * This message is displayed to the user on successful verification * + * @param LinkVerification $verification * @return string - * @throws \QUI\Exception + * @throws QUI\Exception */ - public function getSuccessMessage(): string + public function getSuccessMessage(LinkVerification $verification): string { - /** @var MembershipUser $MembershipUser */ - $MembershipUser = MembershipUsersHandler::getInstance()->getChild($this->getIdentifier()); + $MembershipUser = $this->getMembershipUser($verification); $Membership = $MembershipUser->getMembership(); $data = $MembershipUser->getFrontendViewData(); @@ -93,55 +87,25 @@ public function getSuccessMessage(): string /** * This message is displayed to the user on unsuccessful verification * - * @param string $reason - The reason for the error (see \QUI\Verification\Verifier::REASON_) + * @param LinkVerification $verification + * @param VerificationErrorReason $reason * @return string */ - public function getErrorMessage($reason): string - { - switch ($reason) { - case Verifier::ERROR_REASON_EXPIRED: - $msg = QUI::getLocale()->get( - 'quiqqer/memberships', - 'verification.abortcancel.error.expired' - ); - break; - - case Verifier::ERROR_REASON_ALREADY_VERIFIED: - $msg = QUI::getLocale()->get( - 'quiqqer/memberships', - 'verification.abortcancel.error.already_verified' - ); - break; - - default: - $msg = QUI::getLocale()->get( - 'quiqqer/memberships', - 'verification.abortcancel.error.general' - ); - } - - return $msg; - } - - /** - * Automatically redirect the user to this URL on successful verification - * - * @return string|false - If this method returns false, no redirection takes place - */ - public function getOnSuccessRedirectUrl(): bool|string - { - return false; - } - - /** - * Automatically redirect the user to this URL on unsuccessful verification - * - * Hint: This requires that an active Verification with the given identifier exists! - * - * @return string|false - If this method returns false, no redirection takes place - */ - public function getOnErrorRedirectUrl(): bool|string + public function getErrorMessage(LinkVerification $verification, VerificationErrorReason $reason): string { - return false; + return match ($reason) { + VerificationErrorReason::EXPIRED => QUI::getLocale()->get( + 'quiqqer/memberships', + 'verification.abortcancel.error.expired' + ), + VerificationErrorReason::ALREADY_VERIFIED => QUI::getLocale()->get( + 'quiqqer/memberships', + 'verification.abortcancel.error.already_verified' + ), + default => QUI::getLocale()->get( + 'quiqqer/memberships', + 'verification.abortcancel.error.general' + ), + }; } } diff --git a/src/QUI/Memberships/Users/AbstractMembershipUserLinkVerificationHandler.php b/src/QUI/Memberships/Users/AbstractMembershipUserLinkVerificationHandler.php new file mode 100644 index 0000000000000000000000000000000000000000..31326d6bf84a3579c771fff41af2db4cec99d673 --- /dev/null +++ b/src/QUI/Memberships/Users/AbstractMembershipUserLinkVerificationHandler.php @@ -0,0 +1,72 @@ +<?php + +namespace quiqqer\memberships\src\QUI\Memberships\Users; + +use QUI\Memberships\Users\Handler as MembershipUsersHandler; +use QUI\Memberships\Users\MembershipUser; +use QUI\Verification\AbstractLinkVerificationHandler; +use QUI\Verification\Entity\LinkVerification; +use QUI\Verification\Enum\VerificationErrorReason; + +abstract class AbstractMembershipUserLinkVerificationHandler extends AbstractLinkVerificationHandler +{ + public function __construct(protected ?MembershipUsersHandler $membershipUsersHandler = null) + { + if (is_null($this->membershipUsersHandler)) { + $this->membershipUsersHandler = MembershipUsersHandler::getInstance(); + } + } + + /** + * @param LinkVerification $verification + * @return MembershipUser + * + * @throws \QUI\Exception + */ + protected function getMembershipUser(LinkVerification $verification): MembershipUser + { + /** @var MembershipUser $membershipUser */ + $membershipUser = $this->membershipUsersHandler->getChild( + $verification->getCustomDataEntry('membershipUserId') + ); + + return $membershipUser; + } + + /** + * Execute this method on unsuccessful verification + * + * @param LinkVerification $verification + * @param VerificationErrorReason $reason + * @return void + */ + public function onError(LinkVerification $verification, VerificationErrorReason $reason): void + { + // nothing + } + + /** + * Automatically redirect the user to this URL on successful verification + * + * @param LinkVerification $verification + * @return string|null - If this method returns false, no redirection takes place + */ + public function getOnSuccessRedirectUrl(LinkVerification $verification): ?string + { + return null; + } + + /** + * Automatically redirect the user to this URL on unsuccessful verification + * + * Hint: This requires that an active Verification with the given identifier exists! + * + * @param LinkVerification $verification + * @param VerificationErrorReason $reason + * @return string|null - If this method returns false, no redirection takes place + */ + public function getOnErrorRedirectUrl(LinkVerification $verification, VerificationErrorReason $reason): ?string + { + return null; + } +} \ No newline at end of file diff --git a/src/QUI/Memberships/Users/CancelVerification.php b/src/QUI/Memberships/Users/CancelVerification.php index 0e3fc877aee512a637e549d3b451cddc0d63170b..6b0907dadefc73b9b40f84a79cacdfe09fa1a092 100644 --- a/src/QUI/Memberships/Users/CancelVerification.php +++ b/src/QUI/Memberships/Users/CancelVerification.php @@ -2,24 +2,29 @@ namespace QUI\Memberships\Users; -use QUI\Memberships\Users\Handler as MembershipUsersHandler; -use QUI\Verification\Verifier; use QUI; +use QUI\Memberships\Users\Handler as MembershipUsersHandler; +use QUI\Verification\Entity\AbstractVerification; +use QUI\Verification\Entity\LinkVerification; +use QUI\Verification\Enum\VerificationErrorReason; +use quiqqer\memberships\src\QUI\Memberships\Users\AbstractMembershipUserLinkVerificationHandler; /** * Class CancelVerification * * Verification process for MembershipUser cancellation by frontend user */ -class CancelVerification extends QUI\Verification\AbstractVerification +class CancelVerification extends AbstractMembershipUserLinkVerificationHandler { /** * Get the duration of a Verification (minutes) * - * @return int|false - duration in minutes; + * @param AbstractVerification $verification + * @return int|null - duration in minutes; * if this method returns false use the module setting default value + * @throws QUI\Exception */ - public function getValidDuration(): bool|int + public function getValidDuration(AbstractVerification $verification): ?int { return (int)MembershipUsersHandler::getSetting('cancelDuration'); } @@ -27,32 +32,26 @@ public function getValidDuration(): bool|int /** * Execute this method on successful verification * + * @param LinkVerification $verification * @return void + * + * @throws QUI\Memberships\Exception + * @throws QUI\ExceptionStack|QUI\Exception */ - public function onSuccess(): void + public function onSuccess(LinkVerification $verification): void { - /** @var MembershipUser $MembershipUser */ - $MembershipUser = MembershipUsersHandler::getInstance()->getChild($this->getIdentifier()); + $MembershipUser = $this->getMembershipUser($verification); $MembershipUser->setEditUser(QUI::getUsers()->getSystemUser()); $MembershipUser->confirmManualCancel(); } - /** - * Execute this method on unsuccessful verification - * - * @return void - */ - public function onError(): void - { - // nothing - } - /** * This message is displayed to the user on successful verification * + * @param LinkVerification $verification * @return string */ - public function getSuccessMessage(): string + public function getSuccessMessage(LinkVerification $verification): string { return QUI::getLocale()->get( 'quiqqer/memberships', @@ -63,55 +62,25 @@ public function getSuccessMessage(): string /** * This message is displayed to the user on unsuccessful verification * - * @param string $reason - The reason for the error (see \QUI\Verification\Verifier::REASON_) + * @param LinkVerification $verification + * @param VerificationErrorReason $reason * @return string */ - public function getErrorMessage($reason): string - { - switch ($reason) { - case Verifier::ERROR_REASON_EXPIRED: - $msg = QUI::getLocale()->get( - 'quiqqer/memberships', - 'verification.cancel.error.expired' - ); - break; - - case Verifier::ERROR_REASON_ALREADY_VERIFIED: - $msg = QUI::getLocale()->get( - 'quiqqer/memberships', - 'verification.cancel.error.already_cancelled' - ); - break; - - default: - $msg = QUI::getLocale()->get( - 'quiqqer/memberships', - 'verification.cancel.error.general' - ); - } - - return $msg; - } - - /** - * Automatically redirect the user to this URL on successful verification - * - * @return string|false - If this method returns false, no redirection takes place - */ - public function getOnSuccessRedirectUrl(): bool|string - { - return false; - } - - /** - * Automatically redirect the user to this URL on unsuccessful verification - * - * Hint: This requires that an active Verification with the given identifier exists! - * - * @return string|false - If this method returns false, no redirection takes place - */ - public function getOnErrorRedirectUrl(): bool|string + public function getErrorMessage(LinkVerification $verification, VerificationErrorReason $reason): string { - return false; + return match ($reason) { + VerificationErrorReason::EXPIRED => QUI::getLocale()->get( + 'quiqqer/memberships', + 'verification.cancel.error.expired' + ), + VerificationErrorReason::ALREADY_VERIFIED => QUI::getLocale()->get( + 'quiqqer/memberships', + 'verification.cancel.error.already_cancelled' + ), + default => QUI::getLocale()->get( + 'quiqqer/memberships', + 'verification.cancel.error.general' + ), + }; } }