MDL-57791 analytics: Set logstore during install

get_analytics_logstore updated to fix an edge case.
This commit is contained in:
David Monllao
2017-07-25 11:05:03 +02:00
parent 466f683aa6
commit 85e50ba405
2 changed files with 19 additions and 3 deletions
+14
View File
@@ -56,6 +56,20 @@ if ($hassiteconfig) {
}
$options[$plugin] = $reader->get_name();
}
if (empty($defaultreader)) {
// We fall here during initial site installation because log stores are not
// enabled until admin/tool/log/db/install.php is executed and get_readers
// return nothing.
if ($enabledlogstores = get_config('tool_log', 'enabled_stores')) {
$enabledlogstores = explode(',', $enabledlogstores);
$defaultreader = reset($enabledlogstores);
// No need to set the correct name, just the value, this will not be displayed.
$options[$defaultreader] = $defaultreader;
}
}
$settings->add(new admin_setting_configselect('analytics/logstore',
new lang_string('analyticslogstore', 'analytics'), new lang_string('analyticslogstore_help', 'analytics'),
$defaultreader, $options));
+5 -3
View File
@@ -314,10 +314,12 @@ class manager {
public static function get_analytics_logstore() {
$readers = get_log_manager()->get_readers('core\log\sql_reader');
$analyticsstore = get_config('analytics', 'logstore');
if (empty($analyticsstore)) {
$logstore = reset($readers);
} else if (!empty($readers[$analyticsstore])) {
if (!empty($analyticsstore) && !empty($readers[$analyticsstore])) {
$logstore = $readers[$analyticsstore];
} else if (empty($analyticsstore) && !empty($readers)) {
// The first one, it is the same default than in settings.
$logstore = reset($readers);
} else if (!empty($readers)) {
$logstore = reset($readers);
debugging('The selected log store for analytics is not available anymore. Using "' .