. namespace core\task; /** * Class badges_adhoc_task * * @package core * @copyright 2023 Jay Oswald * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class badges_adhoc_task extends adhoc_task { /** * Sets the name of the badges adhoc task * * @return void */ public function get_name() { return get_string('taskbadgesadhoc', 'admin'); } /** * Badge adhoc task to assign a single badge * * @return void */ public function execute() { $data = $this->get_custom_data(); $badge = new \core_badges\badge($data->badgeid); $traceprefix = "Badge $data->badgeid: $badge->name: "; try { if (!$badge->has_criteria()) { mtrace("$traceprefix Badge has no criteria to be processed"); return; } $issued = $badge->review_all_criteria(); mtrace("$traceprefix badge was issued to $issued users."); } catch (\moodle_exception $e) { $badgeeditlink = new \moodle_url('/badges/edit.php', ['id' => $data->badgeid, 'action' => 'badge']); switch($e->errorcode){ case 'invalidcoursemoduleid': $badge->set_status(BADGE_STATUS_INACTIVE); mtrace("$traceprefix has invalid course modules, it has been made inactive $badgeeditlink"); break; default: mtrace("$traceprefix Error: {$e->getMessage()} $badgeeditlink"); throw($e); } } } }