Merge branch 'MDL-65019-master' of git://github.com/jleyva/moodle

This commit is contained in:
Adrian Greeve 2019-04-05 09:14:23 +08:00
commit abd898606d
2 changed files with 36 additions and 3 deletions

View File

@ -326,6 +326,11 @@ class core_course_external extends external_api {
'mimetypes' => array(),
);
foreach ($contents as $content) {
// Check repository file (only main file).
if (!isset($module['contentsinfo']['repositorytype'])) {
$module['contentsinfo']['repositorytype'] =
isset($content['repositorytype']) ? $content['repositorytype'] : '';
}
if (isset($content['filesize'])) {
$module['contentsinfo']['filessize'] += $content['filesize'];
}
@ -501,6 +506,8 @@ class core_course_external extends external_api {
new external_value(PARAM_RAW, 'File mime type.'),
'Files mime types.'
),
'repositorytype' => new external_value(PARAM_PLUGIN, 'The repository type for
the main file.', VALUE_OPTIONAL),
), 'Contents summary information.', VALUE_OPTIONAL
),
)

View File

@ -1286,15 +1286,40 @@ class core_course_externallib_testcase extends externallib_advanced_testcase {
$record->files = file_get_unused_draft_itemid();
$usercontext = context_user::instance($USER->id);
$extensions = array('txt', 'png', 'pdf');
$fs = get_file_storage();
foreach ($extensions as $key => $extension) {
// Add actual file there.
$filerecord = array('component' => 'user', 'filearea' => 'draft',
'contextid' => $usercontext->id, 'itemid' => $record->files,
'filename' => 'resource' . $key . '.' . $extension, 'filepath' => '/');
$fs = get_file_storage();
$fs->create_file_from_string($filerecord, 'Test resource ' . $key . ' file');
}
// Create file reference.
$repos = repository::get_instances(array('type' => 'user'));
$userrepository = reset($repos);
// Create a user private file.
$userfilerecord = new stdClass;
$userfilerecord->contextid = $usercontext->id;
$userfilerecord->component = 'user';
$userfilerecord->filearea = 'private';
$userfilerecord->itemid = 0;
$userfilerecord->filepath = '/';
$userfilerecord->filename = 'userfile.txt';
$userfilerecord->source = 'test';
$userfile = $fs->create_file_from_string($userfilerecord, 'User file content');
$userfileref = $fs->pack_reference($userfilerecord);
// Clone latest "normal" file.
$filerefrecord = clone (object) $filerecord;
$filerefrecord->filename = 'testref.txt';
$fileref = $fs->create_file_from_reference($filerefrecord, $userrepository->id, $userfileref);
// Set main file pointing to the file reference.
file_set_sortorder($usercontext->id, 'user', 'draft', $record->files, $filerefrecord->filepath,
$filerefrecord->filename, 1);
// Once the reference has been created, create the file resource.
$resource2 = self::getDataGenerator()->create_module('resource', $record);
$result = core_course_external::get_course_contents($course->id);
@ -1307,10 +1332,11 @@ class core_course_externallib_testcase extends externallib_advanced_testcase {
$this->assertEquals($module['contents'][0]['filesize'], $module['contentsinfo']['filessize']);
$this->assertEquals(array('text/plain'), $module['contentsinfo']['mimetypes']);
} else {
$this->assertEquals(count($extensions), $module['contentsinfo']['filescount']);
$this->assertEquals(count($extensions) + 1, $module['contentsinfo']['filescount']);
$filessize = $module['contents'][0]['filesize'] + $module['contents'][1]['filesize'] +
$module['contents'][2]['filesize'];
$module['contents'][2]['filesize'] + $module['contents'][3]['filesize'];
$this->assertEquals($filessize, $module['contentsinfo']['filessize']);
$this->assertEquals('user', $module['contentsinfo']['repositorytype']);
$this->assertGreaterThanOrEqual($timenow, $module['contentsinfo']['lastmodified']);
$this->assertEquals(array('text/plain', 'image/png', 'application/pdf'), $module['contentsinfo']['mimetypes']);
}