mirror of
https://github.com/moodle/moodle.git
synced 2025-05-06 00:06:51 +02:00
Merge branch 'MDL-83020' of https://github.com/paulholden/moodle
This commit is contained in:
commit
ce5cda1c07
20
badges/classes/external/get_badge.php
vendored
20
badges/classes/external/get_badge.php
vendored
@ -16,12 +16,12 @@
|
|||||||
|
|
||||||
namespace core_badges\external;
|
namespace core_badges\external;
|
||||||
|
|
||||||
|
use core\exception\moodle_exception;
|
||||||
use core_external\external_api;
|
use core_external\external_api;
|
||||||
use core_external\external_function_parameters;
|
use core_external\external_function_parameters;
|
||||||
use core_external\external_single_structure;
|
use core_external\external_single_structure;
|
||||||
use core_external\external_value;
|
use core_external\external_value;
|
||||||
use core_external\external_warnings;
|
use core_external\external_warnings;
|
||||||
use moodle_exception;
|
|
||||||
|
|
||||||
defined('MOODLE_INTERNAL') || die();
|
defined('MOODLE_INTERNAL') || die();
|
||||||
|
|
||||||
@ -31,16 +31,14 @@ require_once($CFG->libdir . '/badgeslib.php');
|
|||||||
/**
|
/**
|
||||||
* External service to get badge by id.
|
* External service to get badge by id.
|
||||||
*
|
*
|
||||||
* This is mainly used by the mobile application.
|
|
||||||
*
|
|
||||||
* @package core_badges
|
* @package core_badges
|
||||||
* @category external
|
* @category external
|
||||||
*
|
|
||||||
* @copyright 2024 Daniel Ureña <durenadev@gmail.com>
|
* @copyright 2024 Daniel Ureña <durenadev@gmail.com>
|
||||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||||
* @since Moodle 4.5
|
* @since Moodle 4.5
|
||||||
*/
|
*/
|
||||||
class get_badge extends external_api {
|
class get_badge extends external_api {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns description of method parameters
|
* Returns description of method parameters
|
||||||
*
|
*
|
||||||
@ -57,10 +55,10 @@ class get_badge extends external_api {
|
|||||||
*
|
*
|
||||||
* @param int $id
|
* @param int $id
|
||||||
* @return array
|
* @return array
|
||||||
* @throws \restricted_context_exception
|
* @throws moodle_exception
|
||||||
*/
|
*/
|
||||||
public static function execute(int $id): array {
|
public static function execute(int $id): array {
|
||||||
global $CFG;
|
global $CFG, $PAGE;
|
||||||
|
|
||||||
// Initialize return variables.
|
// Initialize return variables.
|
||||||
$warnings = [];
|
$warnings = [];
|
||||||
@ -71,24 +69,20 @@ class get_badge extends external_api {
|
|||||||
] = self::validate_parameters(self::execute_parameters(), [
|
] = self::validate_parameters(self::execute_parameters(), [
|
||||||
'id' => $id,
|
'id' => $id,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Validate badges is not disabled.
|
// Validate badges is not disabled.
|
||||||
if (empty($CFG->enablebadges)) {
|
if (empty($CFG->enablebadges)) {
|
||||||
throw new moodle_exception('badgesdisabled', 'badges');
|
throw new moodle_exception('badgesdisabled', 'badges');
|
||||||
}
|
}
|
||||||
|
|
||||||
$context = \context_system::instance();
|
|
||||||
if (!has_capability('moodle/badges:viewbadges', $context)) {
|
|
||||||
throw new moodle_exception('error:nopermissiontoview', 'badges');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the badge by id.
|
// Get the badge by id.
|
||||||
$badgeclass = new \core_badges\output\badgeclass($id);
|
$badgeclass = new \core_badges\output\badgeclass($id);
|
||||||
|
|
||||||
if (empty($badgeclass->badge)) {
|
if (empty($badgeclass->badge)) {
|
||||||
throw new moodle_exception('error:relatedbadgedoesntexist', 'badges');
|
throw new moodle_exception('error:relatedbadgedoesntexist', 'badges');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Manage the badge.
|
$PAGE->set_context($badgeclass->context);
|
||||||
|
|
||||||
$result = badges_prepare_badgeclass_for_external($badgeclass);
|
$result = badges_prepare_badgeclass_for_external($badgeclass);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
23
badges/tests/external/get_badge_test.php
vendored
23
badges/tests/external/get_badge_test.php
vendored
@ -105,29 +105,6 @@ final class get_badge_test extends externallib_advanced_testcase {
|
|||||||
get_badge::execute($data['badge']['id']);
|
get_badge::execute($data['badge']['id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Check the capability to view badges.
|
|
||||||
* @covers ::execute
|
|
||||||
*/
|
|
||||||
public function test_get_badge_viewbadges(): void {
|
|
||||||
|
|
||||||
global $DB, $SITE;
|
|
||||||
$data = $this->prepare_test_data();
|
|
||||||
|
|
||||||
$capability = 'moodle/badges:viewbadges';
|
|
||||||
$role = $DB->get_record('role', ['shortname' => 'student']);
|
|
||||||
$context = \context_system::instance();
|
|
||||||
assign_capability($capability, CAP_PROHIBIT, $role->id, $context->id, true);
|
|
||||||
|
|
||||||
$student1 = $this->getDataGenerator()->create_and_enrol($SITE, 'student');
|
|
||||||
role_assign($role->id, $student1->id, $context->id);
|
|
||||||
accesslib_clear_all_caches_for_unit_testing();
|
|
||||||
|
|
||||||
$this->setUser($student1);
|
|
||||||
$this->expectException(\moodle_exception::class);
|
|
||||||
get_badge::execute($data['badge']['id']);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test get badge by id.
|
* Test get badge by id.
|
||||||
* @covers ::execute
|
* @covers ::execute
|
||||||
|
@ -135,7 +135,6 @@ $functions = array(
|
|||||||
'classname' => 'core_badges\external\get_badge',
|
'classname' => 'core_badges\external\get_badge',
|
||||||
'description' => 'Retrieves a badge by id.',
|
'description' => 'Retrieves a badge by id.',
|
||||||
'type' => 'read',
|
'type' => 'read',
|
||||||
'capabilities' => 'moodle/badges:viewbadges',
|
|
||||||
'services' => [MOODLE_OFFICIAL_MOBILE_SERVICE],
|
'services' => [MOODLE_OFFICIAL_MOBILE_SERVICE],
|
||||||
],
|
],
|
||||||
'core_badges_get_user_badges' => array(
|
'core_badges_get_user_badges' => array(
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
defined('MOODLE_INTERNAL') || die();
|
defined('MOODLE_INTERNAL') || die();
|
||||||
|
|
||||||
$version = 2024090700.00; // YYYYMMDD = weekly release date of this DEV branch.
|
$version = 2024090700.01; // YYYYMMDD = weekly release date of this DEV branch.
|
||||||
// RR = release increments - 00 in DEV branches.
|
// RR = release increments - 00 in DEV branches.
|
||||||
// .XX = incremental changes.
|
// .XX = incremental changes.
|
||||||
$release = '4.5dev+ (Build: 20240907)'; // Human-friendly version name
|
$release = '4.5dev+ (Build: 20240907)'; // Human-friendly version name
|
||||||
|
Loading…
x
Reference in New Issue
Block a user