MDL-65050 core: add question_stats_cleanup_task scheduled task
authorSimey Lameze <simey@moodle.com>
Thu, 28 Mar 2019 08:32:21 +0000 (16:32 +0800)
committerSimey Lameze <simey@moodle.com>
Mon, 1 Apr 2019 04:57:05 +0000 (12:57 +0800)
This commit also removes orphaned question/engine/statisticslib.php

lang/en/admin.php
lib/classes/task/question_stats_cleanup_task.php [new file with mode: 0644]
lib/db/tasks.php
question/engine/statisticslib.php [deleted file]

index d3f95c5..48f4661 100644 (file)
@@ -1244,6 +1244,7 @@ $string['taskplagiarismcron'] = 'Background processing for legacy cron in plagia
 $string['taskportfoliocron'] = 'Background processing for portfolio plugins';
 $string['taskprocessing'] = 'Task processing';
 $string['taskquestioncron'] = 'Background processing for cleaning up the old question previews';
+$string['taskquestionstatscleanupcron'] = 'Background processing for cleaning up the old question statistics cache';
 $string['taskrefreshsystemtokens'] = 'Refresh OAuth tokens for service accounts';
 $string['taskregistrationcron'] = 'Site registration';
 $string['tasksendfailedloginnotifications'] = 'Send failed login notifications';
diff --git a/lib/classes/task/question_stats_cleanup_task.php b/lib/classes/task/question_stats_cleanup_task.php
new file mode 100644 (file)
index 0000000..651cc8d
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Task to cleanup old question statistics cache.
+ *
+ * @package    core
+ * @copyright  2019 Simey Lameze <simey@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+namespace core\task;
+
+defined('MOODLE_INTERNAL') || die();
+
+/**
+ * A task to cleanup old question statistics cache.
+ *
+ * @copyright  2019 Simey Lameze <simey@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class question_stats_cleanup_task extends scheduled_task {
+
+    /**
+     * Get a descriptive name for this task (shown to admins).
+     *
+     * @return string
+     */
+    public function get_name() {
+        return get_string('taskquestionstatscleanupcron', 'admin');
+    }
+
+    /**
+     * Perform the cleanup task.
+     */
+    public function execute() {
+        global $DB;
+
+        mtrace("\n  Cleaning up old question statistics cache records...", '');
+
+        $expiretime = time() - 5 * HOURSECS;
+        $DB->delete_records_select('question_statistics', 'timemodified < ?', [$expiretime]);
+        $responseanlysisids = $DB->get_records_select_menu('question_response_analysis',
+            'timemodified < ?',
+            [$expiretime],
+            'id',
+            'id, id AS id2');
+        $DB->delete_records_list('question_response_analysis', 'id', $responseanlysisids);
+        $DB->delete_records_list('question_response_count', 'analysisid', $responseanlysisids);
+
+        mtrace('done.');
+    }
+}
index 2350af2..85381d4 100644 (file)
@@ -221,6 +221,15 @@ $tasks = array(
         'dayofweek' => '*',
         'month' => '*'
     ),
+    array(
+        'classname' => 'core\task\question_stats_cleanup_task',
+        'blocking' => 0,
+        'minute' => '*',
+        'hour' => '*',
+        'day' => '*',
+        'dayofweek' => '*',
+        'month' => '*'
+    ),
     array(
         'classname' => 'core\task\registration_cron_task',
         'blocking' => 0,
diff --git a/question/engine/statisticslib.php b/question/engine/statisticslib.php
deleted file mode 100644 (file)
index 9538346..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-// This file is part of Moodle - http://moodle.org/
-//
-// Moodle is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Moodle is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
-
-/**
- * Functions common to the question usage statistics code.
- *
- * @package    moodlecore
- * @subpackage questionbank
- * @copyright  2013 The Open University
- * @author     Jamie Pratt <me@jamiep.org>
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-defined('MOODLE_INTERNAL') || die();
-
-/**
- * Question statistics cron code. Deletes cached stats more than a certain age.
- */
-function question_usage_statistics_cron() {
-    global $DB;
-
-    $expiretime = time() - 5 * HOURSECS;
-
-    mtrace("\n  Cleaning up old question statistics cache records...", '');
-
-    $DB->delete_records_select('question_statistics', 'timemodified < ?', array($expiretime));
-    $responseanlysisids = $DB->get_records_select_menu('question_response_analysis',
-                                                           'timemodified < ?',
-                                                           array($expiretime),
-                                                           'id',
-                                                           'id, id AS id2');
-
-    $DB->delete_records_list('question_response_analysis', 'id', $responseanlysisids);
-    $DB->delete_records_list('question_response_count', 'analysisid', $responseanlysisids);
-
-    mtrace('done.');
-    return true;
-}