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