16 import(
'lib.pkp.classes.submission.form.SubmissionSubmitForm');
38 if ($this->submission->getSubmissionProgress() <= $this->step) {
40 $this->submission->stampLastActivity();
41 $this->submission->stampModified();
42 $this->submission->setSubmissionProgress(0);
45 parent::execute(...$functionArgs);
48 $submissionDao->updateObject($this->submission);
52 $notifyUsers = array();
58 $submissionStageGroups = $userGroupDao->getUserGroupsByStage($this->submission->getContextId(), WORKFLOW_STAGE_ID_SUBMISSION);
59 while ($userGroup = $submissionStageGroups->next()) {
61 if (!in_array($userGroup->getRoleId(), array(ROLE_ID_MANAGER, ROLE_ID_ASSISTANT)))
continue;
63 $users = $userGroupDao->getUsersById($userGroup->getId(), $this->submission->getContextId());
64 if($users->getCount() == 1) {
65 $user = $users->next();
66 $stageAssignmentDao->build($this->submission->getId(), $userGroup->getId(), $user->getId(), $userGroup->getRecommendOnly());
67 $notifyUsers[] = $user->getId();
73 $user = $request->getUser();
74 $submitterAssignments = $stageAssignmentDao->getBySubmissionAndStageId($this->submission->getId(),
null,
null, $user->getId());
75 while ($assignment = $submitterAssignments->next()) {
76 $userGroup = $userGroupDao->getById($assignment->getUserGroupId());
77 if ($userGroup->getRoleId() == ROLE_ID_AUTHOR) {
78 $stageAssignmentDao->build($this->submission->getId(), $userGroup->getId(), $assignment->getUserId());
89 $subEditors = $subEditorsDao->getBySubmissionGroupId($this->submission->getSectionId(), ASSOC_TYPE_SECTION, $this->submission->getContextId());
90 foreach ($subEditors as $subEditor) {
91 $userGroups = $userGroupDao->getByUserId($subEditor->getId(), $this->submission->getContextId());
92 while ($userGroup = $userGroups->next()) {
93 if ($userGroup->getRoleId() != ROLE_ID_SUB_EDITOR)
continue;
94 $stageAssignmentDao->build($this->submission->getId(), $userGroup->getId(), $subEditor->getId(), $userGroup->getRecommendOnly());
96 if ($userGroupDao->userGroupAssignedToStage($userGroup->getId(), WORKFLOW_STAGE_ID_SUBMISSION)) {
97 $notifyUsers[] = $subEditor->getId();
105 $categories = $categoryDao->getByPublicationId($this->submission->getCurrentPublication()->getId());
106 while ($category = $categories->next()) {
107 $subEditors = $subEditorsDao->getBySubmissionGroupId($category->getId(), ASSOC_TYPE_CATEGORY, $this->submission->getContextId());
108 foreach ($subEditors as $subEditor) {
109 $userGroups = $userGroupDao->getByUserId($subEditor->getId(), $this->submission->getContextId());
110 while ($userGroup = $userGroups->next()) {
111 if ($userGroup->getRoleId() != ROLE_ID_SUB_EDITOR)
continue;
112 $stageAssignmentDao->build($this->submission->getId(), $userGroup->getId(), $subEditor->getId(), $userGroup->getRecommendOnly());
114 if ($userGroupDao->userGroupAssignedToStage($userGroup->getId(), WORKFLOW_STAGE_ID_SUBMISSION)) {
115 $notifyUsers[] = $subEditor->getId();
122 import(
'classes.workflow.EditorDecisionActionsManager');
123 $notificationManager->updateNotification(
127 ASSOC_TYPE_SUBMISSION,
128 $this->submission->getId()
132 if (empty($notifyUsers)) {
136 $managers = $roleDao->getUsersByRoleId(ROLE_ID_MANAGER, $this->submission->getContextId());
138 $managersArray = $managers->toAssociativeArray();
140 $allUserIds = array_keys($managersArray);
141 foreach ($allUserIds as $userId) {
144 $notificationManager->createNotification(
147 NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_REQUIRED,
148 $this->submission->getContextId(),
149 ASSOC_TYPE_SUBMISSION,
150 $this->submission->getId(),
151 NOTIFICATION_LEVEL_TASK
154 }
else foreach ($notifyUsers as $userId) {
155 $notificationManager->createNotification(
156 $request, $userId, NOTIFICATION_TYPE_SUBMISSION_SUBMITTED,
157 $this->submission->getContextId(), ASSOC_TYPE_SUBMISSION, $this->submission->getId()
161 $notificationManager->updateNotification(
163 array(NOTIFICATION_TYPE_APPROVE_SUBMISSION),
165 ASSOC_TYPE_SUBMISSION,
166 $this->submission->getId()