misc_pterodactyl-panel/app/Console/Commands/Schedule/ProcessRunnableCommand.php

87 lines
2.5 KiB
PHP
Raw Normal View History

2017-09-17 04:10:00 +00:00
<?php
2017-09-26 02:43:01 +00:00
/**
2017-09-17 04:10:00 +00:00
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
*
2017-09-26 02:43:01 +00:00
* This software is licensed under the terms of the MIT license.
* https://opensource.org/licenses/MIT
2017-09-17 04:10:00 +00:00
*/
namespace Pterodactyl\Console\Commands\Schedule;
2018-09-01 03:52:15 +00:00
use Cake\Chronos\Chronos;
2017-09-17 04:10:00 +00:00
use Illuminate\Console\Command;
use Illuminate\Support\Collection;
use Pterodactyl\Services\Schedules\ProcessScheduleService;
use Pterodactyl\Contracts\Repository\ScheduleRepositoryInterface;
class ProcessRunnableCommand extends Command
{
/**
* @var string
*/
protected $description = 'Process schedules in the database and determine which are ready to run.';
/**
* @var \Pterodactyl\Services\Schedules\ProcessScheduleService
*/
protected $processScheduleService;
/**
* @var \Pterodactyl\Contracts\Repository\ScheduleRepositoryInterface
*/
protected $repository;
/**
* @var string
*/
protected $signature = 'p:schedule:process';
/**
* ProcessRunnableCommand constructor.
*
2019-09-06 04:32:57 +00:00
* @param \Pterodactyl\Services\Schedules\ProcessScheduleService $processScheduleService
2017-09-17 04:10:00 +00:00
* @param \Pterodactyl\Contracts\Repository\ScheduleRepositoryInterface $repository
*/
2018-09-01 03:52:15 +00:00
public function __construct(ProcessScheduleService $processScheduleService, ScheduleRepositoryInterface $repository)
{
2017-09-17 04:10:00 +00:00
parent::__construct();
$this->processScheduleService = $processScheduleService;
$this->repository = $repository;
}
/**
* Handle command execution.
*/
public function handle()
{
2018-09-01 03:52:15 +00:00
$schedules = $this->repository->getSchedulesToProcess(Chronos::now()->toAtomString());
if ($schedules->count() < 1) {
$this->line('There are no scheduled tasks for servers that need to be run.');
return;
}
2017-09-17 04:10:00 +00:00
$bar = $this->output->createProgressBar(count($schedules));
$schedules->each(function ($schedule) use ($bar) {
if ($schedule->tasks instanceof Collection && count($schedule->tasks) > 0) {
$this->processScheduleService->handle($schedule);
2017-09-17 04:10:00 +00:00
if ($this->input->isInteractive()) {
$bar->clear();
$this->line(trans('command/messages.schedule.output_line', [
'schedule' => $schedule->name,
'hash' => $schedule->hashid,
]));
}
2017-09-17 04:10:00 +00:00
}
$bar->advance();
$bar->display();
});
2017-09-17 04:10:00 +00:00
$this->line('');
}
}