bc7dec8c2b
The OBv2.0 specification includes a field "Criteria" for BadgeClass. Until now, this field was filled using the URL of the badge assertion, but that is causing some issues in Badgr because it linked to the badge assertion of the first user sending this badge to the Badgr backpack (so then, the following users linked to the first user assertion page too). This patch adds a new page, badgeclass.php which will be used from now to display any badge information which is not related to any assertion (like happens with the criteria in BadgeClass).
108 lines
2.9 KiB
PHP
108 lines
2.9 KiB
PHP
<?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() {
|
|
if (isset($this->other['badgehash'])) {
|
|
return new \moodle_url('/badges/badge.php', ['hash' => $this->other['badgehash']]);
|
|
}
|
|
|
|
return new \moodle_url('/badges/badgeclass.php', ['id' => $this->other['badgeid']]);
|
|
}
|
|
|
|
/**
|
|
* 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.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
}
|