function handleChildElement($n, $submission)
{
$setterMappings = $this->_getLocalizedSubmissionSetterMappings();
$controlledVocabulariesMappings = $this->_getControlledVocabulariesMappings();
if (isset($setterMappings[$n->tagName])) {
// If applicable, call a setter for localized content
$setterFunction = $setterMappings[$n->tagName];
list($locale, $value) = $this->parseLocalizedContent($n);
if (empty($locale)) {
$locale = $submission->getLocale();
}
$submission->{$setterFunction}($value, $locale);
} elseif (isset($controlledVocabulariesMappings[$n->tagName])) {
$controlledVocabulariesDao = $submissionKeywordDao = DAORegistry::getDAO($controlledVocabulariesMappings[$n->tagName][0]);
$insertFunction = $controlledVocabulariesMappings[$n->tagName][1];
list($locale, $value) = $this->parseLocalizedContent($n);
if (empty($locale)) {
$locale = $submission->getLocale();
}
$controlledVocabulary = array();
for ($nc = $n->firstChild; $nc !== null; $nc = $nc->nextSibling) {
if (is_a($nc, 'DOMElement')) {
$controlledVocabulary[] = $nc->textContent;
}
}
$controlledVocabulariesValues = array();
$controlledVocabulariesValues[$locale] = $controlledVocabulary;
$controlledVocabulariesDao->{$insertFunction}($controlledVocabulariesValues, $submission->getId(), false);
} else {
switch ($n->tagName) {
// Otherwise, delegate to specific parsing code
case 'id':
$this->parseIdentifier($n, $submission);
break;
case 'authors':
$this->parseAuthors($n, $submission);
break;
case 'submission_file':
$this->parseSubmissionFile($n, $submission);
break;
case 'comments_to_editor':
$submission->setCommentsToEditor($n->textContent);
break;
default:
$deployment->addError(ASSOC_TYPE_SUBMISSION, $submission->getId(), __('plugins.importexport.common.error.unknownElement', array('param' => $n->tagName)));
}
}
}