From 38d6fbfa87398ebcdef15525d209cb4da2161d19 Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Fri, 16 Aug 2013 11:20:21 +0800 Subject: [PATCH] MDL-41040 event: Level property uses defined event constants --- lib/classes/event/assessable_submitted.php | 2 +- lib/classes/event/assessable_uploaded.php | 2 +- lib/classes/event/base.php | 34 +++++++++++++++---- lib/classes/event/blog_entry_created.php | 3 +- lib/classes/event/blog_entry_deleted.php | 3 +- lib/classes/event/cohort_created.php | 3 +- lib/classes/event/cohort_deleted.php | 3 +- lib/classes/event/cohort_member_added.php | 3 +- lib/classes/event/cohort_member_removed.php | 3 +- lib/classes/event/cohort_updated.php | 3 +- lib/classes/event/course_category_deleted.php | 2 +- lib/classes/event/course_completed.php | 3 +- .../event/course_completion_updated.php | 3 +- lib/classes/event/course_content_deleted.php | 2 +- lib/classes/event/course_created.php | 2 +- lib/classes/event/course_deleted.php | 2 +- .../course_module_completion_updated.php | 3 +- lib/classes/event/course_restored.php | 2 +- lib/classes/event/course_section_updated.php | 3 +- lib/classes/event/course_updated.php | 2 +- .../event/role_allow_assign_updated.php | 3 +- .../event/role_allow_override_updated.php | 3 +- .../event/role_allow_switch_updated.php | 3 +- lib/classes/event/role_assigned.php | 3 +- .../event/role_capabilities_updated.php | 3 +- lib/classes/event/role_deleted.php | 3 +- lib/classes/event/role_unassigned.php | 3 +- lib/classes/event/user_loggedin.php | 2 +- lib/classes/event/user_loggedinas.php | 3 +- lib/tests/event_test.php | 6 +++- lib/tests/fixtures/event_fixtures.php | 30 ++++++++++------ 31 files changed, 80 insertions(+), 65 deletions(-) diff --git a/lib/classes/event/assessable_submitted.php b/lib/classes/event/assessable_submitted.php index e206117067f..a889e3e2d70 100644 --- a/lib/classes/event/assessable_submitted.php +++ b/lib/classes/event/assessable_submitted.php @@ -49,7 +49,7 @@ abstract class assessable_submitted extends \core\event\base { */ protected function init() { $this->data['crud'] = 'u'; - $this->data['level'] = 50; // TODO MDL-37658. + $this->data['level'] = self::LEVEL_PARTICIPATING; } /** diff --git a/lib/classes/event/assessable_uploaded.php b/lib/classes/event/assessable_uploaded.php index bfd6a5ed054..4e4ed8d346e 100644 --- a/lib/classes/event/assessable_uploaded.php +++ b/lib/classes/event/assessable_uploaded.php @@ -49,7 +49,7 @@ abstract class assessable_uploaded extends \core\event\base { */ protected function init() { $this->data['crud'] = 'c'; - $this->data['level'] = 50; // TODO MDL-37658. + $this->data['level'] = self::LEVEL_PARTICIPATING; } /** diff --git a/lib/classes/event/base.php b/lib/classes/event/base.php index f520fdd4e86..0660cf2dc89 100644 --- a/lib/classes/event/base.php +++ b/lib/classes/event/base.php @@ -50,6 +50,27 @@ namespace core\event; * @property-read int $timecreated */ abstract class base implements \IteratorAggregate { + + /** + * Other level. + */ + const LEVEL_OTHER = 0; + + /** + * Teaching level. + * + * Any event that is performed by someone (typically a teacher) and has a teaching value, + * anything that is affecting the learning experience/environment of the students. + */ + const LEVEL_TEACHING = 1; + + /** + * Participating level. + * + * Any event that is performed by a user, and is related (or could be related) to his learning experience. + */ + const LEVEL_PARTICIPATING = 2; + /** @var array event data */ protected $data; @@ -208,8 +229,8 @@ abstract class base implements \IteratorAggregate { * Override in subclass. * * Set all required data properties: - * 1/ crud - letter [crud] TODO: MDL-37658 - * 2/ level - number 1...100 TODO: MDL-37658 + * 1/ crud - letter [crud] + * 2/ level - using a constant self::LEVEL_*. * 3/ objecttable - name of database table if objectid specified * * Optionally it can set: @@ -346,7 +367,7 @@ abstract class base implements \IteratorAggregate { /** * Return auxiliary data that was stored in logs. * - * TODO: MDL-37658 + * TODO MDL-41331: Properly define this method once logging is finalised. * * @return array the format is standardised by logging API */ @@ -400,7 +421,7 @@ abstract class base implements \IteratorAggregate { if (empty($this->data['crud'])) { throw new \coding_exception('crud must be specified in init() method of each method'); } - if (empty($this->data['level'])) { + if (!isset($this->data['level'])) { throw new \coding_exception('level must be specified in init() method of each method'); } if (!empty($this->data['objectid']) and empty($this->data['objecttable'])) { @@ -414,8 +435,9 @@ abstract class base implements \IteratorAggregate { if (!in_array($this->data['crud'], array('c', 'r', 'u', 'd'), true)) { debugging("Invalid event crud value specified.", DEBUG_DEVELOPER); } - if (!is_number($this->data['level'])) { - debugging('Event property level must be a number', DEBUG_DEVELOPER); + if (!in_array($this->data['level'], array(self::LEVEL_OTHER, self::LEVEL_TEACHING, self::LEVEL_PARTICIPATING))) { + // Bitwise combination of levels is not allowed at this stage. + debugging('Event property level must a constant value, see event_base::LEVEL_*', DEBUG_DEVELOPER); } if (self::$fields !== array_keys($this->data)) { debugging('Number of event data fields must not be changed in event classes', DEBUG_DEVELOPER); diff --git a/lib/classes/event/blog_entry_created.php b/lib/classes/event/blog_entry_created.php index 9c2718b3334..8f686472aa2 100644 --- a/lib/classes/event/blog_entry_created.php +++ b/lib/classes/event/blog_entry_created.php @@ -45,8 +45,7 @@ class blog_entry_created extends \core\event\base { $this->context = \context_system::instance(); $this->data['objecttable'] = 'post'; $this->data['crud'] = 'c'; - // TODO: MDL-37658 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_PARTICIPATING; } /** diff --git a/lib/classes/event/blog_entry_deleted.php b/lib/classes/event/blog_entry_deleted.php index 9de612d024d..9d02aab3976 100644 --- a/lib/classes/event/blog_entry_deleted.php +++ b/lib/classes/event/blog_entry_deleted.php @@ -44,8 +44,7 @@ class blog_entry_deleted extends \core\event\base { $this->context = \context_system::instance(); $this->data['objecttable'] = 'post'; $this->data['crud'] = 'd'; - // TODO: MDL-37658 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_PARTICIPATING; } /** diff --git a/lib/classes/event/cohort_created.php b/lib/classes/event/cohort_created.php index 2ea7ad20a39..0db4d7b6839 100644 --- a/lib/classes/event/cohort_created.php +++ b/lib/classes/event/cohort_created.php @@ -41,8 +41,7 @@ class cohort_created extends base { */ protected function init() { $this->data['crud'] = 'c'; - // TODO MDL-41040. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; $this->data['objecttable'] = 'cohort'; } diff --git a/lib/classes/event/cohort_deleted.php b/lib/classes/event/cohort_deleted.php index f2d1f32ecf1..b43b110032f 100644 --- a/lib/classes/event/cohort_deleted.php +++ b/lib/classes/event/cohort_deleted.php @@ -41,8 +41,7 @@ class cohort_deleted extends base { */ protected function init() { $this->data['crud'] = 'd'; - // TODO MDL-41040. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; $this->data['objecttable'] = 'cohort'; } diff --git a/lib/classes/event/cohort_member_added.php b/lib/classes/event/cohort_member_added.php index 95efb882bd1..a7e52eb0c4d 100644 --- a/lib/classes/event/cohort_member_added.php +++ b/lib/classes/event/cohort_member_added.php @@ -41,8 +41,7 @@ class cohort_member_added extends base { */ protected function init() { $this->data['crud'] = 'c'; - // TODO MDL-41040. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; $this->data['objecttable'] = 'cohort'; } diff --git a/lib/classes/event/cohort_member_removed.php b/lib/classes/event/cohort_member_removed.php index e452715960e..b3f47bd7d50 100644 --- a/lib/classes/event/cohort_member_removed.php +++ b/lib/classes/event/cohort_member_removed.php @@ -42,8 +42,7 @@ class cohort_member_removed extends base { */ protected function init() { $this->data['crud'] = 'd'; - // TODO MDL-41040. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; $this->data['objecttable'] = 'cohort'; } diff --git a/lib/classes/event/cohort_updated.php b/lib/classes/event/cohort_updated.php index b36bc451684..f9b6a0756d8 100644 --- a/lib/classes/event/cohort_updated.php +++ b/lib/classes/event/cohort_updated.php @@ -41,8 +41,7 @@ class cohort_updated extends base { */ protected function init() { $this->data['crud'] = 'u'; - // TODO MDL-41040. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; $this->data['objecttable'] = 'cohort'; } diff --git a/lib/classes/event/course_category_deleted.php b/lib/classes/event/course_category_deleted.php index 1f8fde94fe1..8f0b4d32c3b 100644 --- a/lib/classes/event/course_category_deleted.php +++ b/lib/classes/event/course_category_deleted.php @@ -36,7 +36,7 @@ class course_category_deleted extends base { protected function init() { $this->data['objecttable'] = 'course_categories'; $this->data['crud'] = 'd'; - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; } /** diff --git a/lib/classes/event/course_completed.php b/lib/classes/event/course_completed.php index e57ddae9245..3c7389a788a 100644 --- a/lib/classes/event/course_completed.php +++ b/lib/classes/event/course_completed.php @@ -31,8 +31,7 @@ class course_completed extends base { protected function init() { $this->data['objecttable'] = 'course_completions'; $this->data['crud'] = 'u'; - // TODO: MDL-37658 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_PARTICIPATING; } /** diff --git a/lib/classes/event/course_completion_updated.php b/lib/classes/event/course_completion_updated.php index 3da8eda0288..bd1dcbd5be1 100644 --- a/lib/classes/event/course_completion_updated.php +++ b/lib/classes/event/course_completion_updated.php @@ -40,8 +40,7 @@ class course_completion_updated extends base { */ protected function init() { $this->data['crud'] = 'u'; - // TODO: MDL-37658 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_PARTICIPATING; } /** diff --git a/lib/classes/event/course_content_deleted.php b/lib/classes/event/course_content_deleted.php index 4587583621b..9cb33098224 100644 --- a/lib/classes/event/course_content_deleted.php +++ b/lib/classes/event/course_content_deleted.php @@ -31,7 +31,7 @@ class course_content_deleted extends base { protected function init() { $this->data['objecttable'] = 'course'; $this->data['crud'] = 'd'; - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_TEACHING; } /** diff --git a/lib/classes/event/course_created.php b/lib/classes/event/course_created.php index 73c4599e1ca..040f830f6c1 100644 --- a/lib/classes/event/course_created.php +++ b/lib/classes/event/course_created.php @@ -31,7 +31,7 @@ class course_created extends base { protected function init() { $this->data['objecttable'] = 'course'; $this->data['crud'] = 'c'; - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_TEACHING; } /** diff --git a/lib/classes/event/course_deleted.php b/lib/classes/event/course_deleted.php index 7bdc477e56e..2cf551f98f8 100644 --- a/lib/classes/event/course_deleted.php +++ b/lib/classes/event/course_deleted.php @@ -31,7 +31,7 @@ class course_deleted extends base { protected function init() { $this->data['objecttable'] = 'course'; $this->data['crud'] = 'd'; - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_TEACHING; } /** diff --git a/lib/classes/event/course_module_completion_updated.php b/lib/classes/event/course_module_completion_updated.php index c57f0c73d4a..fbc8c7bf251 100644 --- a/lib/classes/event/course_module_completion_updated.php +++ b/lib/classes/event/course_module_completion_updated.php @@ -31,8 +31,7 @@ class course_module_completion_updated extends base { protected function init() { $this->data['objecttable'] = 'course_modules_completion'; $this->data['crud'] = 'u'; - // TODO: MDL-37658 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_PARTICIPATING; } /** diff --git a/lib/classes/event/course_restored.php b/lib/classes/event/course_restored.php index 083ff893134..f684463cfb7 100644 --- a/lib/classes/event/course_restored.php +++ b/lib/classes/event/course_restored.php @@ -31,7 +31,7 @@ class course_restored extends base { protected function init() { $this->data['objecttable'] = 'course'; $this->data['crud'] = 'c'; - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_TEACHING; } /** diff --git a/lib/classes/event/course_section_updated.php b/lib/classes/event/course_section_updated.php index 832c9603029..5a7d9e06a65 100644 --- a/lib/classes/event/course_section_updated.php +++ b/lib/classes/event/course_section_updated.php @@ -43,8 +43,7 @@ class course_section_updated extends base { protected function init() { $this->data['objecttable'] = 'course_sections'; $this->data['crud'] = 'u'; - // TODO MDL-41040 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_TEACHING; } /** diff --git a/lib/classes/event/course_updated.php b/lib/classes/event/course_updated.php index 3020cc4886b..b76dd65b8e8 100644 --- a/lib/classes/event/course_updated.php +++ b/lib/classes/event/course_updated.php @@ -34,7 +34,7 @@ class course_updated extends base { protected function init() { $this->data['objecttable'] = 'course'; $this->data['crud'] = 'u'; - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_TEACHING; } /** diff --git a/lib/classes/event/role_allow_assign_updated.php b/lib/classes/event/role_allow_assign_updated.php index 538e56c77d5..ad4ac9af5f8 100644 --- a/lib/classes/event/role_allow_assign_updated.php +++ b/lib/classes/event/role_allow_assign_updated.php @@ -30,8 +30,7 @@ class role_allow_assign_updated extends base { */ protected function init() { $this->data['crud'] = 'u'; - // TODO: MDL-41040 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; } /** diff --git a/lib/classes/event/role_allow_override_updated.php b/lib/classes/event/role_allow_override_updated.php index 2edee4b3769..fc7c5ce687b 100644 --- a/lib/classes/event/role_allow_override_updated.php +++ b/lib/classes/event/role_allow_override_updated.php @@ -30,8 +30,7 @@ class role_allow_override_updated extends base { */ protected function init() { $this->data['crud'] = 'u'; - // TODO: MDL-41040 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; } /** diff --git a/lib/classes/event/role_allow_switch_updated.php b/lib/classes/event/role_allow_switch_updated.php index 04606e7e51f..20e45eb5ba2 100644 --- a/lib/classes/event/role_allow_switch_updated.php +++ b/lib/classes/event/role_allow_switch_updated.php @@ -30,8 +30,7 @@ class role_allow_switch_updated extends base { */ protected function init() { $this->data['crud'] = 'u'; - // TODO: MDL-41040 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; } /** diff --git a/lib/classes/event/role_assigned.php b/lib/classes/event/role_assigned.php index 9e748393ed5..1f763abb8e1 100644 --- a/lib/classes/event/role_assigned.php +++ b/lib/classes/event/role_assigned.php @@ -28,8 +28,7 @@ class role_assigned extends base { protected function init() { $this->data['objecttable'] = 'role'; $this->data['crud'] = 'c'; - // TODO: MDL-37658 set level - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; } /** diff --git a/lib/classes/event/role_capabilities_updated.php b/lib/classes/event/role_capabilities_updated.php index 6f836dcf80f..5d1f89ca329 100644 --- a/lib/classes/event/role_capabilities_updated.php +++ b/lib/classes/event/role_capabilities_updated.php @@ -34,8 +34,7 @@ class role_capabilities_updated extends base { protected function init() { $this->data['objecttable'] = 'role'; $this->data['crud'] = 'u'; - // TODO: MDL-41040 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; } /** diff --git a/lib/classes/event/role_deleted.php b/lib/classes/event/role_deleted.php index 11e15b9f858..969ebbb5e8a 100644 --- a/lib/classes/event/role_deleted.php +++ b/lib/classes/event/role_deleted.php @@ -31,8 +31,7 @@ class role_deleted extends base { protected function init() { $this->data['objecttable'] = 'role'; $this->data['crud'] = 'd'; - // TODO: MDL-41040 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; } /** diff --git a/lib/classes/event/role_unassigned.php b/lib/classes/event/role_unassigned.php index 3bb4a100e90..4735797b303 100644 --- a/lib/classes/event/role_unassigned.php +++ b/lib/classes/event/role_unassigned.php @@ -28,8 +28,7 @@ class role_unassigned extends base { protected function init() { $this->data['objecttable'] = 'role'; $this->data['crud'] = 'd'; - // TODO: MDL-37658 set level - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; } /** diff --git a/lib/classes/event/user_loggedin.php b/lib/classes/event/user_loggedin.php index 7cfc3f847ce..2f842fa1edd 100644 --- a/lib/classes/event/user_loggedin.php +++ b/lib/classes/event/user_loggedin.php @@ -89,7 +89,7 @@ class user_loggedin extends \core\event\base { protected function init() { $this->context = \context_system::instance(); $this->data['crud'] = 'r'; - $this->data['level'] = 50; // TODO MDL-37658. + $this->data['level'] = self::LEVEL_OTHER; $this->data['objecttable'] = 'user'; } diff --git a/lib/classes/event/user_loggedinas.php b/lib/classes/event/user_loggedinas.php index 017a6aef1e2..50012d8cffb 100644 --- a/lib/classes/event/user_loggedinas.php +++ b/lib/classes/event/user_loggedinas.php @@ -42,8 +42,7 @@ class user_loggedinas extends base { */ protected function init() { $this->data['crud'] = 'r'; - // TODO MDL-41040 set level. - $this->data['level'] = 50; + $this->data['level'] = self::LEVEL_OTHER; $this->data['objecttable'] = 'user'; } diff --git a/lib/tests/event_test.php b/lib/tests/event_test.php index 2c06a4306de..5b0d931a31e 100644 --- a/lib/tests/event_test.php +++ b/lib/tests/event_test.php @@ -52,7 +52,7 @@ class core_event_testcase extends advanced_testcase { $this->assertSame('unittest', $event->target); $this->assertSame(5, $event->objectid); $this->assertSame('u', $event->crud); - $this->assertSame(10, $event->level); + $this->assertSame(\core\event\base::LEVEL_PARTICIPATING, $event->level); $this->assertEquals($system, $event->get_context()); $this->assertSame($system->id, $event->contextid); @@ -602,6 +602,10 @@ class core_event_testcase extends advanced_testcase { $this->assertInstanceOf('\coding_exception', $e); } + $event = \core_tests\event\bad_event2b::create(array('context'=>\context_system::instance())); + @$event->trigger(); + $this->assertDebuggingCalled(); + $event = \core_tests\event\bad_event3::create(array('context'=>\context_system::instance())); @$event->trigger(); $this->assertDebuggingCalled(); diff --git a/lib/tests/fixtures/event_fixtures.php b/lib/tests/fixtures/event_fixtures.php index a37e2f38bdd..1d775d967ed 100644 --- a/lib/tests/fixtures/event_fixtures.php +++ b/lib/tests/fixtures/event_fixtures.php @@ -41,7 +41,7 @@ class unittest_executed extends \core\event\base { protected function init() { $this->data['crud'] = 'u'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_PARTICIPATING; } public function get_url() { @@ -116,7 +116,7 @@ class unittest_observer { class bad_event1 extends \core\event\base { protected function init() { //$this->data['crud'] = 'u'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; } } @@ -127,10 +127,18 @@ class bad_event2 extends \core\event\base { } } +class bad_event2b extends \core\event\base { + protected function init() { + $this->data['crud'] = 'u'; + // Invalid level value. + $this->data['level'] = -1; + } +} + class bad_event3 extends \core\event\base { protected function init() { $this->data['crud'] = 'u'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; unset($this->data['courseid']); } } @@ -138,7 +146,7 @@ class bad_event3 extends \core\event\base { class bad_event4 extends \core\event\base { protected function init() { $this->data['crud'] = 'u'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; $this->data['xxx'] = 1; } } @@ -146,14 +154,14 @@ class bad_event4 extends \core\event\base { class bad_event5 extends \core\event\base { protected function init() { $this->data['crud'] = 'x'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; } } class bad_event6 extends \core\event\base { protected function init() { $this->data['crud'] = 'c'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; $this->data['objecttable'] = 'xxx_xxx_xx'; } } @@ -161,7 +169,7 @@ class bad_event6 extends \core\event\base { class bad_event7 extends \core\event\base { protected function init() { $this->data['crud'] = 'c'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; $this->data['objecttable'] = null; } } @@ -169,14 +177,14 @@ class bad_event7 extends \core\event\base { class problematic_event1 extends \core\event\base { protected function init() { $this->data['crud'] = 'u'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; } } class problematic_event2 extends \core\event\base { protected function init() { $this->data['crud'] = 'c'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; $this->context = \context_system::instance(); } } @@ -184,7 +192,7 @@ class problematic_event2 extends \core\event\base { class problematic_event3 extends \core\event\base { protected function init() { $this->data['crud'] = 'c'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; $this->context = \context_system::instance(); } @@ -199,7 +207,7 @@ class noname_event extends \core\event\base { protected function init() { $this->data['crud'] = 'c'; - $this->data['level'] = 10; + $this->data['level'] = self::LEVEL_OTHER; $this->context = \context_system::instance(); } }