You've already forked Atomcms-edit
63 lines
1.9 KiB
PHP
Executable File
63 lines
1.9 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Models\Miscellaneous\WebsiteSetting;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Console\Command;
|
|
|
|
class CheckScheduledMaintenance extends Command
|
|
{
|
|
#[\Override]
|
|
protected $signature = 'maintenance:check-scheduled';
|
|
|
|
#[\Override]
|
|
protected $description = 'Check and activate scheduled maintenance mode';
|
|
|
|
public function handle(): int
|
|
{
|
|
$scheduledAt = setting('maintenance_scheduled_at');
|
|
$durationSetting = setting('maintenance_duration_minutes');
|
|
$duration = (int) (is_string($durationSetting) ? $durationSetting : '30');
|
|
$isEnabledSetting = setting('maintenance_enabled');
|
|
$isEnabled = $isEnabledSetting === '1';
|
|
|
|
if (! $scheduledAt) {
|
|
$this->info('No maintenance scheduled');
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
|
|
$scheduledAtString = is_scalar($scheduledAt) ? (string) $scheduledAt : '';
|
|
$startTime = Carbon::parse($scheduledAtString);
|
|
$endTime = $startTime->copy()->addMinutes($duration);
|
|
$now = Carbon::now();
|
|
|
|
if ($now->between($startTime, $endTime) && ! $isEnabled) {
|
|
WebsiteSetting::updateOrCreate(
|
|
['key' => 'maintenance_enabled'],
|
|
['value' => '1'],
|
|
);
|
|
|
|
$this->info("Maintenance mode enabled (scheduled for {$startTime->format('Y-m-d H:i')})");
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
|
|
if ($now->greaterThan($endTime) && $isEnabled) {
|
|
WebsiteSetting::where('key', 'maintenance_enabled')->delete();
|
|
|
|
$this->info("Maintenance mode disabled (schedule ended at {$endTime->format('Y-m-d H:i')})");
|
|
|
|
WebsiteSetting::where('key', 'maintenance_scheduled_at')->delete();
|
|
WebsiteSetting::where('key', 'maintenance_duration_minutes')->delete();
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
|
|
$this->info('No action needed');
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
}
|