Falling back to path within $CFG->dataroot/models.
$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'),
$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.
*
* @return string
*/
public function get_output_dir($subdirs = array(), $onlymodelid = false) {
- global $CFG;
-
$subdirstr = '';
foreach ($subdirs as $subdir) {
$subdirstr .= DIRECTORY_SEPARATOR . $subdir;
$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.
$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 \'<strong>{$a}</strong>\' 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';
$string['viewinsightdetails'] = 'View insight details';
$string['viewprediction'] = 'View prediction details';
$string['washelpful'] = 'Was this helpful?';
+
+// Deprecated since Moodle 3.10.
+$string['modeloutputdirinfo'] = 'Directory where prediction processors store all evaluation info. Useful for debugging and research.';
userfilterplaceholder,core
sitebackpackverify,core_badges
filetypesnotwhitelisted,core_form
+modeloutputdirinfo,core_analytics
upgrade_main_savepoint(true, 2021052500.27);
}
+ if ($oldversion < 2021052500.29) {
+ // 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, 2021052500.29);
+ }
+
return true;
}
defined('MOODLE_INTERNAL') || die();
-$version = 2021052500.28; // YYYYMMDD = weekly release date of this DEV branch.
+$version = 2021052500.29; // YYYYMMDD = weekly release date of this DEV branch.
// RR = release increments - 00 in DEV branches.
// .XX = incremental changes.
$release = '4.0dev (Build: 20201021)'; // Human-friendly version name