diff --git a/lib/classes/task/badges_adhoc_task.php b/lib/classes/task/badges_adhoc_task.php index dd2ad797f15..1fd8578121c 100644 --- a/lib/classes/task/badges_adhoc_task.php +++ b/lib/classes/task/badges_adhoc_task.php @@ -24,10 +24,20 @@ namespace core\task; */ 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); @@ -43,7 +53,7 @@ class badges_adhoc_task extends adhoc_task { mtrace("$traceprefix badge was issued to $issued users."); } catch (\moodle_exception $e) { - $badgeeditlink = + $badgeeditlink = new \moodle_url('/badges/edit.php', ['id' => $data->badgeid, 'action' => 'badge']); switch($e->errorcode){ diff --git a/lib/classes/task/badges_cron_task.php b/lib/classes/task/badges_cron_task.php index 82e53e3d2db..c6e6f9eebeb 100644 --- a/lib/classes/task/badges_cron_task.php +++ b/lib/classes/task/badges_cron_task.php @@ -45,32 +45,38 @@ class badges_cron_task extends scheduled_task { */ public function execute() { global $DB, $CFG; - if (!empty($CFG->enablebadges)) { - require_once($CFG->libdir . '/badgeslib.php'); + if (empty($CFG->enablebadges)) { + return; + } + require_once($CFG->libdir . '/badgeslib.php'); - $courseparams = array(); - if (empty($CFG->badges_allowcoursebadges)) { - $coursesql = ''; - } else { - $coursesql = ' OR EXISTS (SELECT c.id FROM {course} c WHERE c.visible = :visible AND c.startdate < :current' - . ' AND c.id = b.courseid) '; - $courseparams = array('visible' => true, 'current' => time()); - } + $courseparams = []; + if (empty($CFG->badges_allowcoursebadges)) { + $coursesql = ''; + } else { + $coursesql = "OR EXISTS ( + SELECT c.id + FROM {course} c + WHERE c.visible = :visible + AND c.startdate < :current + AND c.id = b.courseid + ) "; + $courseparams = ['visible' => 1, 'current' => time()]; + } - $sql = 'SELECT b.id - FROM {badge} b - WHERE (b.status = :active OR b.status = :activelocked) - AND (b.type = :site ' . $coursesql . ')'; - $badgeparams = [ - 'active' => BADGE_STATUS_ACTIVE, - 'activelocked' => BADGE_STATUS_ACTIVE_LOCKED, - 'site' => BADGE_TYPE_SITE - ]; - $params = array_merge($badgeparams, $courseparams); - $badges = $DB->get_fieldset_sql($sql, $params); + $sql = "SELECT b.id + FROM {badge} b + WHERE (b.status = :active OR b.status = :activelocked) + AND (b.type = :site $coursesql )"; + $badgeparams = [ + 'active' => BADGE_STATUS_ACTIVE, + 'activelocked' => BADGE_STATUS_ACTIVE_LOCKED, + 'site' => BADGE_TYPE_SITE, + ]; + $params = array_merge($badgeparams, $courseparams); + $badges = $DB->get_fieldset_sql($sql, $params); - mtrace('Started reviewing available badges.'); - foreach ($badges as $bid) { + foreach ($badges as $bid) { $task = new badges_adhoc_task(); $task->set_custom_data(['badgeid' => $bid]); manager::queue_adhoc_task($task, true);