/** * 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); }
/** * @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')); } }