diff --git a/api/src/org/labkey/api/util/SystemMaintenance.java b/api/src/org/labkey/api/util/SystemMaintenance.java
index 2cb1d59aa4d..9f489c16711 100644
--- a/api/src/org/labkey/api/util/SystemMaintenance.java
+++ b/api/src/org/labkey/api/util/SystemMaintenance.java
@@ -20,9 +20,14 @@
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.labkey.api.audit.AuditLogService;
+import org.labkey.api.audit.provider.SiteSettingsAuditProvider;
+import org.labkey.api.data.Container;
import org.labkey.api.data.PropertyManager;
import org.labkey.api.data.PropertyManager.WritablePropertyMap;
import org.labkey.api.module.ModuleLoader;
+import org.labkey.api.security.User;
+import org.labkey.api.settings.AbstractWriteableSettingsGroup;
import org.labkey.api.settings.AdminConsole;
import org.labkey.api.settings.StartupProperty;
import org.labkey.api.util.logging.LogHelper;
@@ -158,9 +163,16 @@ public static boolean isTimerDisabled()
return _timerDisabled;
}
- public static void setTimeDisabled(boolean disable)
+ public static void setTimeDisabled(Container container, User user, boolean disable)
{
_timerDisabled = disable;
+
+ StringBuilder html = new StringBuilder("
");
+ SiteSettingsAuditProvider.SiteSettingsAuditEvent event = new SiteSettingsAuditProvider.SiteSettingsAuditEvent(container, "The system maintenance setting was changed (see details).");
+ AbstractWriteableSettingsGroup.appendDiffRow(html, "Timer Enabled", null, Boolean.toString(!disable));
+ html.append("
");
+ event.setChanges(html.toString());
+ AuditLogService.get().addEvent(user, event);
}
private final static String SET_NAME = "SystemMaintenance";
@@ -176,7 +188,7 @@ public static SystemMaintenanceProperties getProperties()
}
// For all tasks that can be disabled, set the enabledTasks to enabled and set the rest to disabled
- public static void setProperties(Set enabledTasks, String time)
+ public static void setProperties(Container container, User user, Set enabledTasks, String time)
{
WritablePropertyMap writableProps = PropertyManager.getWritableProperties(SET_NAME, true);
@@ -192,6 +204,18 @@ public static void setProperties(Set enabledTasks, String time)
writableProps.save();
setTimer();
+
+ StringBuilder html = new StringBuilder("");
+ SiteSettingsAuditProvider.SiteSettingsAuditEvent event = new SiteSettingsAuditProvider.SiteSettingsAuditEvent(container,
+ "The system maintenance tasks were changed (see details).");
+ AbstractWriteableSettingsGroup.appendDiffRow(html, TIME_PROPERTY_NAME, null, time);
+ for (String task : enabled)
+ AbstractWriteableSettingsGroup.appendDiffRow(html, task, null, "ENABLED");
+ for (String task : disabled)
+ AbstractWriteableSettingsGroup.appendDiffRow(html, task, null, "DISABLED");
+ html.append("
");
+ event.setChanges(html.toString());
+ AuditLogService.get().addEvent(user, event);
}
// Enable all tasksToEnable, disable all tasksToDisable, and don't modify the enabled property for all other tasks
diff --git a/core/src/org/labkey/core/admin/AdminController.java b/core/src/org/labkey/core/admin/AdminController.java
index fb127f42277..8b075366513 100644
--- a/core/src/org/labkey/core/admin/AdminController.java
+++ b/core/src/org/labkey/core/admin/AdminController.java
@@ -94,6 +94,7 @@
import org.labkey.api.audit.AuditLogService;
import org.labkey.api.audit.AuditTypeEvent;
import org.labkey.api.audit.provider.ContainerAuditProvider;
+import org.labkey.api.audit.provider.SiteSettingsAuditProvider;
import org.labkey.api.cache.CacheManager;
import org.labkey.api.cache.CacheStats;
import org.labkey.api.cache.TrackingCache;
@@ -240,6 +241,7 @@
import org.labkey.api.security.roles.RoleManager;
import org.labkey.api.security.roles.SharedViewEditorRole;
import org.labkey.api.services.ServiceRegistry;
+import org.labkey.api.settings.AbstractWriteableSettingsGroup;
import org.labkey.api.settings.AdminConsole;
import org.labkey.api.settings.AppProps;
import org.labkey.api.settings.ConceptURIProperties;
@@ -3604,8 +3606,8 @@ public ModelAndView getView(ConfigureSystemMaintenanceForm form, boolean reshow,
@Override
public boolean handlePost(ConfigureSystemMaintenanceForm form, BindException errors)
{
- SystemMaintenance.setTimeDisabled(!form.isEnableSystemMaintenance());
- SystemMaintenance.setProperties(form.getEnable(), form.getMaintenanceTime());
+ SystemMaintenance.setTimeDisabled(getContainer(), getUser(), !form.isEnableSystemMaintenance());
+ SystemMaintenance.setProperties(getContainer(), getUser(), form.getEnable(), form.getMaintenanceTime());
return true;
}
@@ -4961,17 +4963,26 @@ public void validateCommand(MissingValuesForm form, Errors errors)
@Override
public boolean handlePost(MissingValuesForm form, BindException errors)
{
+ Container c = getContainer();
+ SiteSettingsAuditProvider.SiteSettingsAuditEvent event = new SiteSettingsAuditProvider.SiteSettingsAuditEvent(c, "The missing value indicators were changed (see details).");
+ StringBuilder html = new StringBuilder("");
if (form.isInheritMvIndicators())
{
- MvUtil.inheritMvIndicators(getContainer());
- return true;
+ MvUtil.inheritMvIndicators(c);
+ AbstractWriteableSettingsGroup.appendDiffRow(html, "Inherit settings", null, "TRUE");
}
else
{
// Javascript should have enforced any constraints
- MvUtil.assignMvIndicators(getContainer(), form.getMvIndicators(), form.getMvLabels());
- return true;
+ MvUtil.assignMvIndicators(c, form.getMvIndicators(), form.getMvLabels());
+ for (int i=0; i < form.getMvIndicators().length; i++)
+ AbstractWriteableSettingsGroup.appendDiffRow(html, form.getMvIndicators()[i], null, form.getMvLabels()[i]);
}
+ html.append("
");
+ event.setChanges(html.toString());
+ AuditLogService.get().addEvent(getUser(), event);
+
+ return true;
}
}