Merge branch 'MDL-55239_m32v1' of https://github.com/sbourget/moodle
This commit is contained in:
@@ -71,4 +71,16 @@ echo $OUTPUT->header();
|
||||
|
||||
echo $output->render($badge);
|
||||
|
||||
// Trigger event, badge viewed.
|
||||
$other = array('badgeid' => $badge->badgeid, 'badgehash' => $id);
|
||||
$eventparams = array('context' => $PAGE->context, 'other' => $other);
|
||||
|
||||
// If the badge does not belong to this user, log it appropriately.
|
||||
if (($badge->recipient->id != $USER->id)) {
|
||||
$eventparams['relateduserid'] = $badge->recipient->id;
|
||||
}
|
||||
|
||||
$event = \core\event\badge_viewed::create($eventparams);
|
||||
$event->trigger();
|
||||
|
||||
echo $OUTPUT->footer();
|
||||
|
||||
@@ -310,4 +310,66 @@ class core_badges_events_testcase extends core_badges_badgeslib_testcase {
|
||||
$sink->close();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the badge viewed event.
|
||||
*
|
||||
* There is no external API for viewing a badge, so the unit test will simply
|
||||
* create and trigger the event and ensure data is returned as expected.
|
||||
*/
|
||||
public function test_badge_viewed() {
|
||||
|
||||
$badge = new badge($this->badgeid);
|
||||
// Trigger an event: badge viewed.
|
||||
$other = array('badgeid' => $badge->id, 'badgehash' => '12345678');
|
||||
$eventparams = array(
|
||||
'context' => $badge->get_context(),
|
||||
'other' => $other,
|
||||
);
|
||||
|
||||
$event = \core\event\badge_viewed::create($eventparams);
|
||||
// Trigger and capture the event.
|
||||
$sink = $this->redirectEvents();
|
||||
$event->trigger();
|
||||
$events = $sink->get_events();
|
||||
$event = reset($events);
|
||||
|
||||
// Check that the event data is valid.
|
||||
$this->assertInstanceOf('\core\event\badge_viewed', $event);
|
||||
$this->assertEquals('12345678', $event->other['badgehash']);
|
||||
$this->assertEquals($badge->id, $event->other['badgeid']);
|
||||
$this->assertDebuggingNotCalled();
|
||||
$sink->close();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the badge listing viewed event.
|
||||
*
|
||||
* There is no external API for viewing a badge, so the unit test will simply
|
||||
* create and trigger the event and ensure data is returned as expected.
|
||||
*/
|
||||
public function test_badge_listing_viewed() {
|
||||
|
||||
// Trigger an event: badge listing viewed.
|
||||
$context = context_system::instance();
|
||||
$eventparams = array(
|
||||
'context' => $context,
|
||||
'other' => array('badgetype' => BADGE_TYPE_SITE)
|
||||
);
|
||||
|
||||
$event = \core\event\badge_listing_viewed::create($eventparams);
|
||||
// Trigger and capture the event.
|
||||
$sink = $this->redirectEvents();
|
||||
$event->trigger();
|
||||
$events = $sink->get_events();
|
||||
$event = reset($events);
|
||||
|
||||
// Check that the event data is valid.
|
||||
$this->assertInstanceOf('\core\event\badge_listing_viewed', $event);
|
||||
$this->assertEquals(BADGE_TYPE_SITE, $event->other['badgetype']);
|
||||
$this->assertDebuggingNotCalled();
|
||||
$sink->close();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ if ($type == BADGE_TYPE_SITE) {
|
||||
$PAGE->set_pagelayout('admin');
|
||||
$PAGE->set_heading($SITE->fullname);
|
||||
$title = get_string('sitebadges', 'badges');
|
||||
$eventotherparams = array('badgetype' => BADGE_TYPE_SITE);
|
||||
} else {
|
||||
require_login($course);
|
||||
$coursename = format_string($course->fullname, true, array('context' => context_course::instance($course->id)));
|
||||
@@ -73,6 +74,7 @@ if ($type == BADGE_TYPE_SITE) {
|
||||
$PAGE->set_context(context_course::instance($course->id));
|
||||
$PAGE->set_pagelayout('incourse');
|
||||
$PAGE->set_heading($coursename);
|
||||
$eventotherparams = array('badgetype' => BADGE_TYPE_COURSE, 'courseid' => $course->id);
|
||||
}
|
||||
|
||||
require_capability('moodle/badges:viewbadges', $PAGE->context);
|
||||
@@ -104,5 +106,9 @@ if ($totalcount) {
|
||||
} else {
|
||||
echo $output->notification(get_string('nobadges', 'badges'));
|
||||
}
|
||||
// Trigger event, badge listing viewed.
|
||||
$eventparams = array('context' => $PAGE->context, 'other' => $eventotherparams);
|
||||
$event = \core\event\badge_listing_viewed::create($eventparams);
|
||||
$event->trigger();
|
||||
|
||||
echo $output->footer();
|
||||
|
||||
@@ -258,7 +258,9 @@ $string['eventbadgedeleted'] = 'Badge deleted';
|
||||
$string['eventbadgedisabled'] = 'Badge disabled';
|
||||
$string['eventbadgeduplicated'] = 'Badge duplicated';
|
||||
$string['eventbadgeenabled'] = 'Badge enabled';
|
||||
$string['eventbadgelistingviewed'] = 'Badge listing viewed';
|
||||
$string['eventbadgeupdated'] = 'Badge updated';
|
||||
$string['eventbadgeviewed'] = 'Badge viewed';
|
||||
$string['evidence'] = 'Evidence';
|
||||
$string['existingrecipients'] = 'Existing badge recipients';
|
||||
$string['expired'] = 'Expired';
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Badge listing viewed event.
|
||||
*
|
||||
* @package core
|
||||
* @copyright 2016 Stephen Bourget
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace core\event;
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
* Event triggered after a badge is viewed.
|
||||
*
|
||||
* @property-read array $other {
|
||||
* Extra information about the event.
|
||||
*
|
||||
* - int badgetype: the type of badge (BADGE_TYPE_SITE or BADGE_TYPE_COURSE).
|
||||
* - int courseid: The ID of the course (Not required for BADGE_TYPE_SITE).
|
||||
* }
|
||||
*
|
||||
* @package core
|
||||
* @since Moodle 3.2
|
||||
* @copyright 2016 Stephen Bourget
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class badge_listing_viewed extends base {
|
||||
|
||||
/**
|
||||
* Set basic properties for the event.
|
||||
*/
|
||||
protected function init() {
|
||||
$this->data['crud'] = 'r';
|
||||
$this->data['edulevel'] = self::LEVEL_PARTICIPATING;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns localised general event name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_name() {
|
||||
return get_string('eventbadgelistingviewed', 'badges');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns non-localised event description with id's for admin use only.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_description() {
|
||||
if ($this->other['badgetype'] == BADGE_TYPE_SITE) {
|
||||
$return = "The user with id '$this->userid' has viewed the list of available badges for this site.";
|
||||
} else {
|
||||
$return = "The user with id '$this->userid' has viewed the list of available badges".
|
||||
" for the course with the id '".$this->other['courseid']."'.";
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns relevant URL.
|
||||
* @return \moodle_url
|
||||
*/
|
||||
public function get_url() {
|
||||
if ($this->other['badgetype'] == BADGE_TYPE_SITE) {
|
||||
$params = array('type' => $this->other['badgetype']);
|
||||
} else {
|
||||
$params = array('id' => $this->other['courseid'], 'type' => $this->other['badgetype']);
|
||||
}
|
||||
return new \moodle_url('/badges/view.php', $params );
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom validations.
|
||||
*
|
||||
* @throws \coding_exception
|
||||
* @return void
|
||||
*/
|
||||
protected function validate_data() {
|
||||
parent::validate_data();
|
||||
|
||||
if (!isset($this->other['badgetype'])) {
|
||||
throw new \coding_exception('The \'badgetype\' must be set in other.');
|
||||
}
|
||||
if ($this->other['badgetype'] == BADGE_TYPE_COURSE) {
|
||||
if (!isset($this->other['courseid'])) {
|
||||
throw new \coding_exception('The \'courseid\' must be set in other.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for maping events on restore
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function get_other_mapping() {
|
||||
$othermapped = array();
|
||||
$othermapped['courseid'] = array('db' => 'course', 'restore' => 'course');
|
||||
return $othermapped;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Badge viewed event.
|
||||
*
|
||||
* @package core
|
||||
* @copyright 2016 Stephen Bourget
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace core\event;
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
* Event triggered after a badge is viewed.
|
||||
*
|
||||
* @property-read array $other {
|
||||
* Extra information about the event.
|
||||
*
|
||||
* - int badgeid: the ID of the badge.
|
||||
* - int badgehash: The UID of the awarded badge.
|
||||
* }
|
||||
*
|
||||
* @package core
|
||||
* @since Moodle 3.2
|
||||
* @copyright 2016 Stephen Bourget
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class badge_viewed extends base {
|
||||
|
||||
/**
|
||||
* Set basic properties for the event.
|
||||
*/
|
||||
protected function init() {
|
||||
$this->data['crud'] = 'r';
|
||||
$this->data['edulevel'] = self::LEVEL_PARTICIPATING;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns localised general event name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_name() {
|
||||
return get_string('eventbadgeviewed', 'badges');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns non-localised event description with id's for admin use only.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_description() {
|
||||
return "The user with id '$this->userid' has viewed the badge with the id '".$this->other['badgeid']."'.";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns relevant URL.
|
||||
* @return \moodle_url
|
||||
*/
|
||||
public function get_url() {
|
||||
return new \moodle_url('/badges/badge.php', array('hash' => $this->other['badgehash']));
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom validations.
|
||||
*
|
||||
* @throws \coding_exception
|
||||
* @return void
|
||||
*/
|
||||
protected function validate_data() {
|
||||
parent::validate_data();
|
||||
|
||||
if (!isset($this->other['badgeid'])) {
|
||||
throw new \coding_exception('The \'badgeid\' must be set in other.');
|
||||
}
|
||||
if (!isset($this->other['badgehash'])) {
|
||||
throw new \coding_exception('The \'badgehash\' must be set in other.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for maping events on restore
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function get_other_mapping() {
|
||||
$othermapped = array();
|
||||
$othermapped['badgeid'] = array('db' => 'badge', 'restore' => 'badge');
|
||||
return $othermapped;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -29,7 +29,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$version = 2016090100.00; // YYYYMMDD = weekly release date of this DEV branch.
|
||||
$version = 2016090100.01; // YYYYMMDD = weekly release date of this DEV branch.
|
||||
// RR = release increments - 00 in DEV branches.
|
||||
// .XX = incremental changes.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user