MDL-31989 search: Search API and search engine API
Introducing both APIs in moodle along with: - search_box widget to add a tiny search box - admin settings with setup steps helper - cache for search results - template for a search result - php unit stuff Many thanks to Tomasz Muras, Prateek Sachan and Daniel Neis for their contributions, for starting this development and for pushing for it to be completed. Also thanks to other contributors: Jonathan Harker and eugeneventer.
This commit is contained in:
committed by
Dan Poltawski
parent
95c6aeaf1c
commit
db48207e1a
@@ -0,0 +1,77 @@
|
||||
<?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/>.
|
||||
|
||||
/**
|
||||
* Data indexed event.
|
||||
*
|
||||
* @package core
|
||||
* @copyright 2015 David Monllao - http://www.davidmonllao.com
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace core\event;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
* Event when new data has been indexed.
|
||||
*
|
||||
* @package core
|
||||
* @since Moodle 3.1
|
||||
* @copyright 2015 David Monllao {@link http://www.davidmonllao.com}
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class search_indexed extends base {
|
||||
|
||||
/**
|
||||
* Initialise required event data properties.
|
||||
*/
|
||||
protected function init() {
|
||||
$this->data['crud'] = 'c';
|
||||
$this->data['edulevel'] = self::LEVEL_OTHER;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns localised event name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_name() {
|
||||
return get_string('eventsearchindexed');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns non-localised event description.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_description() {
|
||||
if (!empty($this->userid)) {
|
||||
return "The user with id '{$this->userid}' updated the search engine data";
|
||||
} else {
|
||||
return 'The search engine data has been updated';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns relevant URL.
|
||||
*
|
||||
* @return \moodle_url
|
||||
*/
|
||||
public function get_url() {
|
||||
return new \moodle_url('/search/admin.php');
|
||||
}
|
||||
}
|
||||
@@ -1720,7 +1720,7 @@ class core_plugin_manager {
|
||||
'blog_menu', 'blog_recent', 'blog_tags', 'calendar_month',
|
||||
'calendar_upcoming', 'comments', 'community',
|
||||
'completionstatus', 'course_list', 'course_overview',
|
||||
'course_summary', 'feedback', 'glossary_random', 'html',
|
||||
'course_summary', 'feedback', 'globalsearch', 'glossary_random', 'html',
|
||||
'login', 'mentees', 'messages', 'mnet_hosts', 'myprofile',
|
||||
'navigation', 'news_items', 'online_users', 'participants',
|
||||
'private_files', 'quiz_results', 'recent_activity',
|
||||
@@ -1862,8 +1862,8 @@ class core_plugin_manager {
|
||||
|
||||
'report' => array(
|
||||
'backups', 'completion', 'configlog', 'courseoverview', 'eventlist',
|
||||
'log', 'loglive', 'outline', 'participation', 'progress', 'questioninstances', 'security', 'stats', 'performance',
|
||||
'usersessions',
|
||||
'log', 'loglive', 'outline', 'participation', 'progress', 'questioninstances', 'search',
|
||||
'security', 'stats', 'performance', 'usersessions'
|
||||
),
|
||||
|
||||
'repository' => array(
|
||||
@@ -1873,6 +1873,10 @@ class core_plugin_manager {
|
||||
'wikimedia', 'youtube'
|
||||
),
|
||||
|
||||
'search' => array(
|
||||
'solr'
|
||||
),
|
||||
|
||||
'scormreport' => array(
|
||||
'basic',
|
||||
'interactions',
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
<?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/>.
|
||||
|
||||
/**
|
||||
* Defines classes used for plugin info.
|
||||
*
|
||||
* @package core
|
||||
* @copyright 2015 Daniel Neis
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
namespace core\plugininfo;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
* Class for search plugins
|
||||
*
|
||||
* @package core
|
||||
* @copyright 2015 Daniel Neis
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class search extends base {
|
||||
|
||||
/**
|
||||
* Is uninstall allowed or not.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function is_uninstall_allowed() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the node name used in admin settings menu for this plugin settings (if applicable).
|
||||
*
|
||||
* @return null|string node name or null if plugin does not create settings node (default)
|
||||
*/
|
||||
public function get_settings_section_name() {
|
||||
return 'searchsetting' . $this->name;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user