Skip to content

refactor invitation page handler #11272

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions classes/invitation/core/Invitation.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ abstract public static function getType(): string;
*/
abstract public function getInvitationActionRedirectController(): ?InvitationActionRedirectController;

/**
* Defines the controller that is responsible for the handle of the create/edit
* invitation views
* @return InvitationUIActionRedirectController|null
*/
abstract public function getInvitationUIActionRedirectController(): ?InvitationUIActionRedirectController;

/**
* Get a specific payload instance for the child class.
*/
Expand Down
31 changes: 31 additions & 0 deletions classes/invitation/core/InvitationUIActionRedirectController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

/**
* @file classes/invitation/core/InvitationUIActionRedirectController.php
*
* Copyright (c) 2025 Simon Fraser University
* Copyright (c) 2025 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class InvitationUIActionRedirectController
*
* @brief Declares the create/edit url handlers.
*/

namespace PKP\invitation\core;

use APP\core\Request;
use Illuminate\Routing\Controller;

abstract class InvitationUIActionRedirectController extends Controller
{
/** @var TInvitation */
protected Invitation $invitation;

public function __construct(Invitation $invitation)
{
$this->invitation = $invitation;
}
abstract public function createHandle(Request $request, $userId = null): void;
abstract public function editHandle(Request $request): void;
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use PKP\invitation\core\enums\ValidationContext;
use PKP\invitation\core\Invitation;
use PKP\invitation\core\InvitationActionRedirectController;
use PKP\invitation\core\InvitationUIActionRedirectController;
use PKP\invitation\core\traits\HasMailable;
use PKP\invitation\core\traits\ShouldValidate;
use PKP\invitation\invitations\changeProfileEmail\handlers\ChangeProfileEmailInviteRedirectController;
Expand Down Expand Up @@ -138,10 +139,15 @@ public function getInvitationActionRedirectController(): ?InvitationActionRedire
return new ChangeProfileEmailInviteRedirectController($this);
}

public function getInvitationUIActionRedirectController(): ?InvitationUIActionRedirectController
{
return null;
}

