/**
  * Save changes to submission.
  * @param $request PKPRequest
  */
 function execute($request)
 {
     parent::execute($request);
     $submission = $this->getSubmission();
     $submissionDao = Application::getSubmissionDAO();
     $submission->setSectionId($this->getData('sectionId'));
     // Copy an uploaded cover file for the article, if there is one.
     if ($temporaryFileId = $this->getData('temporaryFileId')) {
         $user = $request->getUser();
         $temporaryFileDao = DAORegistry::getDAO('TemporaryFileDAO');
         $temporaryFile = $temporaryFileDao->getTemporaryFile($temporaryFileId, $user->getId());
         import('classes.file.PublicFileManager');
         $publicFileManager = new PublicFileManager();
         $newFileName = 'article_' . $submission->getId() . '_cover' . $publicFileManager->getImageExtension($temporaryFile->getFileType());
         $journal = $request->getJournal();
         $publicFileManager->copyJournalFile($journal->getId(), $temporaryFile->getFilePath(), $newFileName);
         $submission->setCoverImage($newFileName);
     }
     $submission->setCoverImageAltText($this->getData('coverImageAltText'));
     $submissionDao->updateObject($submission);
     if ($submission->getDatePublished()) {
         import('classes.search.ArticleSearchIndex');
         ArticleSearchIndex::articleMetadataChanged($submission);
     }
 }
 /**
  * @copydoc SubmissionListGridHandler::getSubmissions()
  */
 function getSubmissions($request)
 {
     // Default implementation fetches all submissions.
     $submissionDao = Application::getSubmissionDAO();
     $context = $request->getContext();
     return $submissionDao->getByStatus(array(STATUS_DECLINED, STATUS_PUBLISHED, STATUS_QUEUED, STATUS_ARCHIVED), null, null, $context ? $context->getId() : null, $this->getGridRangeInfo($request, $this->getId()));
 }
 /**
  * @copydoc SubmissionListGridHandler::getSubmissions()
  */
 function getSubmissions($request)
 {
     // Get all contexts that user is enrolled in as manager, series editor
     // reviewer or assistant
     $user = $request->getUser();
     $roleDao = DAORegistry::getDAO('RoleDAO');
     $contextDao = Application::getContextDAO();
     $contexts = $contextDao->getAll()->toArray();
     $accessibleRoles = array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_REVIEWER, ROLE_ID_ASSISTANT);
     $accessibleContexts = array();
     $stageUserId = null;
     $reviewUserId = null;
     foreach ($accessibleRoles as $role) {
         foreach ($contexts as $context) {
             if ($roleDao->userHasRole($context->getId(), $user->getId(), $role)) {
                 $accessibleContexts[] = $context->getId();
                 if ($role == ROLE_ID_ASSISTANT) {
                     $stageUserId = $user->getId();
                 } elseif ($role == ROLE_ID_REVIEWER) {
                     $reviewUserId = $user->getId();
                 }
             }
         }
     }
     $accessibleContexts = array_unique($accessibleContexts);
     if (count($accessibleContexts) == 1) {
         $accessibleContexts = array_pop($accessibleContexts);
     }
     // Fetch all submissions for contexts the user can access. If the user
     // is a reviewer or assistant only show submissions that have been
     // assigned to the user
     $submissionDao = Application::getSubmissionDAO();
     return $submissionDao->getByStatus(array(STATUS_DECLINED, STATUS_PUBLISHED), $stageUserId, $reviewUserId, $accessibleContexts, $this->getGridRangeInfo($request, $this->getId()));
 }
 /**
  * @copydoc GridHandler::loadData()
  */
 protected function loadData($request, $filter)
 {
     $submissionDao = Application::getSubmissionDAO();
     /* @var $submissionDao SubmissionDAO */
     // Determine whether this is a Sub Editor or Manager.
     // Managers can access all submissions, Sub Editors
     // only assigned submissions.
     $user = $request->getUser();
     $userId = $user->getId();
     // Get all submissions for all contexts that user is
     // enrolled in as manager or series editor.
     $roleDao = DAORegistry::getDAO('RoleDAO');
     $contextDao = Application::getContextDAO();
     $contexts = $contextDao->getAll();
     $accessibleContexts = array();
     while ($context = $contexts->next()) {
         $isManager = $roleDao->userHasRole($context->getId(), $userId, ROLE_ID_MANAGER);
         $isSubEditor = $roleDao->userHasRole($context->getId(), $userId, ROLE_ID_SUB_EDITOR);
         if (!$isManager && !$isSubEditor) {
             continue;
         }
         $accessibleContexts[] = $context->getId();
     }
     list($search, $column, $stageId) = $this->getFilterValues($filter);
     $title = $author = null;
     if ($column == 'title') {
         $title = $search;
     } else {
         $author = $search;
     }
     $rangeInfo = $this->getGridRangeInfo($request, $this->getId());
     return $submissionDao->getBySubEditorId($accessibleContexts, null, false, false, $title, $author, $stageId, $rangeInfo);
 }
 /**
  * @copydoc GridRow::initialize()
  */
 function initialize($request, $template = null)
 {
     parent::initialize($request, $template);
     // Retrieve the submission id from the request
     // These parameters need not be validated as we're just
     // passing them along to another request, where they will be
     // checked before they're used.
     $submissionId = (int) $request->getUserVar('submissionId');
     $stageId = (int) $request->getUserVar('stageId');
     $round = (int) $request->getUserVar('round');
     // Is this a new row or an existing row?
     $rowId = $this->getId();
     if (!empty($rowId) && is_numeric($rowId)) {
         // Only add row actions if this is an existing row
         $router = $request->getRouter();
         $actionArgs = array('submissionId' => $submissionId, 'reviewAssignmentId' => $rowId, 'stageId' => $stageId, 'round' => $round);
         // read or upload a review
         $submissionDao = Application::getSubmissionDAO();
         $submission = $submissionDao->getById($submissionId);
         $this->addAction(new LinkAction('readReview', new AjaxModal($router->url($request, null, null, 'readReview', null, $actionArgs), __('editor.review.reviewDetails') . ': ' . $submission->getLocalizedTitle(), 'modal_information'), __('editor.review.reviewDetails'), 'more_info'));
         $this->addAction(new LinkAction('email', new AjaxModal($router->url($request, null, null, 'sendEmail', null, $actionArgs), __('editor.review.emailReviewer'), 'modal_email'), __('editor.review.emailReviewer'), 'notify'));
         $this->addAction(new LinkAction('manageAccess', new AjaxModal($router->url($request, null, null, 'editReview', null, $actionArgs), __('editor.submissionReview.editReview'), 'modal_add_file'), __('common.edit'), 'edit'));
         $reviewAssignment = $this->getData();
         // Only assign this action if the reviewer has not acknowledged yet.
         if (!$reviewAssignment->getDateConfirmed()) {
             $this->addAction(new LinkAction('unassignReviewer', new AjaxModal($router->url($request, null, null, 'unassignReviewer', null, $actionArgs), __('editor.review.unassignReviewer'), 'modal_delete'), __('editor.review.unassignReviewer'), 'delete'));
         }
         $this->addAction(new LinkAction('history', new AjaxModal($router->url($request, null, null, 'reviewHistory', null, $actionArgs), __('submission.history'), 'modal_information'), __('submission.history'), 'more_info'));
     }
 }
 /**
  * @copydoc SubmissionListGridHandler::getSubmissions()
  */
 function getSubmissions($request, $userId)
 {
     $this->setTitle('submission.mySubmissions');
     $submissionDao = Application::getSubmissionDAO();
     $rangeInfo = $this->getGridRangeInfo($request, $this->getId());
     $data = $submissionDao->getUnpublishedByUserId($userId, null, $rangeInfo);
     return $data;
 }
 /**
  * Save changes to submission.
  * @param $args array
  * @param $request PKPRequest
  * @return int the submission ID
  */
 function execute($args, $request)
 {
     parent::execute($args, $request);
     // handle category assignment.
     ListbuilderHandler::unpack($request, $this->getData('categories'));
     $submissionDao = Application::getSubmissionDAO();
     $submission = $submissionDao->getById($this->submissionId);
     // Send author notification email
     import('classes.mail.MonographMailTemplate');
     $mail = new MonographMailTemplate($submission, 'SUBMISSION_ACK', null, null, null, false);
     $authorMail = new MonographMailTemplate($submission, 'SUBMISSION_ACK_NOT_USER', null, null, null, false);
     $context = $request->getContext();
     $router = $request->getRouter();
     if ($mail->isEnabled()) {
         // submission ack emails should be from the contact.
         $mail->setReplyTo($this->context->getSetting('contactEmail'), $this->context->getSetting('contactName'));
         $authorMail->setReplyTo($this->context->getSetting('contactEmail'), $this->context->getSetting('contactName'));
         $user = $request->getUser();
         $primaryAuthor = $submission->getPrimaryAuthor();
         if (!isset($primaryAuthor)) {
             $authors = $submission->getAuthors();
             $primaryAuthor = $authors[0];
         }
         $mail->addRecipient($user->getEmail(), $user->getFullName());
         if ($user->getEmail() != $primaryAuthor->getEmail()) {
             $authorMail->addRecipient($primaryAuthor->getEmail(), $primaryAuthor->getFullName());
         }
         if ($context->getSetting('copySubmissionAckPrimaryContact')) {
             $authorMail->addBcc($context->getSetting('contactEmail'), $context->getSetting('contactName'));
         }
         if ($copyAddress = $context->getSetting('copySubmissionAckAddress')) {
             $authorMail->addBcc($copyAddress);
         }
         $assignedAuthors = $submission->getAuthors();
         foreach ($assignedAuthors as $author) {
             $authorEmail = $author->getEmail();
             // only add the author email if they have not already been added as the primary author
             // or user creating the submission.
             if ($authorEmail != $primaryAuthor->getEmail() && $authorEmail != $user->getEmail()) {
                 $authorMail->addRecipient($author->getEmail(), $author->getFullName());
             }
         }
         $mail->bccAssignedSeriesEditors($submission->getId(), WORKFLOW_STAGE_ID_SUBMISSION);
         $mail->assignParams(array('authorName' => $user->getFullName(), 'authorUsername' => $user->getUsername(), 'editorialContactSignature' => $context->getSetting('contactName') . "\n" . $context->getLocalizedName(), 'submissionUrl' => $router->url($request, null, 'authorDashboard', 'submission', $submission->getId())));
         $authorMail->assignParams(array('submitterName' => $user->getFullName(), 'editorialContactSignature' => $context->getSetting('contactName') . "\n" . $context->getLocalizedName()));
         $mail->send($request);
         $recipients = $authorMail->getRecipients();
         if (!empty($recipients)) {
             $authorMail->send($request);
         }
     }
     // Log submission.
     import('lib.pkp.classes.log.SubmissionLog');
     import('classes.log.SubmissionEventLogEntry');
     // constants
     SubmissionLog::logEvent($request, $submission, SUBMISSION_LOG_SUBMISSION_SUBMIT, 'submission.event.submissionSubmitted');
     return $this->submissionId;
 }
 /**
  * @copydoc SubmissionListGridHandler::getSubmissions()
  */
 function getSubmissions($request)
 {
     $context = $request->getContext();
     $userRoles = $this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES);
     $canSeeAllSubmissions = in_array(ROLE_ID_MANAGER, $userRoles);
     $user = $request->getUser();
     $submissionDao = Application::getSubmissionDAO();
     return $submissionDao->getByStatus(array(STATUS_DECLINED, STATUS_PUBLISHED), $canSeeAllSubmissions ? null : $user->getId(), $context->getId(), $this->getGridRangeInfo($request, $this->getId()));
 }
 /**
  * Reset permissions data assigned to existing submissions.
  * @param $args array
  * @param $request PKPRequest
  * @return JSONMessage JSON response.
  */
 function resetPermissions($args, $request)
 {
     $context = $request->getContext();
     $submissionDao = Application::getSubmissionDAO();
     $submissionDao->deletePermissions($context->getId());
     $notificationManager = new NotificationManager();
     $user = $request->getUser();
     $notificationManager->createTrivialNotification($user->getId());
     return new JSONMessage(true);
 }
 /**
  * Constructor.
  * @param $submissionId integer
  * @param $userId integer
  * @param $stageId integer
  * @param $formParams array
  */
 function IssueEntryPublicationMetadataForm($submissionId, $userId, $stageId = null, $formParams = null)
 {
     parent::Form('controllers/tab/issueEntry/form/publicationMetadataFormFields.tpl');
     $submissionDao = Application::getSubmissionDAO();
     $this->_submission = $submissionDao->getById($submissionId);
     $this->_stageId = $stageId;
     $this->_formParams = $formParams;
     $this->_userId = $userId;
     $this->addCheck(new FormValidatorPost($this));
 }
 /**
  * @copydoc PKPNotificationOperationManager::getNotificationUrl()
  */
 function getNotificationUrl($request, $notification)
 {
     $dispatcher = Application::getDispatcher();
     $contextDao = Application::getContextDAO();
     $context = $contextDao->getById($notification->getContextId());
     $reviewRound = $this->getReviewRound($notification->getAssocId());
     $submissionDao = Application::getSubmissionDAO();
     $submission = $submissionDao->getById($reviewRound->getSubmissionId());
     import('lib.pkp.controllers.grid.submissions.SubmissionsListGridCellProvider');
     return SubmissionsListGridCellProvider::getUrlByUserRoles($request, $submission);
 }
 /**
  * @copydoc GridHandler::loadData()
  */
 protected function loadData($request, $filter)
 {
     $user = $request->getUser();
     $context = $request->getContext();
     $userId = $user->getId();
     list($search, $column, $stageId) = $this->getFilterValues($filter);
     $submissionDao = Application::getSubmissionDAO();
     $rangeInfo = $this->getGridRangeInfo($request, $this->getId());
     $data = $submissionDao->getUnpublishedByUserId($userId, $context->getId(), $search, $stageId, $rangeInfo);
     return $data;
 }
 /**
  * Save changes to submission.
  * @param $request PKPRequest
  */
 function execute($request)
 {
     parent::execute($request);
     $submission = $this->getSubmission();
     $submissionDao = Application::getSubmissionDAO();
     $submission->setSectionId($this->getData('sectionId'));
     $submissionDao->updateObject($submission);
     if ($submission->getDatePublished()) {
         import('classes.search.ArticleSearchIndex');
         ArticleSearchIndex::articleMetadataChanged($submission);
     }
 }
 /**
  * Constructor.
  * @param $submissionId integer
  * @param $userId integer
  * @param $stageId integer
  * @param $formParams array
  */
 function __construct($submissionId, $userId, $stageId = null, $formParams = null)
 {
     parent::__construct('controllers/tab/issueEntry/form/publicationMetadataFormFields.tpl');
     $submissionDao = Application::getSubmissionDAO();
     $this->_submission = $submissionDao->getById($submissionId);
     $this->_stageId = $stageId;
     $this->_formParams = $formParams;
     $this->_userId = $userId;
     $this->addCheck(new FormValidatorPost($this));
     $this->addCheck(new FormValidatorCSRF($this));
     $this->addCheck(new FormValidatorURL($this, 'licenseURL', 'optional', 'form.url.invalid'));
 }
 /**
  * Save changes to submission.
  * @param $args array
  * @param $request PKPRequest
  * @return int the submission ID
  */
 function execute($args, $request)
 {
     // Update submission
     $submissionDao = Application::getSubmissionDAO();
     $submission = $this->submission;
     if ($submission->getSubmissionProgress() <= $this->step) {
         $submission->stampStatusModified();
         $submission->setSubmissionProgress($this->step + 1);
         $submissionDao->updateObject($submission);
     }
     return $this->submissionId;
 }
 /**
  * Get the submission for a query.
  * @param $query Query
  * @return Submission
  */
 protected function getQuerySubmission($query)
 {
     $submissionDao = Application::getSubmissionDAO();
     switch ($query->getAssocType()) {
         case ASSOC_TYPE_SUBMISSION:
             return $submissionDao->getById($query->getAssocId());
         case ASSOC_TYPE_REPRESENTATION:
             $representationDao = Application::getRepresentationDAO();
             $representation = $representationDao->getById($query->getAssocId());
             return $submissionDao->getById($representation->getSubmissionId());
     }
     assert(false);
 }
 /**
  * @copydoc GridHandler::loadData()
  */
 function loadData($request, $filter)
 {
     // Default implementation fetches all submissions.
     $submissionDao = Application::getSubmissionDAO();
     $context = $request->getContext();
     list($search, $column, $stageId) = $this->getFilterValues($filter);
     $title = $author = null;
     if ($column == 'title') {
         $title = $search;
     } elseif ($column == 'author') {
         $author = $search;
     }
     return $submissionDao->getByStatus(array(STATUS_DECLINED, STATUS_PUBLISHED, STATUS_QUEUED), null, $context ? $context->getId() : null, $title, $author, $stageId, $this->getGridRangeInfo($request, $this->getId()));
 }
 /**
  * @copydoc NotificationManagerDelegate::getNotificationContents()
  */
 public function getNotificationContents($request, $notification)
 {
     $stageData = $this->_getStageDataByType();
     $stageId = $stageData['id'];
     $submissionId = $notification->getAssocId();
     $submissionDao = Application::getSubmissionDAO();
     $submission = $submissionDao->getById($submissionId);
     $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO');
     $lastReviewRound = $reviewRoundDao->getLastReviewRoundBySubmissionId($submission->getId(), $stageId);
     import('lib.pkp.controllers.api.file.linkAction.AddRevisionLinkAction');
     AppLocale::requireComponents(LOCALE_COMPONENT_APP_EDITOR);
     // editor.review.uploadRevision
     $uploadFileAction = new AddRevisionLinkAction($request, $lastReviewRound, array(ROLE_ID_AUTHOR));
     return $this->fetchLinkActionNotificationContent($uploadFileAction, $request);
 }
 /**
  * Save the metadata.
  */
 function execute($request)
 {
     parent::execute($request);
     $submission = $this->getSubmission();
     $submissionDao = Application::getSubmissionDAO();
     $publishedArticleDao = DAORegistry::getDAO('PublishedArticleDAO');
     $publishedArticle = $publishedArticleDao->getPublishedArticleByArticleId($submission->getId(), null, false);
     $isExistingEntry = $publishedArticle ? true : false;
     if ($isExistingEntry) {
         // Update the search index for this published article.
         import('classes.search.ArticleSearchIndex');
         ArticleSearchIndex::articleMetadataChanged($submission);
     }
     $submissionDao->updateObject($submission);
 }
 /**
  * Constructor.
  * @param $submissionId integer
  * @param $stageId integer
  * @param $formParams array
  */
 function PKPSubmissionMetadataViewForm($submissionId, $stageId = null, $formParams = null, $templateName = 'controllers/modals/submissionMetadata/form/submissionMetadataViewForm.tpl')
 {
     parent::Form($templateName);
     $submissionDao = Application::getSubmissionDAO();
     $submission = $submissionDao->getById((int) $submissionId);
     if ($submission) {
         $this->_submission = $submission;
     }
     $this->_stageId = $stageId;
     $this->_formParams = $formParams;
     $this->_metadataFormImplem = new SubmissionMetadataFormImplementation($this);
     // Validation checks for this form
     $this->_metadataFormImplem->addChecks($submission);
     $this->addCheck(new FormValidatorPost($this));
 }
 /**
  * Constructor.
  * @param $submissionId integer
  * @param $userId integer
  * @param $stageId integer
  * @param $formParams array
  */
 function IssueEntryPublicationMetadataForm($submissionId, $userId, $stageId = null, $formParams = null)
 {
     parent::Form('controllers/tab/issueEntry/form/publicationMetadataFormFields.tpl');
     $submissionDao = Application::getSubmissionDAO();
     $this->_submission = $submissionDao->getById($submissionId);
     $this->_stageId = $stageId;
     $this->_formParams = $formParams;
     $this->_userId = $userId;
     $this->addCheck(new FormValidatorPost($this));
     if (isset($formParams['expeditedSubmission']) && $formParams['expeditedSubmission']) {
         // make choosing an issue mandatory for expedited submissions.
         $request = Application::getRequest();
         $context = $request->getContext();
         $this->addCheck(new FormValidatorCustom($this, 'issueId', 'required', 'author.submit.form.issueRequired', array(DAORegistry::getDAO('IssueDAO'), 'issueIdExists'), array($context->getId())));
     }
 }
 /**
  * @copydoc SubmissionListGridHandler::getSubmissions()
  */
 function getSubmissions($request, $userId)
 {
     $submissionDao = Application::getSubmissionDAO();
     $userGroupDao = DAORegistry::getDAO('UserGroupDAO');
     $signoffDao = DAORegistry::getDAO('SignoffDAO');
     $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO');
     $authorDao = DAORegistry::getDAO('AuthorDAO');
     // Get submissions the user is a stage participant for
     $signoffs = $signoffDao->getByUserId($userId);
     $authorUserGroupIds = $userGroupDao->getUserGroupIdsByRoleId(ROLE_ID_AUTHOR);
     $data = array();
     // get signoffs and stage assignments
     $stageAssignments = $stageAssignmentDao->getByUserId($userId);
     while ($stageAssignment = $stageAssignments->next()) {
         $submission = $submissionDao->getAssignedById($stageAssignment->getSubmissionId(), $userId);
         if (!$submission) {
             continue;
         }
         $submissionId = $submission->getId();
         $data[$submissionId] = $submission;
     }
     while ($signoff = $signoffs->next()) {
         // If it is a submission signoff (and not, say, a file signoff) and
         // If this is an author signoff, do not include (it will be in the 'my submissions' grid)
         if ($signoff->getAssocType() == ASSOC_TYPE_SUBMISSION && !in_array($signoff->getUserGroupId(), $authorUserGroupIds)) {
             $submission = $submissionDao->getById($signoff->getAssocId());
             $submissionId = $submission->getId();
             if ($submission->getStatus() != STATUS_DECLINED) {
                 $data[$submissionId] = $submission;
             }
         }
     }
     // Get submissions the user is reviewing
     $reviewerSubmissionDao = DAORegistry::getDAO('ReviewerSubmissionDAO');
     /* @var $reviewerSubmissionDao ReviewerSubmissionDAO */
     $reviewerSubmissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($userId);
     while ($reviewerSubmission = $reviewerSubmissions->next()) {
         $submissionId = $reviewerSubmission->getId();
         if (!isset($data[$submissionId])) {
             // Only add if not already provided above --
             // otherwise reviewer workflow link may
             // clobber editorial workflow link
             $data[$submissionId] = $reviewerSubmission;
         }
     }
     return $data;
 }
 /**
  * Save changes to submission.
  * @param $request PKPRequest
  */
 function execute($request)
 {
     parent::execute($request);
     $submission = $this->getSubmission();
     $submissionDao = Application::getSubmissionDAO();
     // if section changed consider reordering
     $reorder = false;
     $oldSectionId = $submission->getSectionId();
     if ($oldSectionId != $this->getData('sectionId')) {
         $reorder = true;
         $submission->setSectionId($this->getData('sectionId'));
     }
     $locale = AppLocale::getLocale();
     // Copy an uploaded cover file for the article, if there is one.
     if ($temporaryFileId = $this->getData('temporaryFileId')) {
         $user = $request->getUser();
         $temporaryFileDao = DAORegistry::getDAO('TemporaryFileDAO');
         $temporaryFile = $temporaryFileDao->getTemporaryFile($temporaryFileId, $user->getId());
         import('classes.file.PublicFileManager');
         $publicFileManager = new PublicFileManager();
         $newFileName = 'article_' . $submission->getId() . '_cover_' . $locale . $publicFileManager->getImageExtension($temporaryFile->getFileType());
         $journal = $request->getJournal();
         $publicFileManager->copyJournalFile($journal->getId(), $temporaryFile->getFilePath(), $newFileName);
         $submission->setCoverImage($newFileName, $locale);
     }
     $submission->setCoverImageAltText($this->getData('coverImageAltText'), $locale);
     $submissionDao->updateObject($submission);
     if ($reorder) {
         // see if it is a published article
         $publishedArticleDao = DAORegistry::getDAO('PublishedArticleDAO');
         $publishedArticle = $publishedArticleDao->getPublishedArticleByArticleId($submission->getId(), null, false);
         /* @var $publishedArticle PublishedArticle */
         if ($publishedArticle) {
             // Resequence the articles.
             $publishedArticle->setSequence(REALLY_BIG_NUMBER);
             $publishedArticleDao->updatePublishedArticle($publishedArticle);
             $publishedArticleDao->resequencePublishedArticles($submission->getSectionId(), $publishedArticle->getIssueId());
             // The reordering for the old section is not necessary, but for the correctness sake
             $publishedArticleDao->resequencePublishedArticles($oldSectionId, $publishedArticle->getIssueId());
         }
     }
     if ($submission->getDatePublished()) {
         import('classes.search.ArticleSearchIndex');
         ArticleSearchIndex::articleMetadataChanged($submission);
     }
 }
 /**
  * Save changes to submission.
  * @param $args array
  * @param $request PKPRequest
  * @return int the submission ID
  */
 function execute($args, $request)
 {
     // Execute submission metadata related operations.
     $this->_metadataFormImplem->execute($this->submission, $request);
     // Get an updated version of the submission.
     $submissionDao = Application::getSubmissionDAO();
     $submission = $submissionDao->getById($this->submissionId);
     // Set other submission data.
     if ($submission->getSubmissionProgress() <= $this->step) {
         $submission->setSubmissionProgress($this->step + 1);
         $submission->stampStatusModified();
     }
     parent::execute($submission);
     // Save the submission.
     $submissionDao->updateObject($submission);
     return $this->submissionId;
 }
 /**
  * @copydoc NotificationManagerDelegate::getNotificationMessage()
  */
 public function getNotificationMessage($request, $notification)
 {
     assert($notification->getAssocType() == ASSOC_TYPE_SUBMISSION && is_numeric($notification->getAssocId()));
     $submissionDao = Application::getSubmissionDAO();
     $submission = $submissionDao->getById($notification->getAssocId());
     /* @var $submission Submission */
     switch ($notification->getType()) {
         case NOTIFICATION_TYPE_SUBMISSION_SUBMITTED:
             return __('notification.type.submissionSubmitted', array('title' => $submission->getLocalizedTitle()));
         case NOTIFICATION_TYPE_METADATA_MODIFIED:
             return __('notification.type.metadataModified', array('title' => $submission->getLocalizedTitle()));
         case NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_REQUIRED:
             return __('notification.type.editorAssignmentTask');
         default:
             assert(false);
     }
 }
 /**
  * @copydoc GridHandler::loadData()
  */
 protected function loadData($request, $filter)
 {
     $submissionDao = Application::getSubmissionDAO();
     $context = $request->getContext();
     $rangeInfo = $this->getGridRangeInfo($request, $this->getId());
     list($search, $column, $stageId) = $this->getFilterValues($filter);
     $title = $author = $editor = null;
     if ($column == 'title') {
         $title = $search;
     } elseif ($column == 'author') {
         $author = $search;
     } elseif ($column == 'editor') {
         $editor = $search;
     }
     $nonExistingUserId = 0;
     return $submissionDao->getActiveSubmissions($context->getId(), $title, $author, $editor, $stageId, $rangeInfo);
 }
