Merge branch 'MDL-56057_master' of git://github.com/dmonllao/moodle

This commit is contained in:
Eloy Lafuente (stronk7) 2016-10-17 18:42:14 +02:00
commit aa46cb9503
2 changed files with 21 additions and 28 deletions

View file

@ -9700,19 +9700,13 @@ class admin_setting_searchsetupinfo extends admin_setting {
$return = ''; $return = '';
$brtag = html_writer::empty_tag('br'); $brtag = html_writer::empty_tag('br');
// Available search areas.
$searchareas = \core_search\manager::get_search_areas_list(); $searchareas = \core_search\manager::get_search_areas_list();
$anyenabled = false; $anyenabled = !empty(\core_search\manager::get_search_areas_list(true));
$anyindexed = false; $anyindexed = false;
foreach ($searchareas as $areaid => $searcharea) { foreach ($searchareas as $areaid => $searcharea) {
list($componentname, $varname) = $searcharea->get_config_var_name(); list($componentname, $varname) = $searcharea->get_config_var_name();
if (!$anyenabled) { if (get_config($componentname, $varname . '_indexingstart')) {
$anyenabled = get_config($componentname, $varname . '_enabled'); $anyindexed = true;
}
if (!$anyindexed) {
$anyindexed = get_config($componentname, $varname . '_indexingstart');
}
if ($anyenabled && $anyindexed) {
break; break;
} }
} }

View file

@ -198,13 +198,10 @@ class manager {
*/ */
public static function get_search_area($areaid) { public static function get_search_area($areaid) {
// Try both caches, it does not matter where it comes from. // We have them all here.
if (!empty(static::$allsearchareas[$areaid])) { if (!empty(static::$allsearchareas[$areaid])) {
return static::$allsearchareas[$areaid]; return static::$allsearchareas[$areaid];
} }
if (!empty(static::$enabledsearchareas[$areaid])) {
return static::$enabledsearchareas[$areaid];
}
$classname = static::get_area_classname($areaid); $classname = static::get_area_classname($areaid);
@ -224,13 +221,16 @@ class manager {
public static function get_search_areas_list($enabled = false) { public static function get_search_areas_list($enabled = false) {
// Two different arrays, we don't expect these arrays to be big. // Two different arrays, we don't expect these arrays to be big.
if (!$enabled && static::$allsearchareas !== null) { if (static::$allsearchareas !== null) {
return static::$allsearchareas; if (!$enabled) {
} else if ($enabled && static::$enabledsearchareas !== null) { return static::$allsearchareas;
return static::$enabledsearchareas; } else {
return static::$enabledsearchareas;
}
} }
$searchareas = array(); static::$allsearchareas = array();
static::$enabledsearchareas = array();
$plugintypes = \core_component::get_plugin_types(); $plugintypes = \core_component::get_plugin_types();
foreach ($plugintypes as $plugintype => $unused) { foreach ($plugintypes as $plugintype => $unused) {
@ -248,8 +248,10 @@ class manager {
$areaid = static::generate_areaid($componentname, $areaname); $areaid = static::generate_areaid($componentname, $areaname);
$searchclass = new $classname(); $searchclass = new $classname();
if (!$enabled || ($enabled && $searchclass->is_enabled())) {
$searchareas[$areaid] = $searchclass; static::$allsearchareas[$areaid] = $searchclass;
if ($searchclass->is_enabled()) {
static::$enabledsearchareas[$areaid] = $searchclass;
} }
} }
} }
@ -269,20 +271,17 @@ class manager {
$areaid = static::generate_areaid($componentname, $areaname); $areaid = static::generate_areaid($componentname, $areaname);
$searchclass = new $classname(); $searchclass = new $classname();
if (!$enabled || ($enabled && $searchclass->is_enabled())) { static::$allsearchareas[$areaid] = $searchclass;
$searchareas[$areaid] = $searchclass; if ($searchclass->is_enabled()) {
static::$enabledsearchareas[$areaid] = $searchclass;
} }
} }
} }
// Cache results.
if ($enabled) { if ($enabled) {
static::$enabledsearchareas = $searchareas; return static::$enabledsearchareas;
} else {
static::$allsearchareas = $searchareas;
} }
return static::$allsearchareas;
return $searchareas;
} }
/** /**