Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 26 additions & 2 deletions api/src/org/labkey/api/util/SystemMaintenance.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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("<table>");
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("</table>");
event.setChanges(html.toString());
AuditLogService.get().addEvent(user, event);
}

private final static String SET_NAME = "SystemMaintenance";
Expand All @@ -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<String> enabledTasks, String time)
public static void setProperties(Container container, User user, Set<String> enabledTasks, String time)
{
WritablePropertyMap writableProps = PropertyManager.getWritableProperties(SET_NAME, true);

Expand All @@ -192,6 +204,18 @@ public static void setProperties(Set<String> enabledTasks, String time)

writableProps.save();
setTimer();

StringBuilder html = new StringBuilder("<table>");
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("</table>");
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
Expand Down
23 changes: 17 additions & 6 deletions core/src/org/labkey/core/admin/AdminController.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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("<table>");
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("</table>");
event.setChanges(html.toString());
AuditLogService.get().addEvent(getUser(), event);

return true;
}
}

Expand Down