SubmissionFileNativeXmlFilter::createSubmissionFileNode PHP Method

createSubmissionFileNode() public method

Create and return a submissionFile node.
public createSubmissionFileNode ( $doc, $submissionFile ) : DOMElement
$doc DOMDocument
$submissionFile SubmissionFile
return DOMElement
    function createSubmissionFileNode($doc, $submissionFile)
    {
        $deployment = $this->getDeployment();
        $context = $deployment->getContext();
        // Create the submission_file node and set metadata
        $submissionFileNode = $doc->createElementNS($deployment->getNamespace(), $this->getSubmissionFileElementName());
        $stageToName = array_flip($deployment->getStageNameStageIdMapping());
        $submissionFileNode->setAttribute('stage', $stageToName[$submissionFile->getFileStage()]);
        $submissionFileNode->setAttribute('id', $submissionFile->getFileId());
        // Create the revision node and set metadata
        $revisionNode = $doc->createElementNS($deployment->getNamespace(), 'revision');
        $revisionNode->setAttribute('number', $submissionFile->getRevision());
        if ($sourceFileId = $submissionFile->getSourceFileId()) {
            $revisionNode->setAttribute('source', $sourceFileId . '-' . $submissionFile->getSourceRevision());
        }
        $genreDao = DAORegistry::getDAO('GenreDAO');
        $genre = $genreDao->getById($submissionFile->getGenreId());
        if ($genre) {
            $revisionNode->setAttribute('genre', $genre->getName($context->getPrimaryLocale()));
        }
        $revisionNode->setAttribute('filename', $submissionFile->getOriginalFileName());
        $revisionNode->setAttribute('viewable', $submissionFile->getViewable() ? 'true' : 'false');
        $revisionNode->setAttribute('date_uploaded', strftime('%F', strtotime($submissionFile->getDateUploaded())));
        $revisionNode->setAttribute('date_modified', strftime('%F', strtotime($submissionFile->getDateModified())));
        if ($submissionFile->getDirectSalesPrice() !== null) {
            $revisionNode->setAttribute('direct_sales_price', $submissionFile->getDirectSalesPrice());
        }
        $revisionNode->setAttribute('filesize', $submissionFile->getFileSize());
        $revisionNode->setAttribute('filetype', $submissionFile->getFileType());
        $userGroupDao = DAORegistry::getDAO('UserGroupDAO');
        $userGroup = $userGroupDao->getById($submissionFile->getUserGroupId());
        assert(isset($userGroup));
        $revisionNode->setAttribute('user_group_ref', $userGroup->getName($context->getPrimaryLocale()));
        $userDao = DAORegistry::getDAO('UserDAO');
        $uploaderUser = $userDao->getById($submissionFile->getUploaderUserId());
        assert(isset($uploaderUser));
        $revisionNode->setAttribute('uploader', $uploaderUser->getUsername());
        $this->addIdentifiers($doc, $revisionNode, $submissionFile);
        $this->createLocalizedNodes($doc, $revisionNode, 'name', $submissionFile->getName(null));
        $submissionFileNode->appendChild($revisionNode);
        // Embed the file contents
        $embedNode = $doc->createElementNS($deployment->getNamespace(), 'embed', base64_encode(file_get_contents($submissionFile->getFilePath())));
        $embedNode->setAttribute('encoding', 'base64');
        $revisionNode->appendChild($embedNode);
        return $submissionFileNode;
    }

Usage Example

 /**
  * Create and return a submissionFile node.
  * @param $doc DOMDocument
  * @param $submissionFile SubmissionFile
  * @return DOMElement
  */
 function createSubmissionFileNode($doc, $submissionFile)
 {
     $deployment = $this->getDeployment();
     $submissionFileNode = parent::createSubmissionFileNode($doc, $submissionFile);
     $this->createLocalizedNodes($doc, $submissionFileNode, 'creator', $submissionFile->getCreator(null));
     $this->createLocalizedNodes($doc, $submissionFileNode, 'subject', $submissionFile->getSubject(null));
     $this->createLocalizedNodes($doc, $submissionFileNode, 'description', $submissionFile->getDescription(null));
     $this->createLocalizedNodes($doc, $submissionFileNode, 'publisher', $submissionFile->getPublisher(null));
     $this->createLocalizedNodes($doc, $submissionFileNode, 'sponsor', $submissionFile->getSponsor(null));
     if ($dateCreated = $submissionFile->getDateCreated()) {
         $submissionFileNode->appendChild($doc->createElementNS($deployment->getNamespace(), 'date_created', $dateCreated));
     }
     $this->createLocalizedNodes($doc, $submissionFileNode, 'source', $submissionFile->getSource(null));
     if ($language = $submissionFile->getLanguage()) {
         $submissionFileNode->appendChild($doc->createElementNS($deployment->getNamespace(), 'language', $language));
     }
     return $submissionFileNode;
 }
All Usage Examples Of SubmissionFileNativeXmlFilter::createSubmissionFileNode