public function test_gallery_access_permissions() { $options = array('colltype' => 'contributed', 'course' => $this->course->id); $record = $this->getDataGenerator()->create_module('mediagallery', $options); $collection = new \mod_mediagallery\collection($record); // Contributed mode. Users can see each others galleries. self::setUser($this->students[0]); $record = array('name' => 'Test gallery', 'instanceid' => $collection->id); $gallery = self::getDataGenerator()->get_plugin_generator('mod_mediagallery')->create_gallery($record); $mygals = $collection->get_my_galleries(); $this->assertTrue(isset($mygals[$gallery->id])); self::setUser($this->students[1]); $mygals = $collection->get_my_galleries(); $this->assertFalse(isset($mygals[$gallery->id])); // Assignment mode. Users cannot see each others galleries. // Peer assessment mode. Users can see each others galleries. // Instructor mode. Users can see all galleries. // Contributable flag on a gallery in contributed mode. $generator = self::getDataGenerator()->get_plugin_generator('mod_mediagallery'); $teaid = $this->teachers[0]->id; $stuid1 = $this->students[0]->id; $stuid2 = $this->students[1]->id; $record = array('name' => 'Test gallery', 'instanceid' => $collection->id, 'contributable' => 1, 'userid' => $this->students[0]->id); $gallery = $generator->create_gallery($record); $this->assertTrue($gallery->user_can_edit($stuid1)); $this->assertFalse($gallery->user_can_edit($stuid2)); $this->assertTrue($gallery->user_can_contribute($stuid1)); $this->assertTrue($gallery->user_can_contribute($stuid2)); $record = array('galleryid' => $gallery->id, 'userid' => $stuid1); $item1 = $generator->create_item($record); $record = array('galleryid' => $gallery->id, 'userid' => $stuid2); $item2 = $generator->create_item($record); // Stuid1 owns the gallery and the item. So stuid2 can do nothing to // it. $this->assertTrue($item1->user_can_edit($stuid1)); $this->assertTrue($item1->user_can_remove($stuid1)); $this->assertTrue($item1->user_can_remove($teaid)); $this->assertFalse($item1->user_can_edit($stuid2)); $this->assertFalse($item1->user_can_edit($teaid)); $this->assertFalse($item1->user_can_remove($stuid2)); // Stuid2 owns the item, but not the gallery. So only stuid2 and teacher // can remove it. $this->assertTrue($item2->user_can_edit($stuid2)); $this->assertTrue($item2->user_can_remove($stuid2)); $this->assertTrue($item2->user_can_remove($teaid)); $this->assertFalse($item2->user_can_edit($stuid1)); $this->assertFalse($item2->user_can_edit($teaid)); $this->assertFalse($item2->user_can_remove($stuid1)); // Flag off. $record = array('name' => 'Test gallery', 'instanceid' => $collection->id, 'contributable' => 0, 'userid' => $this->students[0]->id); $gallery = $generator->create_gallery($record); $this->assertTrue($gallery->user_can_edit($stuid1)); $this->assertFalse($gallery->user_can_edit($stuid2)); $this->assertTrue($gallery->user_can_contribute($stuid1)); $this->assertFalse($gallery->user_can_contribute($stuid2)); }