Skip to content

Commit b15a87d

Browse files
committed
pkp/pkp-lib#10929 Temporary fix - implement app level SubmissionController::add method
1 parent 90b5183 commit b15a87d

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

pages/submission/SubmissionHandler.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
use APP\section\Section;
2828
use APP\submission\Submission;
2929
use APP\template\TemplateManager;
30+
use Illuminate\Support\Collection;
3031
use Illuminate\Support\LazyCollection;
3132
use PKP\components\forms\FormComponent;
3233
use PKP\components\forms\publication\Details;
@@ -36,7 +37,10 @@
3637
use PKP\facades\Locale;
3738
use PKP\pages\submission\PKPSubmissionHandler;
3839
use PKP\plugins\Hook;
40+
use PKP\security\Role;
3941
use PKP\submission\GenreDAO;
42+
use PKP\user\User;
43+
use PKP\userGroup\UserGroup;
4044

4145
class SubmissionHandler extends PKPSubmissionHandler
4246
{
@@ -295,4 +299,33 @@ protected function getConfirmSubmitMessage(Submission $submission, Context $cont
295299
}
296300
return __('submission.wizard.confirmSubmit', ['context' => $context->getLocalizedName()]);
297301
}
302+
303+
/**
304+
* Get the user groups that a user can submit in
305+
*/
306+
protected function getSubmitUserGroups(Context $context, User $user): Collection
307+
{
308+
$userGroups = UserGroup::query()
309+
->withContextIds([$context->getId()])
310+
->withUserIds([$user->getId()])
311+
->withRoleIds([Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_AUTHOR])
312+
->get();
313+
314+
// Users without a submitting role can submit as an
315+
// author role that allows self registration
316+
if ($userGroups->isEmpty()) {
317+
Repo::userGroup()->assignUserToGroup(
318+
$user->getId(),
319+
Repo::userGroup()->getByRoleIds([Role::ROLE_ID_AUTHOR], $context->getId())->first()->id
320+
);
321+
$defaultUserGroup = UserGroup::withContextIds([$context->getId()])
322+
->withRoleIds([Role::ROLE_ID_AUTHOR])
323+
->permitSelfRegistration(true)
324+
->first();
325+
326+
$userGroups = collect($defaultUserGroup ? [$defaultUserGroup->id => $defaultUserGroup] : []);
327+
}
328+
329+
return $userGroups;
330+
}
298331
}

0 commit comments

Comments
 (0)