2023-12-13 10:19:21 -05:00
< ? php
declare ( strict_types = 1 );
/**
2024-06-03 04:23:34 -04:00
* SPDX - FileCopyrightText : 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX - License - Identifier : AGPL - 3.0 - or - later
2023-12-13 10:19:21 -05:00
*/
namespace OCA\Settings\SetupChecks ;
use OCP\IConfig ;
use OCP\IL10N ;
use OCP\IURLGenerator ;
use OCP\SetupCheck\ISetupCheck ;
use OCP\SetupCheck\SetupResult ;
class MaintenanceWindowStart implements ISetupCheck {
public function __construct (
private IL10N $l10n ,
private IURLGenerator $urlGenerator ,
private IConfig $config ,
) {
}
public function getCategory () : string {
return 'system' ;
}
public function getName () : string {
return $this -> l10n -> t ( 'Maintenance window start' );
}
public function run () : SetupResult {
$configValue = $this -> config -> getSystemValue ( 'maintenance_window_start' , null );
if ( $configValue === null ) {
return SetupResult :: warning (
$this -> l10n -> t ( 'Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks.' ),
$this -> urlGenerator -> linkToDocs ( 'admin-background-jobs' )
);
}
2024-08-23 09:10:27 -04:00
$startValue = ( int ) $configValue ;
2023-12-13 10:19:21 -05:00
$endValue = ( $startValue + 6 ) % 24 ;
return SetupResult :: success (
str_replace (
[ '{start}' , '{end}' ],
[ $startValue , $endValue ],
$this -> l10n -> t ( 'Maintenance window to execute heavy background jobs is between {start}:00 UTC and {end}:00 UTC' )
)
);
}
}