Skip to content

Commit 5e3b981

Browse files
Refactors participant form changes to workflow dispatcher
Issue: documentacao-e-tarefas/scielo#897 Signed-off-by: Jhon <jhon@lepidus.com.br>
1 parent 31af49c commit 5e3b981

2 files changed

Lines changed: 65 additions & 67 deletions

File tree

ScieloModerationStagesPlugin.php

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,10 @@
2323
use PKP\security\Role;
2424
use PKP\db\DAORegistry;
2525
use Illuminate\Support\Facades\Event;
26-
use Illuminate\Support\Facades\Mail;
2726
use PKP\linkAction\LinkAction;
2827
use PKP\linkAction\request\AjaxModal;
2928
use PKP\core\JSONMessage;
3029
use APP\plugins\generic\scieloModerationStages\classes\SchemaEditor;
31-
use APP\plugins\generic\scieloModerationStages\classes\ModerationStage;
32-
use APP\plugins\generic\scieloModerationStages\classes\ModerationStageRegister;
33-
use APP\plugins\generic\scieloModerationStages\classes\mail\builders\StageAdvancementEmailBuilder;
3430
use APP\plugins\generic\scieloModerationStages\classes\observers\listeners\AssignFirstModerationStage;
3531

3632
class ScieloModerationStagesPlugin extends GenericPlugin
@@ -46,11 +42,7 @@ public function register($category, $path, $mainContextId = null)
4642
if ($success && $this->getEnabled($mainContextId)) {
4743
Event::subscribe(new AssignFirstModerationStage());
4844

49-
Hook::add('addparticipantform::display', [$this, 'addStageAdvanceToAssignForm']);
50-
Hook::add('addparticipantform::execute', [$this, 'sendSubmissionToNextModerationStage']);
51-
5245
Hook::add('LoadComponentHandler', [$this, 'setupScieloModerationStagesHandler']);
53-
5446
Hook::add('AcronPlugin::parseCronTab', [$this, 'addTasksToCrontab']);
5547
Hook::add('TemplateManager::display', [$this, 'addMessageToSubmissionComplete']);
5648

@@ -218,40 +210,6 @@ public function addNewPropsToEventLogSchema($hookName, $params)
218210
return Hook::CONTINUE;
219211
}
220212

221-
public function addStageAdvanceToAssignForm($hookName, $params)
222-
{
223-
$request = Application::get()->getRequest();
224-
$templateMgr = TemplateManager::getManager($request);
225-
226-
$submission = $params[0]->getSubmission();
227-
$moderationStage = new ModerationStage($submission);
228-
229-
if ($moderationStage->canAdvanceStage()) {
230-
$currentStageName = $moderationStage->getCurrentStageName();
231-
$nextStageName = $moderationStage->getNextStageName();
232-
233-
$templateMgr->assign('currentStage', $currentStageName);
234-
$templateMgr->assign('nextStage', $nextStageName);
235-
236-
$templateMgr->registerFilter("output", array($this, 'addCheckboxesToAssignForm'));
237-
}
238-
239-
return false;
240-
}
241-
242-
public function addCheckboxesToAssignForm($output, $templateMgr)
243-
{
244-
if (preg_match('/<div[^>]+class="section formButtons/', $output, $matches, PREG_OFFSET_CAPTURE)) {
245-
$posMatch = $matches[0][1];
246-
247-
$sentNextStageOutput = $templateMgr->fetch($this->getTemplateResource('sentNextStage.tpl'));
248-
249-
$output = substr_replace($output, $sentNextStageOutput, $posMatch, 0);
250-
$templateMgr->unregisterFilter('output', array($this, 'addCheckboxesToAssignForm'));
251-
}
252-
return $output;
253-
}
254-
255213
public function addMessageToSubmissionComplete($hookName, $params)
256214
{
257215
$template = &$params[1];
@@ -298,29 +256,4 @@ public function userIsAuthor($submission)
298256

299257
return $currentUserAssignedRoles[0] == Role::ROLE_ID_AUTHOR;
300258
}
301-
302-
public function sendSubmissionToNextModerationStage($hookName, $params)
303-
{
304-
$request = Application::get()->getRequest();
305-
$form = $params[0];
306-
$requestVars = $request->getUserVars();
307-
308-
if ($requestVars['sendNextStage']) {
309-
$submission = $form->getSubmission();
310-
$moderationStage = new ModerationStage($submission);
311-
312-
if ($moderationStage->canAdvanceStage()) {
313-
$moderationStage->sendNextStage();
314-
$moderationStageRegister = new ModerationStageRegister();
315-
$moderationStageRegister->registerModerationStageOnDatabase($moderationStage);
316-
$moderationStageRegister->registerModerationStageOnSubmissionLog($moderationStage);
317-
318-
$emailBuilder = new StageAdvancementEmailBuilder();
319-
$email = $emailBuilder->setSubmission($submission)
320-
->buildEmailParams()
321-
->build();
322-
Mail::send($email);
323-
}
324-
}
325-
}
326259
}

