You've already forked Atomcms-edit
Initial commit
This commit is contained in:
+62
@@ -0,0 +1,62 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user