function getSubmissionFile($request)
{
// Try to get the submission file info.
$fileIdAndRevision = $this->_fileIdAndRevision;
if (!is_null($fileIdAndRevision)) {
$fileData = explode('-', $fileIdAndRevision);
$fileId = (int) $fileData[0];
$revision = isset($fileData[1]) ? (int) $fileData[1] : 0;
// -0 for most recent revision
$cacheId = $fileIdAndRevision;
} else {
// Get the identifying info from the request
$fileId = (int) $request->getUserVar('fileId');
$revision = (int) $request->getUserVar('revision');
assert($fileId > 0);
$cacheId = "{$fileId}-{$revision}";
// -0 for most recent revision
}
// Fetch the object, caching if possible
$cache =& $this->_getCache();
if (!isset($cache[$cacheId])) {
// Cache miss
$submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
if ($revision) {
$cache[$cacheId] = $submissionFileDao->getRevision($fileId, $revision);
} else {
$cache[$cacheId] = $submissionFileDao->getLatestRevision($fileId);
}
}
return $cache[$cacheId];
}