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;
}