diff --git a/admin/settings/analytics.php b/admin/settings/analytics.php index a7222444e5bde3c3111a52abea4ee82f039f39b9..30b6a2260c479885be3cd5bb20fec6cbd1f01be5 100644 --- a/admin/settings/analytics.php +++ b/admin/settings/analytics.php @@ -131,15 +131,10 @@ if ($hassiteconfig && \core_analytics\manager::is_analytics_enabled()) { $timesplittingdefaults, $timesplittingoptions) ); - // Predictions processor output dir. - $defaultmodeloutputdir = rtrim($CFG->dataroot, '/') . DIRECTORY_SEPARATOR . 'models'; - if (empty(get_config('analytics', 'modeloutputdir')) && !file_exists($defaultmodeloutputdir) && - is_writable($defaultmodeloutputdir)) { - // Automatically create the dir for them so users don't see the invalid value red cross. - mkdir($defaultmodeloutputdir, $CFG->directorypermissions, true); - } + // Predictions processor output dir - specify default in setting description (used if left blank). + $defaultmodeloutputdir = \core_analytics\model::default_output_dir(); $settings->add(new admin_setting_configdirectory('analytics/modeloutputdir', new lang_string('modeloutputdir', 'analytics'), - new lang_string('modeloutputdirinfo', 'analytics'), $defaultmodeloutputdir)); + new lang_string('modeloutputdirwithdefaultinfo', 'analytics', $defaultmodeloutputdir), '')); // Disable web interface evaluation and get predictions. $settings->add(new admin_setting_configcheckbox('analytics/onlycli', new lang_string('onlycli', 'analytics'), diff --git a/analytics/classes/model.php b/analytics/classes/model.php index 5385c29fc3b643ad288a0edf7c2962aff32c5662..5fc63d4b1667c79b04e69a8e45e6953148eeab11 100644 --- a/analytics/classes/model.php +++ b/analytics/classes/model.php @@ -1492,6 +1492,17 @@ class model { $prediction->get_prediction_data()->contextid, $prediction->get_sample_data()); } + /** + * Returns the default output directory for prediction processors + * + * @return string + */ + public static function default_output_dir(): string { + global $CFG; + + return $CFG->dataroot . DIRECTORY_SEPARATOR . 'models'; + } + /** * Returns the output directory for prediction processors. * @@ -1506,8 +1517,6 @@ class model { * @return string */ public function get_output_dir($subdirs = array(), $onlymodelid = false) { - global $CFG; - $subdirstr = ''; foreach ($subdirs as $subdir) { $subdirstr .= DIRECTORY_SEPARATOR . $subdir; @@ -1516,7 +1525,7 @@ class model { $outputdir = get_config('analytics', 'modeloutputdir'); if (empty($outputdir)) { // Apply default value. - $outputdir = rtrim($CFG->dataroot, '/') . DIRECTORY_SEPARATOR . 'models'; + $outputdir = self::default_output_dir(); } // Append model id. diff --git a/lang/en/analytics.php b/lang/en/analytics.php index 17f165464df76491ba875432bed0b0de7bed7dc7..0fc4a3cc6538e97e4b320aabc4c527f8e7da2b90 100644 --- a/lang/en/analytics.php +++ b/lang/en/analytics.php @@ -94,6 +94,7 @@ $string['modeinstructionblendedhybrid'] = 'Blended or hybrid'; $string['modeinstructionfullyonline'] = 'Fully online'; $string['modeloutputdir'] = 'Models output directory'; $string['modeloutputdirinfo'] = 'Directory where prediction processors store all evaluation info. Useful for debugging and research.'; +$string['modeloutputdirwithdefaultinfo'] = 'Directory where prediction processors store all evaluation info. Useful for debugging and research. If empty, then \'{$a}\' will be used as default.'; $string['modeltimelimit'] = 'Analysis time limit per model'; $string['modeltimelimitinfo'] = 'This setting limits the time each model spends analysing the site contents.'; $string['neutral'] = 'Neutral'; diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 5efbefe35d59e9bfdc438acfafe564abb5c38667..5bce1188381a811086610858a3c2877b3baa03db 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2622,5 +2622,16 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2020061502.10); } + if ($oldversion < 2020061502.12) { + // Reset analytics model output dir if it's the default value. + $modeloutputdir = get_config('analytics', 'modeloutputdir'); + if (strcasecmp($modeloutputdir, $CFG->dataroot . DIRECTORY_SEPARATOR . 'models') == 0) { + set_config('modeloutputdir', '', 'analytics'); + } + + // Main savepoint reached. + upgrade_main_savepoint(true, 2020061502.12); + } + return true; } diff --git a/version.php b/version.php index 185a5bf8fe5892d08ec1f71e894560fe0e4352e4..2d33a63131e9f02cf97af36ee26abd5c71bafa86 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2020061502.11; // 20200615 = branching date YYYYMMDD - do not modify! +$version = 2020061502.12; // 20200615 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes. $release = '3.9.2+ (Build: 20201021)'; // Human-friendly version name