function importIssues()
{
assert($this->xml->name == 'issues');
$issueDAO =& DAORegistry::getDAO('IssueDAO');
$issueFileDAO =& DAORegistry::getDAO('IssueFileDAO');
$issueGalleyDAO =& DAORegistry::getDAO('IssueGalleyDAO');
$sectionDAO =& DAORegistry::getDAO('SectionDAO');
$issues = $issueDAO->getIssues($this->journal->getId());
$publicFileManager =& new PublicFileManager();
$this->nextElement();
while ($this->xml->name == 'issue') {
$issueXML = $this->getCurrentElementAsDom();
$issue = new Issue();
$issue->setJournalId($this->journal->getId());
$issue->setVolume((int) $issueXML->volume);
$issue->setNumber((string) $issueXML->number);
$issue->setYear((int) $issueXML->year);
$issue->setPublished((int) $issueXML->published);
$issue->setCurrent((int) $issueXML->current);
$issue->setDatePublished((string) $issueXML->datePublished);
$issue->setDateNotified((string) $issueXML->dateNotified);
$issue->setLastModified((string) $issueXML->lastModified);
$issue->setAccessStatus((int) $issueXML->accessStatus);
$issue->setOpenAccessDate((string) $issueXML->openAccessDate);
$issue->setShowVolume((int) $issueXML->showVolume);
$issue->setShowNumber((int) $issueXML->showNumber);
$issue->setShowYear((int) $issueXML->showYear);
$issue->setShowTitle((int) $issueXML->showTitle);
$issue->setStyleFileName((string) $issueXML->styleFileName);
$issue->setOriginalStyleFileName((string) $issueXML->originalStyleFileName);
$oldIssueId = (int) $issueXML->oldId;
$issueDAO->insertIssue($issue);
//$issueDAO->insertCustomIssueOrder($this->journal->getId(), $issue->getId(), (int)$issueXML->customOrder);
$this->idTranslationTable->register(INTERNAL_TRANSFER_OBJECT_ISSUE, $oldIssueId, $issue->getId());
$this->restoreDataObjectSettings($issueDAO, $issueXML->settings, 'issue_settings', 'issue_id', $issue->getId());
$issue =& $issueDAO->getIssueById($issue->getId());
// Reload issue to get restored settings
$covers = $issue->getFileName(null);
if ($covers) {
foreach ($covers as $locale => $oldCoverFileName) {
$sourceFile = $this->publicFolderPath . '/' . $oldCoverFileName;
$extension = $publicFileManager->getExtension($oldCoverFileName);
$destFile = 'cover_issue_' . $issue->getId() . "_{$locale}.{$extension}";
$publicFileManager->copyJournalFile($this->journal->getId(), $sourceFile, $destFile);
unlink($sourceFile);
$issue->setFileName($destFile, $locale);
$issueDAO->updateIssue($issue);
}
}
if ($issue->getStyleFileName()) {
$oldStyleFileName = $issue->getStyleFileName();
$sourceFile = $this->publicFolderPath . '/' . $oldStyleFileName;
$destFile = 'style_' . $issue->getId() . '.css';
$publicFileManager->copyJournalFile($this->journal->getId(), $sourceFile, $destFile);
unlink($sourceFile);
$issue->setStyleFileName($destFile);
$issueDAO->updateIssue($issue);
}
$issueFileManager = new IssueFileManager($issue->getId());
foreach ($issueXML->issueFile as $issueFileXML) {
$issueFile = new IssueFile();
$issueFile->setIssueId($issue->getId());
$issueFile->setFileName((string) $issueFileXML->fileName);
$issueFile->setFileType((string) $issueFileXML->fileType);
$issueFile->setFileSize((int) $issueFileXML->fileSize);
$issueFile->setContentType((string) $issueFileXML->contentType);
$issueFile->setOriginalFileName((string) $issueFileXML->originalFileName);
$issueFile->setDateUploaded((string) $issueFileXML->dateUploaded);
$issueFile->setDateModified((string) $issueFileXML->dateModified);
$issueFileDAO->insertIssueFile($issueFile);
$oldFileName = $issueFile->getFileName();
$extension = $issueFileManager->parseFileExtension($oldFileName);
$contentPath = $issueFileManager->contentTypeToPath($issueFile->getContentType());
$contentAbbrev = $issueFileManager->contentTypeToAbbrev($issueFile->getContentType());
$fileInTransferPackage = $this->journalFolderPath . "/issues/{$oldIssueId}/{$contentPath}/{$oldFileName}";
$newFileName = $issue->getId() . '-' . $issueFile->getId() . '-' . $contentAbbrev . '.' . $extension;
$newFilePath = "{$contentPath}/{$newFileName}";
$issueFileManager->copyFile($fileInTransferPackage, $issueFileManager->getFilesDir() . $newFilePath);
unlink($fileInTransferPackage);
$issueFile->setFileName($newFileName);
$issueFileDAO->updateIssueFile($issueFile);
$this->idTranslationTable->register(INTERNAL_TRANSFER_OBJECT_ISSUE_FILE, (int) $issueFileXML->oldId, $issueFile->getId());
}
foreach ($issueXML->issueGalley as $issueGalleyXML) {
$issueGalley = new issueGalley();
$issueGalley->setIssueId($issue->getId());
$issueGalley->setLocale((string) $issueGalleyXML->locale);
$issueGalley->setFileId($this->idTranslationTable->resolve(INTERNAL_TRANSFER_OBJECT_ISSUE_FILE, (int) $issueGalleyXML->fileId));
$issueGalley->setLabel((string) $issueGalleyXML->label);
$issueGalley->setSequence((int) $issueGalleyXML->sequence);
$issueGalleyDAO->insertGalley($issueGalley);
$this->idTranslationTable->register(INTERNAL_TRANSFER_OBJECT_ISSUE_GALLEY, (int) $issueGalleyXML->oldId, $issueGalley->getId());
$this->restoreDataObjectSettings($issueGalleyDAO, $issueGalleyXML->settings, 'issue_galley_settings', 'galley_id', $issueGalley->getId());
}
if (isset($issueXML->customSectionOrder)) {
foreach ($issueXML->customSectionOrder->sectionOrder as $sectionOrderXML) {
try {
$sectionId = $this->idTranslationTable->resolve(INTERNAL_TRANSFER_OBJECT_SECTION, (int) $sectionOrderXML['sectionId']);
$seq = (int) $sectionOrderXML['seq'];
$sectionDAO->insertCustomSectionOrder($issue->getId(), $sectionId, $seq);
} catch (Exception $e) {
}
}
}
$this->nextElement();
}
}