function contentTypeToPath($contentType) { switch ($contentType) { case ISSUE_FILE_PUBLIC: return 'public'; } }
/** * 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; }