Begin adding schedule processing jobs.

This commit is contained in:
Dane Everitt 2017-09-16 23:10:00 -05:00
parent c0d7e02481
commit c5f2dfd6f6
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
16 changed files with 626 additions and 49 deletions

View file

@ -24,6 +24,7 @@
namespace Pterodactyl\Services\Schedules;
use Cron\CronExpression;
use Webmozart\Assert\Assert;
use Pterodactyl\Models\Server;
use Illuminate\Database\ConnectionInterface;
@ -83,6 +84,7 @@ class ScheduleCreationService
$server = ($server instanceof Server) ? $server->id : $server;
$data['server_id'] = $server;
$data['next_run_at'] = $this->getCronTimestamp($data);
$this->connection->beginTransaction();
$schedule = $this->repository->create($data);
@ -103,4 +105,22 @@ class ScheduleCreationService
return $schedule;
}
/**
* Return a DateTime object after parsing the cron data provided.
*
* @param array $data
* @return \DateTime
*/
private function getCronTimestamp(array $data)
{
$formattedCron = sprintf('%s %s %s * %s *',
array_get($data, 'cron_minute', '*'),
array_get($data, 'cron_hour', '*'),
array_get($data, 'cron_day_of_month', '*'),
array_get($data, 'cron_day_of_week', '*')
);
return CronExpression::factory($formattedCron)->getNextRunDate();
}
}