/**
* @inheritDoc
*/
public function getValidationRules(ValidationContext $validationContext = ValidationContext::VALIDATION_CONTEXT_DEFAULT): array
public function getValidationRules(ValidationContext $validationContext = ValidationContext::VALIDATION_CONTEXT_DEFAULT): array
{
return [
'newEmail' => 'required|email',
Expand All @@ -151,7 +157,7 @@ public function getValidationRules(ValidationContext $validationContext = Valida
/**
* @inheritDoc
*/
public function getValidationMessages(ValidationContext $validationContext = ValidationContext::VALIDATION_CONTEXT_DEFAULT): array
public function getValidationMessages(ValidationContext $validationContext = ValidationContext::VALIDATION_CONTEXT_DEFAULT): array
{
return [];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use PKP\invitation\core\enums\InvitationStatus;
use PKP\invitation\core\Invitation;
use PKP\invitation\core\InvitationActionRedirectController;
use PKP\invitation\core\InvitationUIActionRedirectController;
use PKP\invitation\invitations\registrationAccess\handlers\RegistrationAccessInviteRedirectController;
use PKP\user\User;

Expand Down Expand Up @@ -101,4 +102,9 @@ public function getInvitationActionRedirectController(): ?InvitationActionRedire
{
return new RegistrationAccessInviteRedirectController($this);
}

public function getInvitationUIActionRedirectController(): ?InvitationUIActionRedirectController
{
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use PKP\invitation\core\enums\ValidationContext;
use PKP\invitation\core\Invitation;
use PKP\invitation\core\InvitationActionRedirectController;
use PKP\invitation\core\InvitationUIActionRedirectController;
use PKP\invitation\core\traits\ShouldValidate;
use PKP\invitation\invitations\reviewerAccess\handlers\ReviewerAccessInviteRedirectController;
use PKP\invitation\invitations\reviewerAccess\payload\ReviewerAccessInvitePayload;
Expand Down Expand Up @@ -148,10 +149,15 @@ public function getInvitationActionRedirectController(): ?InvitationActionRedire
return new ReviewerAccessInviteRedirectController($this);
}

public function getInvitationUIActionRedirectController(): ?InvitationUIActionRedirectController
{
return null;
}

/**
* @inheritDoc
*/
public function getValidationRules(ValidationContext $validationContext = ValidationContext::VALIDATION_CONTEXT_DEFAULT): array
public function getValidationRules(ValidationContext $validationContext = ValidationContext::VALIDATION_CONTEXT_DEFAULT): array
{
return [
'reviewAssignmentId' => [
Expand All @@ -161,7 +167,7 @@ function ($attribute, $value, $fail) {
$reviewAssignment = Repo::reviewAssignment()->get($value);

if (!$reviewAssignment) {
$fail(__('invitation.reviewerAccess.validation.error.reviewAssignmentId.notExisting',
$fail(__('invitation.reviewerAccess.validation.error.reviewAssignmentId.notExisting',
[
'reviewAssignmentId' => $value
])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,14 @@
use PKP\invitation\core\enums\ValidationContext;
use PKP\invitation\core\Invitation;
use PKP\invitation\core\InvitationActionRedirectController;
use PKP\invitation\core\InvitationUIActionRedirectController;
use PKP\invitation\core\ReceiveInvitationController;
use PKP\invitation\core\traits\HasMailable;
use PKP\invitation\core\traits\ShouldValidate;
use PKP\invitation\invitations\userRoleAssignment\handlers\api\UserRoleAssignmentCreateController;
use PKP\invitation\invitations\userRoleAssignment\handlers\api\UserRoleAssignmentReceiveController;
use PKP\invitation\invitations\userRoleAssignment\handlers\UserRoleAssignmentInviteRedirectController;
use PKP\invitation\invitations\userRoleAssignment\handlers\UserRoleAssignmentInviteUIController;
use PKP\invitation\invitations\userRoleAssignment\payload\UserRoleAssignmentInvitePayload;
use PKP\invitation\invitations\userRoleAssignment\rules\EmailMustNotExistRule;
use PKP\invitation\invitations\userRoleAssignment\rules\NoUserGroupChangesRule;
Expand Down Expand Up @@ -116,7 +118,7 @@ public function getMailable(): Mailable
return $this->mailable;
}

public function getMailableReceiver(?string $locale = null): Identity
public function getMailableReceiver(?string $locale = null): Identity
{
$locale = $this->getUsedLocale($locale);

Expand All @@ -138,18 +140,23 @@ public function getInvitationActionRedirectController(): ?InvitationActionRedire
return new UserRoleAssignmentInviteRedirectController($this);
}

public function getInvitationUIActionRedirectController(): ?InvitationUIActionRedirectController
{
return new UserRoleAssignmentInviteUIController($this);
}

/**
* @inheritDoc
*/
public function getCreateInvitationController(Invitation $invitation): CreateInvitationController
public function getCreateInvitationController(Invitation $invitation): CreateInvitationController
{
return new UserRoleAssignmentCreateController($invitation);
}

/**
* @inheritDoc
*/
public function getReceiveInvitationController(Invitation $invitation): ReceiveInvitationController
public function getReceiveInvitationController(Invitation $invitation): ReceiveInvitationController
{
return new UserRoleAssignmentReceiveController($invitation);
}
Expand All @@ -175,7 +182,7 @@ public function getValidationRules(ValidationContext $validationContext = Valida
}

$validationRules = array_merge(
$invitationValidationRules,
$invitationValidationRules,
$this->getPayload()->getValidationRules($this, $validationContext)
);

Expand All @@ -190,7 +197,7 @@ public function getValidationMessages(ValidationContext $validationContext = Val
$invitationValidationMessages = [];

$invitationValidationMessages = array_merge(
$invitationValidationMessages,
$invitationValidationMessages,
$this->getPayload()->getValidationMessages($validationContext)
);

Expand Down
Loading