include/exclude list is ignored if start or end date is given
The "doMaintenance" function ignores the "include" and "exclude" modes if a start or end date has been specified. The end date is also ignored if a start date was specified.
A suggested change:
private function doMaintenance(Site $site, int $requestedPageUid): bool { $configuration = $site->getConfiguration();
$active = $configuration['justmaintain_active'] && $configuration['justmaintain_maintenance_link'];
$maintenance = true;
$maintenanceMode = $configuration['justmaintain_mode'];
if ($maintenanceMode !== 'all' && !empty($configuration['justmaintain_pid'])) {
$pageInMaintenanceList = array_search(
$requestedPageUid,
explode(',', (string)$configuration['justmaintain_pid'])
) !== false;
$maintenance = ($maintenanceMode === 'include' && $pageInMaintenanceList) || ($maintenanceMode === 'exclude' && !$pageInMaintenanceList);
}
$now = time();
$isAfterStart = $configuration['justmaintain_start'] ? $configuration['justmaintain_start'] < $now : true;
$isBeforeEnd = $configuration['justmaintain_end'] ? $configuration['justmaintain_end'] > $now : true;
return $active && $maintenance && $isAfterStart && $isBeforeEnd;
}