PKPSubmissionMetadataFormImplementation::execute PHP Method

execute() public method

Save changes to submission.
public execute ( $submission, $request ) : Submission
$submission Submission
$request PKPRequest
return Submission
    function execute($submission, $request)
    {
        $submissionDao = Application::getSubmissionDAO();
        // Update submission
        $submission->setTitle($this->_parentForm->getData('title'), null);
        // Localized
        $submission->setPrefix($this->_parentForm->getData('prefix'), null);
        // Localized
        $submission->setSubtitle($this->_parentForm->getData('subtitle'), null);
        // Localized
        $submission->setAbstract($this->_parentForm->getData('abstract'), null);
        // Localized
        $submission->setCoverage($this->_parentForm->getData('coverage'), null);
        // Localized
        $submission->setType($this->_parentForm->getData('type'), null);
        // Localized
        $submission->setRights($this->_parentForm->getData('rights'), null);
        // Localized
        $submission->setSource($this->_parentForm->getData('source'), null);
        // Localized
        $submission->setCitations($this->_parentForm->getData('citations'));
        // Update submission locale
        $newLocale = $this->_parentForm->getData('locale');
        $context = $request->getContext();
        $supportedSubmissionLocales = $context->getSetting('supportedSubmissionLocales');
        if (empty($supportedSubmissionLocales)) {
            $supportedSubmissionLocales = array($context->getPrimaryLocale());
        }
        if (in_array($newLocale, $supportedSubmissionLocales)) {
            $submission->setLocale($newLocale);
        }
        // Save the submission
        $submissionDao->updateObject($submission);
        // get the supported locale keys
        $locales = array_keys($this->_parentForm->supportedLocales);
        // persist the metadata/keyword fields.
        $submissionKeywordDao = DAORegistry::getDAO('SubmissionKeywordDAO');
        $submissionSubjectDao = DAORegistry::getDAO('SubmissionSubjectDAO');
        $submissionDisciplineDao = DAORegistry::getDAO('SubmissionDisciplineDAO');
        $submissionAgencyDao = DAORegistry::getDAO('SubmissionAgencyDAO');
        $submissionLanguageDao = DAORegistry::getDAO('SubmissionLanguageDAO');
        $keywords = array();
        $agencies = array();
        $disciplines = array();
        $languages = array();
        $subjects = array();
        $tagitKeywords = $this->_parentForm->getData('keywords');
        if (is_array($tagitKeywords)) {
            foreach ($locales as $locale) {
                $keywords[$locale] = array_key_exists($locale . '-keywords', $tagitKeywords) ? $tagitKeywords[$locale . '-keywords'] : array();
                $agencies[$locale] = array_key_exists($locale . '-agencies', $tagitKeywords) ? $tagitKeywords[$locale . '-agencies'] : array();
                $disciplines[$locale] = array_key_exists($locale . '-disciplines', $tagitKeywords) ? $tagitKeywords[$locale . '-disciplines'] : array();
                $languages[$locale] = array_key_exists($locale . '-languages', $tagitKeywords) ? $tagitKeywords[$locale . '-languages'] : array();
                $subjects[$locale] = array_key_exists($locale . '-subjects', $tagitKeywords) ? $tagitKeywords[$locale . '-subjects'] : array();
            }
        }
        // persist the controlled vocabs
        $submissionKeywordDao->insertKeywords($keywords, $submission->getId());
        $submissionAgencyDao->insertAgencies($agencies, $submission->getId());
        $submissionDisciplineDao->insertDisciplines($disciplines, $submission->getId());
        $submissionLanguageDao->insertLanguages($languages, $submission->getId());
        $submissionSubjectDao->insertSubjects($subjects, $submission->getId());
        // Resequence the authors (this ensures a primary contact).
        $authorDao = DAORegistry::getDAO('AuthorDAO');
        $authorDao->resequenceAuthors($submission->getId());
        // Only log modifications on completed submissions
        if ($submission->getSubmissionProgress() == 0) {
            // Log the metadata modification event.
            import('lib.pkp.classes.log.SubmissionLog');
            import('classes.log.SubmissionEventLogEntry');
            SubmissionLog::logEvent($request, $submission, SUBMISSION_LOG_METADATA_UPDATE, 'submission.event.general.metadataUpdated');
        }
    }

Usage Example

 /**
  * Save changes to submission.
  * @param $submission Submission
  * @param $request PKPRequest
  * @return Submission
  */
 function execute($submission, $request)
 {
     parent::execute($submission, $request);
     // Log the modification event.
     import('lib.pkp.classes.log.SubmissionLog');
     import('classes.log.SubmissionEventLogEntry');
     SubmissionLog::logEvent($request, $submission, SUBMISSION_LOG_METADATA_UPDATE, 'submission.event.general.metadataUpdated');
 }