Merge branch 'wip-MDL-41578-m25' of git://github.com/marinaglancy/moodle into MOODLE_25_STABLE
This commit is contained in:
@@ -2137,12 +2137,11 @@ class course_in_list implements IteratorAggregate {
|
||||
public function has_course_overviewfiles() {
|
||||
global $CFG;
|
||||
if (empty($CFG->courseoverviewfileslimit)) {
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
require_once($CFG->libdir. '/filestorage/file_storage.php');
|
||||
$fs = get_file_storage();
|
||||
$context = context_course::instance($this->id);
|
||||
return $fs->is_area_empty($context->id, 'course', 'overviewfiles');
|
||||
return !$fs->is_area_empty($context->id, 'course', 'overviewfiles');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -532,4 +532,116 @@ class coursecatlib_testcase extends advanced_testcase {
|
||||
|
||||
$CFG->coursecontact = $oldcoursecontact;
|
||||
}
|
||||
}
|
||||
|
||||
public function test_overview_files() {
|
||||
global $CFG;
|
||||
$this->setAdminUser();
|
||||
$cat1 = coursecat::create(array('name' => 'Cat1'));
|
||||
|
||||
// Create course c1 with one image file.
|
||||
$dratid1 = $this->fill_draft_area(array('filename.jpg' => 'Test file contents1'));
|
||||
$c1 = $this->getDataGenerator()->create_course(array('category' => $cat1->id,
|
||||
'fullname' => 'Test 1', 'overviewfiles_filemanager' => $dratid1));
|
||||
// Create course c2 with two image files (only one file will be added because of settings).
|
||||
$dratid2 = $this->fill_draft_area(array('filename21.jpg' => 'Test file contents21', 'filename22.jpg' => 'Test file contents22'));
|
||||
$c2 = $this->getDataGenerator()->create_course(array('category' => $cat1->id,
|
||||
'fullname' => 'Test 2', 'overviewfiles_filemanager' => $dratid2));
|
||||
// Create course c3 without files.
|
||||
$c3 = $this->getDataGenerator()->create_course(array('category' => $cat1->id, 'fullname' => 'Test 3'));
|
||||
|
||||
// Change the settings to allow multiple files of any types.
|
||||
$CFG->courseoverviewfileslimit = 3;
|
||||
$CFG->courseoverviewfilesext = '*';
|
||||
// Create course c5 with two image files.
|
||||
$dratid4 = $this->fill_draft_area(array('filename41.jpg' => 'Test file contents41', 'filename42.jpg' => 'Test file contents42'));
|
||||
$c4 = $this->getDataGenerator()->create_course(array('category' => $cat1->id,
|
||||
'fullname' => 'Test 4', 'overviewfiles_filemanager' => $dratid4));
|
||||
// Create course c6 with non-image file.
|
||||
$dratid5 = $this->fill_draft_area(array('filename51.zip' => 'Test file contents51'));
|
||||
$c5 = $this->getDataGenerator()->create_course(array('category' => $cat1->id,
|
||||
'fullname' => 'Test 5', 'overviewfiles_filemanager' => $dratid5));
|
||||
|
||||
// Reset default settings.
|
||||
$CFG->courseoverviewfileslimit = 1;
|
||||
$CFG->courseoverviewfilesext = '.jpg,.gif,.png';
|
||||
|
||||
$courses = $cat1->get_courses();
|
||||
$this->assertTrue($courses[$c1->id]->has_course_overviewfiles());
|
||||
$this->assertTrue($courses[$c2->id]->has_course_overviewfiles());
|
||||
$this->assertFalse($courses[$c3->id]->has_course_overviewfiles());
|
||||
$this->assertTrue($courses[$c4->id]->has_course_overviewfiles());
|
||||
$this->assertTrue($courses[$c5->id]->has_course_overviewfiles()); // Does not validate the filetypes.
|
||||
|
||||
$this->assertEquals(1, count($courses[$c1->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(1, count($courses[$c2->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(0, count($courses[$c3->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(1, count($courses[$c4->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(0, count($courses[$c5->id]->get_course_overviewfiles())); // Validate the filetypes.
|
||||
|
||||
// Overview files are not allowed, all functions return empty values.
|
||||
$CFG->courseoverviewfileslimit = 0;
|
||||
|
||||
$this->assertFalse($courses[$c1->id]->has_course_overviewfiles());
|
||||
$this->assertFalse($courses[$c2->id]->has_course_overviewfiles());
|
||||
$this->assertFalse($courses[$c3->id]->has_course_overviewfiles());
|
||||
$this->assertFalse($courses[$c4->id]->has_course_overviewfiles());
|
||||
$this->assertFalse($courses[$c5->id]->has_course_overviewfiles());
|
||||
|
||||
$this->assertEquals(0, count($courses[$c1->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(0, count($courses[$c2->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(0, count($courses[$c3->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(0, count($courses[$c4->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(0, count($courses[$c5->id]->get_course_overviewfiles()));
|
||||
|
||||
// Multiple overview files are allowed but still limited to images.
|
||||
$CFG->courseoverviewfileslimit = 3;
|
||||
|
||||
$this->assertTrue($courses[$c1->id]->has_course_overviewfiles());
|
||||
$this->assertTrue($courses[$c2->id]->has_course_overviewfiles());
|
||||
$this->assertFalse($courses[$c3->id]->has_course_overviewfiles());
|
||||
$this->assertTrue($courses[$c4->id]->has_course_overviewfiles());
|
||||
$this->assertTrue($courses[$c5->id]->has_course_overviewfiles()); // Still does not validate the filetypes.
|
||||
|
||||
$this->assertEquals(1, count($courses[$c1->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(1, count($courses[$c2->id]->get_course_overviewfiles())); // Only 1 file was actually added.
|
||||
$this->assertEquals(0, count($courses[$c3->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(2, count($courses[$c4->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(0, count($courses[$c5->id]->get_course_overviewfiles()));
|
||||
|
||||
// Multiple overview files of any type are allowed.
|
||||
$CFG->courseoverviewfilesext = '*';
|
||||
|
||||
$this->assertTrue($courses[$c1->id]->has_course_overviewfiles());
|
||||
$this->assertTrue($courses[$c2->id]->has_course_overviewfiles());
|
||||
$this->assertFalse($courses[$c3->id]->has_course_overviewfiles());
|
||||
$this->assertTrue($courses[$c4->id]->has_course_overviewfiles());
|
||||
$this->assertTrue($courses[$c5->id]->has_course_overviewfiles());
|
||||
|
||||
$this->assertEquals(1, count($courses[$c1->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(1, count($courses[$c2->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(0, count($courses[$c3->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(2, count($courses[$c4->id]->get_course_overviewfiles()));
|
||||
$this->assertEquals(1, count($courses[$c5->id]->get_course_overviewfiles()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a draft area for current user and fills it with fake files
|
||||
*
|
||||
* @param array $files array of files that need to be added to filearea, filename => filecontents
|
||||
* @return int draftid for the filearea
|
||||
*/
|
||||
protected function fill_draft_area(array $files) {
|
||||
global $USER;
|
||||
$usercontext = context_user::instance($USER->id);
|
||||
$draftid = file_get_unused_draft_itemid();
|
||||
foreach ($files as $filename => $filecontents) {
|
||||
// Add actual file there.
|
||||
$filerecord = array('component' => 'user', 'filearea' => 'draft',
|
||||
'contextid' => $usercontext->id, 'itemid' => $draftid,
|
||||
'filename' => $filename, 'filepath' => '/');
|
||||
$fs = get_file_storage();
|
||||
$fs->create_file_from_string($filerecord, $filecontents);
|
||||
}
|
||||
return $draftid;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user