Merge branch 'MDL-81089-master' of https://github.com/jleyva/moodle
This commit is contained in:
+9
-1
@@ -53,6 +53,9 @@ class recentlyaccesseditems_item_exporter extends \core\external\exporter {
|
||||
require_once($CFG->libdir.'/modinfolib.php');
|
||||
$iconurl = get_fast_modinfo($this->data->courseid)->cms[$this->data->cmid]->get_icon_url();
|
||||
$iconclass = $iconurl->get_param('filtericon') ? '' : 'nofilter';
|
||||
|
||||
$isbranded = component_callback('mod_' . $this->data->modname, 'is_branded') !== null ? : false;
|
||||
|
||||
return array(
|
||||
'viewurl' => (new moodle_url('/mod/'.$this->data->modname.'/view.php',
|
||||
array('id' => $this->data->cmid)))->out(false),
|
||||
@@ -63,6 +66,7 @@ class recentlyaccesseditems_item_exporter extends \core\external\exporter {
|
||||
['title' => get_string('pluginname', $this->data->modname), 'class' => "icon $iconclass"]
|
||||
),
|
||||
'purpose' => plugin_supports('mod', $this->data->modname, FEATURE_MOD_PURPOSE, MOD_PURPOSE_OTHER),
|
||||
'branded' => $isbranded,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -118,7 +122,11 @@ class recentlyaccesseditems_item_exporter extends \core\external\exporter {
|
||||
),
|
||||
'purpose' => array(
|
||||
'type' => PARAM_ALPHA,
|
||||
)
|
||||
),
|
||||
'branded' => [
|
||||
'type' => PARAM_BOOL,
|
||||
'optional' => true,
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
|
||||
$this->resetAfterTest();
|
||||
$generator = $this->getDataGenerator();
|
||||
$this->setAdminUser();
|
||||
|
||||
// Add courses.
|
||||
$courses = array();
|
||||
@@ -59,6 +60,7 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$forum[] = $this->getDataGenerator()->create_module('forum', array('course' => $course));
|
||||
$glossary[] = $this->getDataGenerator()->create_module('glossary', array('course' => $course));
|
||||
$assign[] = $this->getDataGenerator()->create_module('assign', ['course' => $course]);
|
||||
$h5pactivity[] = $this->getDataGenerator()->create_module('h5pactivity', ['course' => $course]);
|
||||
}
|
||||
$generator->enrol_user($teacher->id, $courses[0]->id, 'teacher');
|
||||
|
||||
@@ -88,24 +90,39 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$this->waitForSecond();
|
||||
}
|
||||
|
||||
// Student access all h5p.
|
||||
foreach ($h5pactivity as $module) {
|
||||
$event = \mod_h5pactivity\event\course_module_viewed::create(
|
||||
['context' => \context_module::instance($module->cmid), 'objectid' => $module->id]
|
||||
);
|
||||
$event->trigger();
|
||||
$this->waitForSecond();
|
||||
}
|
||||
|
||||
// Test that results are sorted by timeaccess DESC (default).
|
||||
$result = \block_recentlyaccesseditems\external::get_recent_items();
|
||||
$this->assertCount((count($forum) + count($assign)), $result);
|
||||
$this->assertCount((count($forum) + count($assign) + count($h5pactivity)), $result);
|
||||
foreach ($result as $key => $record) {
|
||||
if ($key == 0) {
|
||||
continue;
|
||||
}
|
||||
$this->assertTrue($record->timeaccess < $result[$key - 1]->timeaccess);
|
||||
// Check that the branded property is set correctly.
|
||||
if ($record->modname == 'h5pactivity') {
|
||||
$this->assertTrue($record->branded);
|
||||
} else {
|
||||
$this->assertFalse($record->branded);
|
||||
}
|
||||
}
|
||||
|
||||
// Delete a course and confirm it's activities don't get returned.
|
||||
delete_course($courses[0], false);
|
||||
$result = \block_recentlyaccesseditems\external::get_recent_items();
|
||||
$this->assertCount((count($forum) + count($assign)) - 2, $result);
|
||||
$this->assertCount((count($forum) + count($assign) + count($h5pactivity)) - 3, $result);
|
||||
|
||||
// Delete a single course module should still return.
|
||||
course_delete_module($forum[1]->cmid);
|
||||
$result = \block_recentlyaccesseditems\external::get_recent_items();
|
||||
$this->assertCount((count($forum) + count($assign)) - 3, $result);
|
||||
$this->assertCount((count($forum) + count($assign) + count($h5pactivity)) - 4, $result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
This file describes API changes in the recentlyaccesseditems block code.
|
||||
|
||||
=== 4.4 ===
|
||||
* The external function \block_recentlyaccesseditems\external\get_recent_items() now returns
|
||||
a field called "branded" indicating whether the module is branded or not.
|
||||
|
||||
=== 3.7 ===
|
||||
|
||||
* The 'block/recentlyaccesseditems:addinstance' capability has been removed. It has never been used in code.
|
||||
@@ -293,6 +293,10 @@ class event_exporter_base extends exporter {
|
||||
'purpose' => [
|
||||
'type' => PARAM_TEXT
|
||||
],
|
||||
'branded' => [
|
||||
'type' => PARAM_BOOL,
|
||||
'optional' => true,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -335,10 +339,13 @@ class event_exporter_base extends exporter {
|
||||
$values['normalisedeventtypetext'] = $stringexists ? get_string($identifier, 'calendar') : '';
|
||||
|
||||
$purpose = 'none';
|
||||
$isbranded = false;
|
||||
if ($moduleproxy) {
|
||||
$purpose = plugin_supports('mod', $moduleproxy->get('modname'), FEATURE_MOD_PURPOSE, 'none');
|
||||
$isbranded = component_callback('mod_' . $moduleproxy->get('modname'), 'is_branded') !== null ? : false;
|
||||
}
|
||||
$values['purpose'] = $purpose;
|
||||
$values['branded'] = $isbranded;
|
||||
|
||||
$values['icon'] = $iconexporter->export($output);
|
||||
|
||||
|
||||
@@ -3257,4 +3257,39 @@ class externallib_test extends externallib_advanced_testcase {
|
||||
$this->assertEquals($expectedtimestamps[$data['key']], $data['timestamp']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for checking if we receive the correct icon branding.
|
||||
*
|
||||
* @covers \core_calendar_external::get_calendar_action_events_by_timesort
|
||||
*/
|
||||
public function test_get_calendar_event_branded(): void {
|
||||
|
||||
$this->resetAfterTest(true);
|
||||
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course->id);
|
||||
|
||||
$this->setUser($user);
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('mod_assign');
|
||||
$assign = $generator->create_instance(['course' => $course->id]);
|
||||
|
||||
$params = [
|
||||
'type' => CALENDAR_EVENT_TYPE_ACTION,
|
||||
'instance' => $assign->id,
|
||||
'courseid' => $course->id,
|
||||
'modulename' => 'assign',
|
||||
'timesort' => 1,
|
||||
];
|
||||
$event1 = $this->create_calendar_event('Event 1', $user->id, 'user', 0, 1, $params);
|
||||
$result = core_calendar_external::get_calendar_action_events_by_timesort(0);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_timesort_returns(),
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertCount(1, $result['events']);
|
||||
$this->assertFalse($result['events'][0]['branded']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,17 @@ information provided here is intended especially for developers.
|
||||
* The following previously deprecated methods have been removed and can no longer be used:
|
||||
- `calendar_process_subscription_row`
|
||||
- `calendar_import_icalendar_events`
|
||||
* The event_exporter_base class now returns a field called "branded" indicating whether the module is branded or not.
|
||||
All the external functions using the exporter will now return the new field:
|
||||
- core_calendar_get_action_events_by_course
|
||||
- core_calendar_get_action_events_by_courses
|
||||
- core_calendar_get_action_events_by_timesort
|
||||
- core_calendar_get_calendar_day_view
|
||||
- core_calendar_get_calendar_event_by_id
|
||||
- core_calendar_get_calendar_monthly_view
|
||||
- core_calendar_get_calendar_upcoming_view
|
||||
- core_calendar_submit_create_update_form
|
||||
- core_calendar_update_event_start_day
|
||||
|
||||
=== 4.3 ===
|
||||
* The `navigation` property has been removed from `\core_calendar\external\day_exporter` as it is not being used by any of the
|
||||
|
||||
Reference in New Issue
Block a user