/** * @see Form::fetch() */ function fetch($request) { $templateMgr = TemplateManager::getManager($request); $reviewAssignment = $this->getReviewAssignment(); $reviewRoundId = $reviewAssignment->getReviewRoundId(); // Assign the objects and data to the template. $context = $this->request->getContext(); $templateMgr->assign('reviewAssignment', $reviewAssignment); $templateMgr->assign('reviewRoundId', $reviewRoundId); // Include the review recommendation options on the form. $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions()); if ($reviewAssignment->getReviewFormId()) { // Get the review form components $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormElements = $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId()); $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId()); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewformid = $reviewAssignment->getReviewFormId(); $reviewForm = $reviewFormDao->getById($reviewAssignment->getReviewFormId(), Application::getContextAssocType(), $context->getId()); $templateMgr->assign('reviewForm', $reviewForm); $templateMgr->assign('reviewFormElements', $reviewFormElements); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign('disabled', isset($reviewAssignment) && $reviewAssignment->getDateCompleted() != null); } // // Assign the link actions // if ($context->getLocalizedSetting('reviewGuidelines')) { import('lib.pkp.controllers.confirmationModal.linkAction.ViewReviewGuidelinesLinkAction'); $viewReviewGuidelinesAction = new ViewReviewGuidelinesLinkAction($request, $reviewAssignment->getStageId()); $templateMgr->assign('viewGuidelinesAction', $viewReviewGuidelinesAction); } return parent::fetch($request); }
/** * @see PKPUsageStatsLoader::getExpectedPageAndOp() */ protected function getExpectedPageAndOp() { $pageAndOp = parent::getExpectedPageAndOp(); $pageAndOp = $pageAndOp + array(ASSOC_TYPE_SUBMISSION_FILE => array('catalog/download'), ASSOC_TYPE_MONOGRAPH => array('catalog/book'), ASSOC_TYPE_SERIES => array('catalog/series')); $pageAndOp[Application::getContextAssocType()][] = 'catalog/index'; return $pageAndOp; }
/** * @see PKPUsageStatsLoader::getExpectedPageAndOp() */ protected function getExpectedPageAndOp() { $pageAndOp = parent::getExpectedPageAndOp(); $pageAndOp = $pageAndOp + array(ASSOC_TYPE_SUBMISSION_FILE => array('article/download'), ASSOC_TYPE_ARTICLE => array('article/view'), ASSOC_TYPE_ISSUE => array('issue/view'), ASSOC_TYPE_ISSUE_GALLEY => array('issue/download')); $pageAndOp[Application::getContextAssocType()][] = 'index'; return $pageAndOp; }
/** * @copydoc Form::fetch() */ function fetch($request) { $submissionDao = Application::getSubmissionDAO(); $submission = $submissionDao->getById($this->_submissionId); // All stages can choose the default template $templateKeys = array('NOTIFICATION_CENTER_DEFAULT'); // Determine if the current user can use any custom templates defined. $user = $request->getUser(); $roleDao = DAORegistry::getDAO('RoleDAO'); $userRoles = $roleDao->getByUserId($user->getId(), $submission->getContextId()); foreach ($userRoles as $userRole) { if (in_array($userRole->getId(), array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT))) { $emailTemplateDao = DAORegistry::getDAO('EmailTemplateDAO'); $customTemplates = $emailTemplateDao->getCustomTemplateKeys(Application::getContextAssocType(), $submission->getContextId()); $templateKeys = array_merge($templateKeys, $customTemplates); break; } } $stageTemplates = $this->_getStageTemplates(); $currentStageId = $this->getStageId(); if (array_key_exists($currentStageId, $stageTemplates)) { $templateKeys = array_merge($templateKeys, $stageTemplates[$currentStageId]); } foreach ($templateKeys as $templateKey) { $template = $this->_getMailTemplate($submission, $templateKey); $template->assignParams(array()); $template->replaceParams(); $templates[$templateKey] = $template->getSubject(); } $templateMgr = TemplateManager::getManager($request); $templateMgr->assign(array('templates' => $templates, 'stageId' => $currentStageId, 'includeNotifyUsersListbuilder' => $this->includeNotifyUsersListbuilder(), 'submissionId' => $this->_submissionId, 'itemId' => $this->_itemId, 'userId' => (int) $request->getUserVar('userId'))); return parent::fetch($request); }
/** * View announcement details. * @param $args array first parameter is the ID of the announcement to display * @param $request PKPRequest */ function view($args, $request) { $this->validate(); $this->setupTemplate($request); $context = $request->getContext(); $announcementId = (int) array_shift($args); $announcementDao = DAORegistry::getDAO('AnnouncementDAO'); $announcement = $announcementDao->getById($announcementId); if ($announcement && $announcement->getAssocType() == Application::getContextAssocType() && $announcement->getAssocId() == $context->getId() && ($announcement->getDateExpire() == null || strtotime($announcement->getDateExpire()) > time())) { $templateMgr = TemplateManager::getManager($request); $templateMgr->assign('announcement', $announcement); $templateMgr->assign('announcementTitle', $announcement->getLocalizedTitleFull()); return $templateMgr->display('announcements/view.tpl'); } $request->redirect(null, 'announcement'); }
/** * Initialize form data from current settings. * @param $reviewForm ReviewForm optional */ function initData($request) { if ($this->reviewFormId) { // Get review form $context = $request->getContext(); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewForm = $reviewFormDao->getById($this->reviewFormId, Application::getContextAssocType(), $context->getId()); // Get review form elements $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormElements = $reviewFormElementDao->getByReviewFormId($this->reviewFormId); $count = count($reviewFormElements); // Set data $this->setData('title', $reviewForm->getLocalizedTitle(null)); $this->setData('description', $reviewForm->getLocalizedDescription(null)); $this->setData('reviewFormElements', $reviewFormElements); } }
/** * @copydoc Form::fetch() */ function fetch($request) { $templateMgr = TemplateManager::getManager($request); $templateMgr->assign('submissionId', $this->_submissionId); $templateMgr->assign('itemId', $this->_itemId); $submissionDao = Application::getSubmissionDAO(); $submission = $submissionDao->getById($this->_submissionId); // All stages can choose the default template $templateKeys = array('NOTIFICATION_CENTER_DEFAULT'); // Determine if the current user can use any custom templates defined. $user = $request->getUser(); $roleDao = DAORegistry::getDAO('RoleDAO'); $userRoles = $roleDao->getByUserId($user->getId(), $submission->getContextId()); foreach ($userRoles as $userRole) { if (in_array($userRole->getId(), array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT))) { $emailTemplateDao = DAORegistry::getDAO('EmailTemplateDAO'); $customTemplates = $emailTemplateDao->getCustomTemplateKeys(Application::getContextAssocType(), $submission->getContextId()); $templateKeys = array_merge($templateKeys, $customTemplates); break; } } // template keys indexed by stageId $stageTemplates = $this->_getStageTemplates(); $currentStageId = $this->getStageId(); if (array_key_exists($currentStageId, $stageTemplates)) { $templateKeys = array_merge($templateKeys, $stageTemplates[$currentStageId]); } foreach ($templateKeys as $templateKey) { $template = $this->_getMailTemplate($submission, $templateKey); $template->assignParams(array()); $templates[$templateKey] = $template->getSubject(); } $templateMgr->assign('templates', $templates); $templateMgr->assign('stageId', $currentStageId); $templateMgr->assign('includeNotifyUsersListbuilder', $this->includeNotifyUsersListbuilder()); // check to see if we were handed a userId from the stage participants grid. If so, // pass that in so the list builder can pre-populate. The Listbuilder validates this. $templateMgr->assign('userId', (int) $request->getUserVar('userId')); return parent::fetch($request); }
/** * @see Form::fetch() */ function fetch($request) { $templateMgr = TemplateManager::getManager($request); $reviewAssignment = $this->getReviewAssignment(); // Assign the objects and data to the template. $context = $this->request->getContext(); $templateMgr->assign(array('reviewAssignment' => $reviewAssignment, 'reviewRoundId' => $reviewAssignment->getReviewRoundId(), 'reviewerRecommendationOptions' => ReviewAssignment::getReviewerRecommendationOptions())); if ($reviewAssignment->getReviewFormId()) { // Get the review form components $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $templateMgr->assign(array('reviewForm' => $reviewFormDao->getById($reviewAssignment->getReviewFormId(), Application::getContextAssocType(), $context->getId()), 'reviewFormElements' => $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId()), 'reviewFormResponses' => $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId()), 'disabled' => isset($reviewAssignment) && $reviewAssignment->getDateCompleted() != null)); } // // Assign the link actions // import('lib.pkp.controllers.confirmationModal.linkAction.ViewReviewGuidelinesLinkAction'); $viewReviewGuidelinesAction = new ViewReviewGuidelinesLinkAction($request, $reviewAssignment->getStageId()); if ($viewReviewGuidelinesAction->getGuidelines()) { $templateMgr->assign('viewGuidelinesAction', $viewReviewGuidelinesAction); } return parent::fetch($request); }
/** * Save review assignment * @param $args array * @param $request PKPRequest */ function execute($args, $request) { $submission = $this->getSubmission(); $context = $request->getContext(); $currentReviewRound = $this->getReviewRound(); $stageId = $currentReviewRound->getStageId(); $reviewDueDate = $this->getData('reviewDueDate'); $responseDueDate = $this->getData('responseDueDate'); // Get reviewer id and validate it. $reviewerId = (int) $this->getData('reviewerId'); if (!$this->_isValidReviewer($context, $submission, $currentReviewRound, $reviewerId)) { fatalError('Invalid reviewer id.'); } $reviewMethod = (int) $this->getData('reviewMethod'); import('lib.pkp.classes.submission.action.EditorAction'); $editorAction = new EditorAction(); $editorAction->addReviewer($request, $submission, $reviewerId, $currentReviewRound, $reviewDueDate, $responseDueDate, $reviewMethod); // Get the reviewAssignment object now that it has been added. $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); /* @var $reviewAssignmentDao ReviewAssignmentDAO */ $reviewAssignment = $reviewAssignmentDao->getReviewAssignment($currentReviewRound->getId(), $reviewerId, $currentReviewRound->getRound(), $stageId); $reviewAssignment->setDateNotified(Core::getCurrentDate()); $reviewAssignment->setCancelled(0); $reviewAssignment->stampModified(); // Ensure that the review form ID is valid, if specified $reviewFormId = (int) $this->getData('reviewFormId'); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewForm = $reviewFormDao->getById($reviewFormId, Application::getContextAssocType(), $context->getId()); $reviewAssignment->setReviewFormId($reviewForm ? $reviewFormId : null); $reviewAssignmentDao->updateObject($reviewAssignment); // Grant access for this review to all selected files. $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); import('lib.pkp.classes.submission.SubmissionFile'); // File constants $submissionFiles = $submissionFileDao->getLatestRevisionsByReviewRound($currentReviewRound, SUBMISSION_FILE_REVIEW_FILE); $selectedFiles = (array) $this->getData('selectedFiles'); $reviewFilesDao = DAORegistry::getDAO('ReviewFilesDAO'); foreach ($submissionFiles as $submissionFile) { if (in_array($submissionFile->getFileId(), $selectedFiles)) { $reviewFilesDao->grant($reviewAssignment->getId(), $submissionFile->getFileId()); } } // Notify the reviewer via email. import('lib.pkp.classes.mail.SubmissionMailTemplate'); $templateKey = $this->getData('template'); $mail = new SubmissionMailTemplate($submission, $templateKey, null, null, null, false); if ($mail->isEnabled() && !$this->getData('skipEmail')) { $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */ $reviewer = $userDao->getById($reviewerId); $user = $request->getUser(); $mail->addRecipient($reviewer->getEmail(), $reviewer->getFullName()); $mail->setBody($this->getData('personalMessage')); $dispatcher = $request->getDispatcher(); // Set the additional arguments for the one click url $reviewUrlArgs = array('submissionId' => $this->getSubmissionId()); if ($context->getSetting('reviewerAccessKeysEnabled')) { import('lib.pkp.classes.security.AccessKeyManager'); $accessKeyManager = new AccessKeyManager(); $expiryDays = $context->getSetting('numWeeksPerReview') + 4 * 7; $accessKey = $accessKeyManager->createKey($context->getId(), $reviewerId, $reviewAssignment->getId(), $expiryDays); $reviewUrlArgs = array_merge($reviewUrlArgs, array('reviewId' => $reviewAssignment->getId(), 'key' => $accessKey)); } // Assign the remaining parameters $mail->assignParams(array('reviewerName' => $reviewer->getFullName(), 'responseDueDate' => $responseDueDate, 'reviewDueDate' => $reviewDueDate, 'reviewerUserName' => $reviewer->getUsername(), 'submissionReviewUrl' => $dispatcher->url($request, ROUTE_PAGE, null, 'reviewer', 'submission', null, $reviewUrlArgs))); $mail->send($request); } return $reviewAssignment; }
/** * Open a modal to read the reviewer's review and * download any files they may have uploaded * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function readReview($args, $request) { $templateMgr = TemplateManager::getManager($request); $reviewAssignment = $this->getAuthorizedContextObject(ASSOC_TYPE_REVIEW_ASSIGNMENT); $templateMgr->assign(array('submission' => $this->getSubmission(), 'reviewAssignment' => $reviewAssignment, 'reviewerRecommendationOptions' => ReviewAssignment::getReviewerRecommendationOptions())); if ($reviewAssignment->getReviewFormId()) { // Retrieve review form $context = $request->getContext(); $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormElements = $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId()); $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId()); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewformid = $reviewAssignment->getReviewFormId(); $reviewForm = $reviewFormDao->getById($reviewAssignment->getReviewFormId(), Application::getContextAssocType(), $context->getId()); $templateMgr->assign(array('reviewForm' => $reviewForm, 'reviewFormElements' => $reviewFormElements, 'reviewFormResponses' => $reviewFormResponses, 'disabled' => true)); } else { // Retrieve reviewer comments. $submissionCommentDao = DAORegistry::getDAO('SubmissionCommentDAO'); $templateMgr->assign(array('comments' => $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getSubmissionId(), null, $reviewAssignment->getId(), true), 'commentsPrivate' => $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getSubmissionId(), null, $reviewAssignment->getId(), false))); } // Render the response. return $templateMgr->fetchJson('controllers/grid/users/reviewer/readReview.tpl'); }
/** * Delete a review form element. * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function deleteReviewFormElement($args, $request) { $reviewFormElementId = (int) $request->getUserVar('rowId'); $context = $request->getContext(); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); if ($reviewFormDao->unusedReviewFormExists($this->reviewFormId, Application::getContextAssocType(), $context->getId())) { $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormElementDao->deleteById($reviewFormElementId); return DAO::getDataChangedEvent($reviewFormElementId); } return new JSONMessage(false); }
/** * Save announcement. * @param $request PKPRequest */ function execute($request) { $announcementDao = DAORegistry::getDAO('AnnouncementDAO'); $announcement = $announcementDao->getById($this->announcementId); if (!$announcement) { $announcement = $announcementDao->newDataObject(); } $announcement->setAssocType(Application::getContextAssocType()); $announcement->setAssocId($this->getContextId()); $announcement->setTitle($this->getData('title'), null); // Localized $announcement->setDescriptionShort($this->getData('descriptionShort'), null); // Localized $announcement->setDescription($this->getData('description'), null); // Localized if ($this->getData('typeId')) { $announcement->setTypeId($this->getData('typeId')); } else { $announcement->setTypeId(null); } // Give the parent class a chance to set the dateExpire. $dateExpireSetted = $this->setDateExpire($announcement); if (!$dateExpireSetted) { if ($this->getData('dateExpireYear') != null) { $announcement->setDateExpire($this->getData('dateExpire')); } else { $announcement->setDateExpire(null); } } // Update or insert announcement if ($announcement->getId()) { $announcementDao->updateObject($announcement); } else { $announcement->setDatetimePosted(Core::getCurrentDate()); $announcementDao->insertObject($announcement); } $contextId = $this->getContextId(); // Send a notification to associated users import('classes.notification.NotificationManager'); $notificationManager = new NotificationManager(); $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); $notificationUsers = array(); $allUsers = $userGroupDao->getUsersByContextId($contextId); while ($user = $allUsers->next()) { $notificationUsers[] = array('id' => $user->getId()); } if (!$this->announcementId) { // Only for new announcements foreach ($notificationUsers as $userRole) { $notificationManager->createNotification($request, $userRole['id'], NOTIFICATION_TYPE_NEW_ANNOUNCEMENT, $contextId, ASSOC_TYPE_ANNOUNCEMENT, $announcement->getId()); } $notificationManager->sendToMailingList($request, $notificationManager->createNotification($request, UNSUBSCRIBED_USER_NOTIFICATION, NOTIFICATION_TYPE_NEW_ANNOUNCEMENT, $contextId, ASSOC_TYPE_ANNOUNCEMENT, $announcement->getId())); } return $announcement->getId(); }
/** * Save review form. * @param $request PKPRequest */ function execute($request) { $context = $request->getContext(); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); if ($this->reviewFormId) { $reviewForm = $reviewFormDao->getById($this->reviewFormId, Application::getContextAssocType(), $context->getId()); } else { $reviewForm = $reviewFormDao->newDataObject(); $reviewForm->setAssocType(Application::getContextAssocType()); $reviewForm->setAssocId($context->getId()); $reviewForm->setActive(0); $reviewForm->setSequence(REALLY_BIG_NUMBER); } $reviewForm->setTitle($this->getData('title'), null); // Localized $reviewForm->setDescription($this->getData('description'), null); // Localized if ($this->reviewFormId) { $reviewFormDao->updateObject($reviewForm); $this->reviewFormId = $reviewForm->getId(); } else { $this->reviewFormId = $reviewFormDao->insertObject($reviewForm); $reviewFormDao->resequenceReviewForms(Application::getContextAssocType(), $context->getId()); } }
/** * Get the expected page and operation from the stats plugin. * They are grouped by the object type constant that * they give access to. * @return array */ protected function getExpectedPageAndOp() { return array(Application::getContextAssocType() => array('index/index')); }
/** * Delete a review form. * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function deleteReviewForm($args, $request) { // Identify the current review form $reviewFormId = (int) $request->getUserVar('rowId'); // Identify the context id. $context = $request->getContext(); // Get review form object $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewForm = $reviewFormDao->getById($reviewFormId, Application::getContextAssocType(), $context->getId()); $completeCounts = $reviewFormDao->getUseCounts(Application::getContextAssocType(), $context->getId(), true); $incompleteCounts = $reviewFormDao->getUseCounts(Application::getContextAssocType(), $context->getId(), false); if (isset($reviewForm) && $completeCounts[$reviewFormId] == 0 && $incompleteCounts[$reviewFormId] == 0) { $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); $reviewAssignments = $reviewAssignmentDao->getByReviewFormId($reviewFormId); foreach ($reviewAssignments as $reviewAssignment) { $reviewAssignment->setReviewFormId(null); $reviewAssignmentDao->updateObject($reviewAssignment); } $reviewFormDao->deleteById($reviewFormId, $context->getId()); // Create the notification. $notificationMgr = new NotificationManager(); $user = $request->getUser(); $notificationMgr->createTrivialNotification($user->getId()); return DAO::getDataChangedEvent($reviewFormId); } return new JSONMessage(false); }
/** * Open a modal to read the reviewer's review and * download any files they may have uploaded * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function readReview($args, $request) { $templateMgr = TemplateManager::getManager($request); // Assign submission to template. $templateMgr->assign('submission', $this->getSubmission()); // Retrieve review assignment. $reviewAssignment = $this->getAuthorizedContextObject(ASSOC_TYPE_REVIEW_ASSIGNMENT); $templateMgr->assign('reviewAssignment', $reviewAssignment); if ($reviewAssignment->getReviewFormId()) { // Retrieve review form $context = $request->getContext(); $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewFormElements = $reviewFormElementDao->getByReviewFormId($reviewAssignment->getReviewFormId()); $reviewFormResponseDao = DAORegistry::getDAO('ReviewFormResponseDAO'); $reviewFormResponses = $reviewFormResponseDao->getReviewReviewFormResponseValues($reviewAssignment->getId()); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewformid = $reviewAssignment->getReviewFormId(); $reviewForm = $reviewFormDao->getById($reviewAssignment->getReviewFormId(), Application::getContextAssocType(), $context->getId()); $templateMgr->assign('reviewForm', $reviewForm); $templateMgr->assign('reviewFormElements', $reviewFormElements); $templateMgr->assign('reviewFormResponses', $reviewFormResponses); $templateMgr->assign('disabled', true); } else { // Retrieve reviewer comment. $submissionCommentDao = DAORegistry::getDAO('SubmissionCommentDAO'); $submissionComments = $submissionCommentDao->getReviewerCommentsByReviewerId($reviewAssignment->getReviewerId(), $reviewAssignment->getSubmissionId(), $reviewAssignment->getId()); $templateMgr->assign('reviewerComment', $submissionComments->next()); } // Render the response. return $templateMgr->fetchJson('controllers/grid/users/reviewer/readReview.tpl'); }
/** * Foreign key lookup for the published object dimension. * @param $assocType int * @param $assocId int * @return array Values must be foreign keys relative to the * context, pkp section, associated object (type and id), submission * and representation. */ protected function foreignKeyLookup($assocType, $assocId) { $contextId = $sectionId = $submissionId = $representationId = null; $isFile = false; $isRepresentation = false; switch ($assocType) { case ASSOC_TYPE_SUBMISSION_FILE: $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */ $submissionFile = $submissionFileDao->getLatestRevision($assocId); if ($submissionFile) { $isFile = true; $submissionId = $submissionFile->getSubmissionId(); if ($submissionFile->getAssocType() == ASSOC_TYPE_REPRESENTATION) { $representationId = $submissionFile->getAssocId(); } else { throw new Exception('Cannot load record: submission file is not associated with a representation object.'); } } else { throw new Exception('Cannot load record: invalid submission file id.'); } // Don't break but go on to retrieve the representation. // Don't break but go on to retrieve the representation. case ASSOC_TYPE_REPRESENTATION: if (!$isFile) { $representationId = $assocId; } $representationDao = Application::getRepresentationDAO(); /* @var $representationDao RepresentationDAO */ $representation = $representationDao->getById($representationId); /* @var $representation Representation */ if ($representation) { if (!$isFile) { $isRepresentation = true; } $contextId = $representation->getContextId(); $submissionId = $representation->getSubmissionId(); } else { throw new Exception('Cannot load record: invalid representation id.'); } // Don't break but go on to retrieve the submission. // Don't break but go on to retrieve the submission. case ASSOC_TYPE_SUBMISSION: if (!$isFile && !$isRepresentation) { $submissionId = $assocId; } $submissionDao = Application::getSubmissionDAO(); /* @var $submissionDao SubmissionDAO */ $submission = $submissionDao->getById($submissionId); if ($submission) { $contextId = $submission->getContextId(); $submissionId = $submission->getId(); $sectionId = $submission->getSectionId(); } else { throw new Exception('Cannot load record: invalid submission id.'); } break; case ASSOC_TYPE_SECTION: $sectionDao = Application::getSectionDAO(); $section = $sectionDao->getById($assocId); /* @var $section PKPSection */ if ($section) { $sectionId = $section->getId(); $contextId = $section->getContextId(); } else { throw new Exception('Cannot load record: invalid section id.'); } break; case Application::getContextAssocType(): $contextDao = Application::getContextDAO(); /* @var $contextDao ContextDAO */ $context = $contextDao->getById($assocId); if (!$context) { throw new Exception('Cannot load record: invalid context id.'); } $contextId = $assocId; break; } return array($contextId, $sectionId, null, null, $submissionId, $representationId); }
/** * Get data object title based on passed * assoc type and id. * @param $assocId int * @param $assocType int * @return string */ protected function getObjectTitle($assocId, $assocType) { switch ($assocType) { case Application::getContextAssocType(): $contextDao = Application::getContextDAO(); /* @var $contextDao ContextDAO */ $context = $contextDao->getById($assocId); if (!$context) { break; } return $context->getLocalizedName(); case ASSOC_TYPE_SUBMISSION: $submissionDao = Application::getSubmissionDAO(); /* @var $submissionDao SubmissionDAO */ $submission = $submissionDao->getById($assocId, null, true); if (!$submission) { break; } return $submission->getLocalizedTitle(); case ASSOC_TYPE_SECTION: $sectionDao = Application::getSectionDAO(); $section = $sectionDao->getById($assocId); if (!$section) { break; } return $section->getLocalizedTitle(); case ASSOC_TYPE_SUBMISSION_FILE: $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */ $submissionFile = $submissionFileDao->getLatestRevision($assocId); if (!$submissionFile) { break; } return $submissionFile->getFileLabel(); } return __('manager.statistics.reports.objectNotFound'); }
/** * Save announcement type. */ function execute() { $announcementTypeDao = DAORegistry::getDAO('AnnouncementTypeDAO'); if (isset($this->typeId)) { $announcementType = $announcementTypeDao->getById($this->typeId); } if (!isset($announcementType)) { $announcementType = $announcementTypeDao->newDataObject(); } $announcementType->setAssocType(Application::getContextAssocType()); $announcementType->setAssocId($this->contextId); $announcementType->setName($this->getData('name'), null); // Localized // Update or insert announcement type if ($announcementType->getId() != null) { $announcementTypeDao->updateObject($announcementType); } else { $announcementTypeDao->insertObject($announcementType); } }
/** * @see ReportPlugin::getDefaultReportTemplates() */ function getDefaultReportTemplates($metricTypes = null) { $reports = array(); $pluginMetricTypes = $this->getMetricTypes(); if (is_null($metricTypes)) { $metricTypes = $pluginMetricTypes; } if (!is_array($metricTypes)) { $metricTypes = array($metricTypes); } // Check if the plugin supports the passed metric types. $intersection = array_intersect($metricTypes, $pluginMetricTypes); if (empty($intersection)) { return $reports; } // Context index page views. $columns = array(STATISTICS_DIMENSION_ASSOC_TYPE, STATISTICS_DIMENSION_CONTEXT_ID, STATISTICS_DIMENSION_MONTH, STATISTICS_DIMENSION_COUNTRY); $filter = array(STATISTICS_DIMENSION_ASSOC_TYPE => Application::getContextAssocType()); // We allow the subclasses to define the name locale key. $reports[] = array('nameLocaleKey' => '', 'metricType' => $metricTypes, 'columns' => $columns, 'filter' => $filter, 'aggregationColumns' => $this->getAggregationColumns()); return $reports; }
/** * Save review form element. * @param $request PKPRequest * @return int Review form element ID */ function execute($request) { $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); if ($this->reviewFormElementId) { $context = $request->getContext(); $reviewFormElement = $reviewFormElementDao->getById($this->reviewFormElementId); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewForm = $reviewFormDao->getById($reviewFormElement->getReviewFormId(), Application::getContextAssocType(), $context->getId()); if (!$reviewForm) { fatalError('Invalid review form element ID!'); } } else { $reviewFormElement = $reviewFormElementDao->newDataObject(); $reviewFormElement->setReviewFormId($this->reviewFormId); $reviewFormElement->setSequence(REALLY_BIG_NUMBER); } $reviewFormElement->setQuestion($this->getData('question'), null); // Localized $reviewFormElement->setRequired($this->getData('required') ? 1 : 0); $reviewFormElement->setIncluded($this->getData('included') ? 1 : 0); $reviewFormElement->setElementType($this->getData('elementType')); if (in_array($this->getData('elementType'), ReviewFormElement::getMultipleResponsesElementTypes())) { $this->setData('possibleResponsesProcessed', $reviewFormElement->getPossibleResponses(null)); ListbuilderHandler::unpack($request, $this->getData('possibleResponses'), array($this, 'deleteEntry'), array($this, 'insertEntry'), array($this, 'updateEntry')); $reviewFormElement->setPossibleResponses($this->getData('possibleResponsesProcessed'), null); } else { $reviewFormElement->setPossibleResponses(null, null); } if ($reviewFormElement->getId()) { $reviewFormElementDao->deleteSetting($reviewFormElement->getId(), 'possibleResponses'); $reviewFormElementDao->updateObject($reviewFormElement); } else { $this->reviewFormElementId = $reviewFormElementDao->insertObject($reviewFormElement); $reviewFormElementDao->resequenceReviewFormElements($this->reviewFormId); } return $this->reviewFormElementId; }
/** * Get context main page views. * @return int */ function getViews() { $application = Application::getApplication(); return $application->getPrimaryMetricByAssoc(Application::getContextAssocType(), $this->getId()); }
/** * Get usage event details based on the passed hook. * Subclasses should extend to implement application specifics. * @param $hookName string * @param $hookArgs array * @param $request PKPRequest * @param $router PageRouter * @param $templateMgr PKPTemplateManager * @param $context Context * @return array With the following data: * DataObject the published object, boolean download success, integer used published object assoc type, * string used published object id foreign keys lookup (all parent associated objects id, * preceeded with a single letter to identify the object), string canonical url page, * string canonical url operation, array with canonical url parameters. * @see PKPUsageEventPlugin::buildUsageEvent() */ protected function getUsageEventData($hookName, $hookArgs, $request, $router, $templateMgr, $context) { $nullVar = null; $pubObject = $nullVar; $downloadSuccess = false; $canonicalUrlPage = $canonicalUrlOp = $assocType = null; $canonicalUrlParams = $idParams = array(); if ($hookName == 'TemplateManager::display') { $page = $router->getRequestedPage($request); $op = $router->getRequestedOp($request); // First check for a context index page view. if (($page == 'index' || empty($page)) && $op == 'index') { $pubObject = $templateMgr->get_template_vars('currentContext'); if (is_a($pubObject, 'Context')) { $assocType = Application::getContextAssocType(); $canonicalUrlOp = ''; $canonicalUrlPage = 'index'; $downloadSuccess = true; } } } return array($pubObject, $downloadSuccess, $assocType, $idParams, $canonicalUrlPage, $canonicalUrlOp, $canonicalUrlParams); }