contentTypeToPath() public method

Return directory path based on issue content type (used for naming files).
public contentTypeToPath ( $contentType ) : string
$contentType int
return string
Exemplo n.º 1
0
 /**
  * Handle a submission element
  * @param $node DOMElement
  * @return IssueGalley
  */
 function handleElement($node)
 {
     $deployment = $this->getDeployment();
     $context = $deployment->getContext();
     $issue = $deployment->getIssue();
     assert(is_a($issue, 'Issue'));
     // Create the data object
     $issueGalleyDao = DAORegistry::getDAO('IssueGalleyDAO');
     $issueGalley = $issueGalleyDao->newDataObject();
     $issueGalley->setIssueId($issue->getId());
     $locale = $node->getAttribute('locale');
     if (empty($locale)) {
         $locale = $context->getPrimaryLocale();
     }
     $issueGalley->setLocale($locale);
     $issueGalley->setSequence($issueGalleyDao->getNextGalleySequence($issue->getId()));
     // Handle metadata in subelements.
     for ($n = $node->firstChild; $n !== null; $n = $n->nextSibling) {
         if (is_a($n, 'DOMElement')) {
             switch ($n->tagName) {
                 case 'label':
                     $issueGalley->setLabel($n->textContent);
                     break;
                 case 'issue_file':
                     $issueFileDao = DAORegistry::getDAO('IssueFileDAO');
                     $issueFile = $issueFileDao->newDataObject();
                     $issueFile->setIssueId($issue->getId());
                     for ($o = $n->firstChild; $o !== null; $o = $o->nextSibling) {
                         if (is_a($o, 'DOMElement')) {
                             switch ($o->tagName) {
                                 case 'file_name':
                                     $issueFile->setServerFileName($o->textContent);
                                     break;
                                 case 'file_type':
                                     $issueFile->setFileType($o->textContent);
                                     break;
                                 case 'file_size':
                                     $issueFile->setFileSize($o->textContent);
                                     break;
                                 case 'content_type':
                                     $issueFile->setContentType((int) $o->textContent);
                                     break;
                                 case 'original_file_name':
                                     $issueFile->setOriginalFileName($o->textContent);
                                     break;
                                 case 'date_uploaded':
                                     $issueFile->setDateUploaded($o->textContent);
                                     break;
                                 case 'date_modified':
                                     $issueFile->setDateModified($o->textContent);
                                     break;
                                 case 'embed':
                                     import('classes.file.IssueFileManager');
                                     $issueFileManager = new IssueFileManager($issue->getId());
                                     $filePath = $issueFileManager->getFilesDir() . $issueFileManager->contentTypeToPath($issueFile->getContentType()) . '/' . $issueFile->getServerFileName();
                                     $issueFileManager->writeFile($filePath, base64_decode($o->textContent));
                                     break;
                             }
                         }
                     }
                     $issueFileId = $issueFileDao->insertObject($issueFile);
                     $issueGalley->setFileId($issueFileId);
                     break;
             }
         }
     }
     $issueGalleyDao->insertObject($issueGalley);
     return $issueGalley;
 }
 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();
     }
 }
 /**
  * Add the issue file to its DOM element.
  * @param $doc DOMDocument
  * @param $issueGalleyNode DOMElement
  * @param $issueGalley IssueGalley
  */
 function addFile($doc, $issueGalleyNode, $issueGalley)
 {
     $issueFileDao = DAORegistry::getDAO('IssueFileDAO');
     $issueFile = $issueFileDao->getById($issueGalley->getFileId());
     if ($issueFile) {
         $deployment = $this->getDeployment();
         $issueFileNode = $doc->createElementNS($deployment->getNamespace(), 'issue_file');
         $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'file_name', $issueFile->getServerFileName()));
         $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'file_type', $issueFile->getContentType()));
         $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'file_size', $issueFile->getFileSize()));
         $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'content_type', $issueFile->getFileType()));
         $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'original_file_name', $issueFile->getOriginalFileName()));
         $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'date_uploaded', strftime('%F', strtotime($issueFile->getDateUploaded()))));
         $issueFileNode->appendChild($node = $doc->createElementNS($deployment->getNamespace(), 'date_modified', strftime('%F', strtotime($issueFile->getDateModified()))));
         import('classes.file.IssueFileManager');
         $issueFileManager = new IssueFileManager($issueGalley->getIssueId());
         $filePath = $issueFileManager->getFilesDir() . '/' . $issueFileManager->contentTypeToPath($issueFile->getContentType()) . '/' . $issueFile->getServerFileName();
         $embedNode = $doc->createElementNS($deployment->getNamespace(), 'embed', base64_encode(file_get_contents($filePath)));
         $embedNode->setAttribute('encoding', 'base64');
         $issueFileNode->appendChild($embedNode);
         $issueGalleyNode->appendChild($issueFileNode);
     }
 }