classes/dispatchers/WorkflowDispatcher.php

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
use APP\core\Application;
77
use APP\template\TemplateManager;
88
use APP\facades\Repo;
9+
use Illuminate\Support\Facades\Mail;
910
use APP\plugins\generic\scieloModerationStages\classes\ModerationStage;
11+
use APP\plugins\generic\scieloModerationStages\classes\ModerationStageRegister;
12+
use APP\plugins\generic\scieloModerationStages\classes\mail\builders\StageAdvancementEmailBuilder;
1013

1114
class WorkflowDispatcher
1215
{
@@ -25,6 +28,9 @@ private function registerHooks(): void
2528
Hook::add('Template::Workflow::Publication', [$this, 'addToWorkflowTabs']);
2629
Hook::add('Template::Workflow', [$this, 'addCurrentStageStatusToWorkflow']);
2730
Hook::add('queryform::display', [$this, 'hideParticipantsOnDiscussionOpening']);
31+
32+
Hook::add('addparticipantform::display', [$this, 'addStageAdvanceToAssignForm']);
33+
Hook::add('addparticipantform::execute', [$this, 'sendSubmissionToNextModerationStage']);
2834
}
2935

3036
public function addToWorkflowTabs($hookName, $params)
@@ -122,4 +128,63 @@ public function hideParticipantsOnDiscussionOpening($hookName, $params)
122128

123129
return Hook::CONTINUE;
124130
}
131+
132+
public function addStageAdvanceToAssignForm($hookName, $params)
133+
{
134+
$request = Application::get()->getRequest();
135+
$templateMgr = TemplateManager::getManager($request);
136+
137+
$submission = $params[0]->getSubmission();
138+
$moderationStage = new ModerationStage($submission);
139+
140+
if ($moderationStage->canAdvanceStage()) {
141+
$currentStageName = $moderationStage->getCurrentStageName();
142+
$nextStageName = $moderationStage->getNextStageName();
143+
144+
$templateMgr->assign('currentStage', $currentStageName);
145+
$templateMgr->assign('nextStage', $nextStageName);
146+
147+
$templateMgr->registerFilter("output", [$this, 'addCheckboxesToAssignForm']);
148+
}
149+
150+
return false;
151+
}
152+
153+
public function addCheckboxesToAssignForm($output, $templateMgr)
154+
{
155+
if (preg_match('/<div[^>]+class="section formButtons/', $output, $matches, PREG_OFFSET_CAPTURE)) {
156+
$posMatch = $matches[0][1];
157+
158+
$sentNextStageOutput = $templateMgr->fetch($this->plugin->getTemplateResource('sentNextStage.tpl'));
159+
160+
$output = substr_replace($output, $sentNextStageOutput, $posMatch, 0);
161+
$templateMgr->unregisterFilter('output', [$this, 'addCheckboxesToAssignForm']);
162+
}
163+
return $output;
164+
}
165+
166+
public function sendSubmissionToNextModerationStage($hookName, $params)
167+
{
168+
$request = Application::get()->getRequest();
169+
$form = $params[0];
170+
$requestVars = $request->getUserVars();
171+
172+
if ($requestVars['sendNextStage']) {
173+
$submission = $form->getSubmission();
174+
$moderationStage = new ModerationStage($submission);
175+
176+
if ($moderationStage->canAdvanceStage()) {
177+
$moderationStage->sendNextStage();
178+
$moderationStageRegister = new ModerationStageRegister();
179+
$moderationStageRegister->registerModerationStageOnDatabase($moderationStage);
180+
$moderationStageRegister->registerModerationStageOnSubmissionLog($moderationStage);
181+
182+
$emailBuilder = new StageAdvancementEmailBuilder();
183+
$email = $emailBuilder->setSubmission($submission)
184+
->buildEmailParams()
185+
->build();
186+
Mail::send($email);
187+
}
188+
}
189+
}
125190
}

0 commit comments

Comments
 (0)