MDL-68261 report_configlog: Log changes from admin/cli/cfg.php
authorBrendan Heywood <brendan@catalyst-au.net>
Thu, 26 Mar 2020 08:56:16 +0000 (19:56 +1100)
committerBrendan Heywood <brendan@catalyst-au.net>
Tue, 5 May 2020 07:52:27 +0000 (17:52 +1000)
admin/cli/cfg.php
report/configlog/classes/output/report_table.php
report/configlog/lang/en/report_configlog.php

index 7f56b92..35045ca 100644 (file)
@@ -124,7 +124,12 @@ if ($options['unset'] || $options['set'] !== null) {
         cli_error('The configuration variable is hard-set in the config.php, unable to change.', 4);
     }
 
-    set_config($options['name'], $options['set'], $options['component']);
+    $new = $options['set'];
+    $old = get_config($options['component'], $options['name']);
+    if ($new !== $old) {
+        set_config($options['name'], $options['set'], $options['component']);
+        add_to_config_log($options['name'], $old, $new, $options['component']);
+    }
     exit(0);
 }
 
index 5927f78..3909387 100644 (file)
@@ -90,7 +90,7 @@ class report_table extends \table_sql implements \renderable {
         $fields = 'cl.id, cl.timemodified, cl.plugin, cl.name, cl.value, cl.oldvalue, cl.userid, ' . $userfields;
 
         $from = '{config_log} cl
-            JOIN {user} u ON u.id = cl.userid';
+            LEFT JOIN {user} u ON u.id = cl.userid';
 
         // Report search.
         $where = '1=1';
@@ -143,6 +143,24 @@ class report_table extends \table_sql implements \renderable {
         return userdate($row->timemodified);
     }
 
+    /**
+     * Format fullname field
+     *
+     * @param stdClass $row
+     * @return string
+     */
+    public function col_fullname($row) {
+
+        $userid = $row->{$this->useridfield};
+        if (empty($userid)) {
+            // If the user id is empty it must have been set via the
+            // admin/cli/cfg.php script or during the initial install.
+            return get_string('usernone', 'report_configlog');
+        } else {
+            return parent::col_fullname($row);
+        }
+    }
+
     /**
      * Format report plugin field
      *
index 40645fd..643c7b6 100644 (file)
@@ -31,6 +31,7 @@ $string['pluginname'] = 'Config changes';
 $string['setting'] = 'Setting';
 $string['timemodified'] = 'Date';
 $string['user'] = 'User';
+$string['usernone'] = 'CLI or install';
 $string['user_help'] = 'Search by user first name or surname';
 $string['value'] = 'Value';
 $string['value_help'] = 'Search by new or original value of the configuration';