Example #27
0
 /**
  * @see ScheduledTask::executeActions()
  */
 protected function executeActions()
 {
     $submission = null;
     $context = null;
     $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO');
     $submissionDao = Application::getSubmissionDAO();
     $contextDao = Application::getContextDAO();
     $incompleteAssignments = $reviewAssignmentDao->getIncompleteReviewAssignments();
     foreach ($incompleteAssignments as $reviewAssignment) {
         // Fetch the submission and the context if necessary.
         if ($submission == null || $submission->getId() != $reviewAssignment->getSubmissionId()) {
             $submission = $submissionDao->getById($reviewAssignment->getSubmissionId());
             if ($context == null || $context->getId() != $submission->getContextId()) {
                 $context = $contextDao->getById($submission->getContextId());
                 $inviteReminderDays = $context->getSetting('numDaysBeforeInviteReminder');
                 $submitReminderDays = $context->getSetting('numDaysBeforeSubmitReminder');
             }
         }
         if ($submission->getStatus() != STATUS_QUEUED) {
             continue;
         }
         // $submission, $context, $...ReminderDays, and $reviewAssignment
         // are initialized by this point.
         $shouldRemind = false;
         if ($inviteReminderDays && $reviewAssignment->getDateConfirmed() == null) {
             $checkDate = strtotime($reviewAssignment->getDateNotified());
             if (time() - $checkDate > 60 * 60 * 24 * $inviteReminderDays) {
                 $shouldRemind = true;
             }
         }
         if ($submitReminderDays && $reviewAssignment->getDateDue() != null) {
             $checkDate = strtotime($reviewAssignment->getDateDue());
             if (time() - $checkDate > 60 * 60 * 24 * $submitReminderDays) {
                 $shouldRemind = true;
             }
         }
         if ($reviewAssignment->getDateReminded() !== null) {
             $shouldRemind = false;
         }
         if ($shouldRemind) {
             $this->sendReminder($reviewAssignment, $submission, $context);
         }
     }
 }
 /**
  * @copydoc GridHandler::loadData()
  */
 protected function loadData($request, $filter)
 {
     $user = $request->getUser();
     $userId = $user->getId();
     $submissionDao = Application::getSubmissionDAO();
     $userGroupDao = DAORegistry::getDAO('UserGroupDAO');
     $stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO');
     $authorDao = DAORegistry::getDAO('AuthorDAO');
     list($search, $column, $stageId) = $this->getFilterValues($filter);
     $title = $author = null;
     if ($column == 'title') {
         $title = $search;
     } else {
         $author = $search;
     }
     $rangeInfo = $this->getGridRangeInfo($request, $this->getId());
     $context = $request->getContext();
     return $submissionDao->getAssignedToUser($userId, $context ? $context->getId() : null, $title, $author, $stageId, $rangeInfo);
 }
 /**
  * Constructor
  * @param $request Request
  * @param $submissionId int the ID of the submission to present link for
  * to show information about.
  * @param $linkKey string optional locale key to display for link
  */
 function SubmissionInfoCenterLinkAction($request, $submissionId, $linkKey = 'informationCenter.editorialHistory')
 {
     // Instantiate the information center modal.
     $submissionDao = Application::getSubmissionDAO();
     $submission = $submissionDao->getById($submissionId);
     $primaryAuthor = $submission->getPrimaryAuthor();
     if (!isset($primaryAuthor)) {
         $authors = $submission->getAuthors();
         if (sizeof($authors) > 0) {
             $primaryAuthor = $authors[0];
         }
     }
     $title = isset($primaryAuthor) ? implode(', ', array($primaryAuthor->getLastName(), $submission->getLocalizedTitle())) : $submission->getLocalizedTitle();
     $dispatcher = $request->getDispatcher();
     import('lib.pkp.classes.linkAction.request.AjaxModal');
     $ajaxModal = new AjaxModal($dispatcher->url($request, ROUTE_COMPONENT, null, 'informationCenter.SubmissionInformationCenterHandler', 'viewInformationCenter', null, array('submissionId' => $submissionId)), $title, 'modal_information');
     // Configure the link action.
     parent::LinkAction('editorialHistory', $ajaxModal, __($linkKey), 'more_info');
 }
 /**
  * @copydoc GridRow::initialize
  */
 function initialize($request, $template = null)
 {
     parent::initialize($request, $template);
     $rowId = $this->getId();
     if (!empty($rowId) && is_numeric($rowId)) {
         // 1) Delete submission action.
         $submissionDao = Application::getSubmissionDAO();
         /* @var $submissionDao SubmissionDAO */
         $submission = $submissionDao->getById($rowId);
         assert(is_a($submission, 'Submission'));
         if ($submission->getSubmissionProgress() != 0 || $this->_isManager) {
             $router = $request->getRouter();
             import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
             $this->addAction(new LinkAction('delete', new RemoteActionConfirmationModal($request->getSession(), __('common.confirmDelete'), __('common.delete'), $router->url($request, null, null, 'deleteSubmission', null, array('submissionId' => $rowId)), 'modal_delete'), __('grid.action.delete'), 'delete'));
         }
         // 2) Information Centre action
         import('lib.pkp.controllers.informationCenter.linkAction.SubmissionInfoCenterLinkAction');
         $this->addAction(new SubmissionInfoCenterLinkAction($request, $rowId, 'grid.action.moreInformation'));
     }
 }