MDL-79091 core_badges: refactor bades cron task
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user