Merge branch 'wip-MDL-30709-master' of git://github.com/marinaglancy/moodle

This commit is contained in:
Sam Hemelryk 2012-02-14 17:14:05 +13:00
commit d88f6dafdc
2 changed files with 52 additions and 9 deletions

View File

@ -3940,6 +3940,45 @@ function assignment_get_file_areas($course, $cm, $context) {
return $areas;
}
/**
* File browsing support for assignment module.
*
* @param object $browser
* @param object $areas
* @param object $course
* @param object $cm
* @param object $context
* @param string $filearea
* @param int $itemid
* @param string $filepath
* @param string $filename
* @return object file_info instance or null if not found
*/
function assignment_get_file_info($browser, $areas, $course, $cm, $context, $filearea, $itemid, $filepath, $filename) {
global $CFG, $DB, $USER;
if ($context->contextlevel != CONTEXT_MODULE || $filearea != 'submission') {
return null;
}
if (!$submission = $DB->get_record('assignment_submissions', array('id' => $itemid))) {
return null;
}
if (!(($submission->userid == $USER->id && has_capability('mod/assignment:view', $context))
|| has_capability('mod/assignment:grade', $context))) {
// no permission to view this submission
return null;
}
$fs = get_file_storage();
$filepath = is_null($filepath) ? '/' : $filepath;
$filename = is_null($filename) ? '.' : $filename;
if (!($storedfile = $fs->get_file($context->id, 'mod_assignment', $filearea, $itemid, $filepath, $filename))) {
return null;
}
$urlbase = $CFG->wwwroot.'/pluginfile.php';
return new file_info_stored($browser, $context, $storedfile, $urlbase, $filearea, $itemid, true, true, false);
}
/**
* Return a list of page types
* @param string $pagetype current page type

View File

@ -97,7 +97,7 @@ class repository_recent extends repository {
* @return mixed
*/
public function get_listing($encodedpath = '', $page = '') {
global $CFG, $USER, $OUTPUT;
global $OUTPUT;
$ret = array();
$ret['dynload'] = true;
$ret['nosearch'] = true;
@ -108,14 +108,18 @@ class repository_recent extends repository {
try {
foreach ($files as $file) {
$params = base64_encode(serialize($file));
$node = array(
'title' => $file['filename'],
'size' => 0,
'date' => '',
'source'=> $params,
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($file['filename'], 32))->out(false),
);
$list[] = $node;
// Check that file exists and accessible
$filesize = $this->get_file_size($params);
if (!empty($filesize)) {
$node = array(
'title' => $file['filename'],
'size' => $filesize,
'date' => '',
'source'=> $params,
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($file['filename'], 32))->out(false),
);
$list[] = $node;
}
}
} catch (Exception $e) {
throw new repository_exception('emptyfilelist', 'repository_recent');