function handleArticleCoverNode(&$journal, &$coverNode, &$article, &$errors, $isCommandLine)
{
$errors = array();
$hasErrors = false;
$journalSupportedLocales = array_keys($journal->getSupportedLocaleNames());
// => journal locales must be set up before
$journalPrimaryLocale = $journal->getPrimaryLocale();
$locale = $coverNode->getAttribute('locale');
if ($locale == '') {
$locale = $journalPrimaryLocale;
} elseif (!in_array($locale, $journalSupportedLocales)) {
$errors[] = array('plugins.importexport.native.import.error.coverLocaleUnsupported', array('issueTitle' => $issue->getIssueIdentification(), 'locale' => $locale));
return false;
}
$article->setShowCoverPage(1, $locale);
if ($node = $coverNode->getChildByName('altText')) {
$article->setCoverPageAltText($node->getValue(), $locale);
}
if ($node = $coverNode->getChildByName('image')) {
import('classes.file.PublicFileManager');
$publicFileManager = new PublicFileManager();
$newName = 'cover_article_' . $article->getId() . "_{$locale}" . '.';
if ($href = $node->getChildByName('href')) {
$url = $href->getAttribute('src');
if ($isCommandLine || NativeImportDom::isAllowedMethod($url)) {
if ($isCommandLine && NativeImportDom::isRelativePath($url)) {
// The command-line tool does a chdir; we need to prepend the original pathname to relative paths so we're not looking in the wrong place.
$url = PWD . '/' . $url;
}
$originalName = basename($url);
$newName .= $publicFileManager->getExtension($originalName);
if (!$publicFileManager->copyJournalFile($journal->getId(), $url, $newName)) {
$errors[] = array('plugins.importexport.native.import.error.couldNotCopy', array('url' => $url));
$hasErrors = true;
}
$article->setFileName($newName, $locale);
$article->setOriginalFileName($publicFileManager->truncateFileName($originalName, 127), $locale);
}
}
if ($embed = $node->getChildByName('embed')) {
if (($type = $embed->getAttribute('encoding')) !== 'base64') {
$errors[] = array('plugins.importexport.native.import.error.unknownEncoding', array('type' => $type));
$hasErrors = true;
} else {
$originalName = $embed->getAttribute('filename');
$newName .= $publicFileManager->getExtension($originalName);
$article->setFileName($newName, $locale);
$article->setOriginalFileName($publicFileManager->truncateFileName($originalName, 127), $locale);
if ($publicFileManager->writeJournalFile($journal->getId(), $newName, base64_decode($embed->getValue())) === false) {
$errors[] = array('plugins.importexport.native.import.error.couldNotWriteFile', array('originalName' => $originalName));
$hasErrors = true;
}
}
}
// Store the image dimensions.
list($width, $height) = getimagesize($publicFileManager->getJournalFilesPath($journal->getId()) . '/' . $newName);
$article->setWidth($width, $locale);
$article->setHeight($height, $locale);
}
if ($hasErrors) {
return false;
}
return true;
}