MDL-31989 task: Global search indexing task
authorDavid Monllao <davidm@moodle.com>
Wed, 27 Jan 2016 09:54:17 +0000 (17:54 +0800)
committerDan Poltawski <dan@moodle.com>
Tue, 23 Feb 2016 10:47:31 +0000 (10:47 +0000)
lib/classes/task/search_task.php [new file with mode: 0644]
lib/db/tasks.php

diff --git a/lib/classes/task/search_task.php b/lib/classes/task/search_task.php
new file mode 100644 (file)
index 0000000..f22224a
--- /dev/null
@@ -0,0 +1,60 @@
+<?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/>.
+
+/**
+ * A scheduled task for global search.
+ *
+ * @package    core
+ * @copyright  2015 David Monllao {@link http://www.davidmonllao.com}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+namespace core\task;
+
+/**
+ * Runs global search indexing.
+ *
+ * @package    core
+ * @copyright  2015 David Monllao {@link http://www.davidmonllao.com}
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class search_task extends scheduled_task {
+
+    /**
+     * Get a descriptive name for this task (shown to admins).
+     *
+     * @return string
+     */
+    public function get_name() {
+        return get_string('taskglobalsearch', 'admin');
+    }
+
+    /**
+     * Do the job.
+     * Throw exceptions on errors (the job will be retried).
+     */
+    public function execute() {
+        if (!\core_search\manager::is_global_search_enabled()) {
+            return;
+        }
+        $globalsearch = \core_search\manager::instance();
+
+        // Indexing database records for modules + rich documents of forum.
+        $globalsearch->index();
+
+        // Optimize index at last.
+        $globalsearch->optimize_index();
+    }
+}
index 41991f1..8abc3f6 100644 (file)
@@ -284,6 +284,15 @@ $tasks = array(
         'dayofweek' => '*',
         'month' => '*'
     ),
+    array(
+        'classname' => 'core\task\search_task',
+        'blocking' => 0,
+        'minute' => '*/30',
+        'hour' => '*',
+        'day' => '*',
+        'dayofweek' => '*',
+        'month' => '*'
+    ),
     array(
         'classname' => 'core\task\stats_cron_task',
         'blocking' => 0,