From 987d112340b072e9b6c05fdff4f0b5f21ff848fe Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Thu, 17 Jan 2019 08:02:24 +0800 Subject: [PATCH] MDL-49399 task: Remove hardcoded LIMIT --- lib/classes/task/database_logger.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/classes/task/database_logger.php b/lib/classes/task/database_logger.php index 65af0ea3c65..4aa48853fbd 100644 --- a/lib/classes/task/database_logger.php +++ b/lib/classes/task/database_logger.php @@ -128,21 +128,22 @@ class database_logger implements task_logger { $classes = $DB->get_fieldset_sql($sql, $params); foreach ($classes as $classname) { + $notinsql = ""; $params = [ 'classname' => $classname, ]; $retaincount = (int) $CFG->task_logretainruns; - $keeplogs = $DB->get_fieldset_sql( - "SELECT id FROM {task_log} WHERE classname = :classname ORDER BY timestart DESC LIMIT {$retaincount}", - $params - ); + if ($retaincount) { + $keeplogs = $DB->get_records('task_log', [ + 'classname' => $classname, + ], 'timestart DESC', 'id', 0, $retaincount); - $notinsql = ""; - if ($keeplogs) { - list($notinsql, $params) = $DB->get_in_or_equal($keeplogs, SQL_PARAMS_NAMED, 'p', false); - $params['classname'] = $classname; - $notinsql = " AND id {$notinsql}"; + if ($keeplogs) { + list($notinsql, $params) = $DB->get_in_or_equal(array_keys($keeplogs), SQL_PARAMS_NAMED, 'p', false); + $params['classname'] = $classname; + $notinsql = " AND id {$notinsql}"; + } } $logids = $DB->get_fieldset_select('task_log', 'id', "classname = :classname {$notinsql}", $params);