61 lines
1.7 KiB
PHP
61 lines
1.7 KiB
PHP
<?php
|
|
namespace YTKNS;
|
|
|
|
final class ZoneTask {
|
|
public function getZoneId(): int {
|
|
return $this->zone_id ?? 0;
|
|
}
|
|
public function getZone(): Zone {
|
|
return Zone::byId($this->getZoneId());
|
|
}
|
|
|
|
public function getName(): string {
|
|
return $this->task_name ?? '';
|
|
}
|
|
|
|
public function getParams(): array {
|
|
if(empty($this->task_params))
|
|
return [];
|
|
return unserialize($this->task_params);
|
|
}
|
|
|
|
public function delete(): void {
|
|
$deleteTask = DB::prepare('
|
|
DELETE FROM `ytkns_zones_tasks`
|
|
WHERE `zone_id` = :zone
|
|
AND `task_name` = :task
|
|
');
|
|
$deleteTask->bindValue('zone', $this->getZoneId());
|
|
$deleteTask->bindValue('task', $this->getName());
|
|
$deleteTask->execute();
|
|
}
|
|
|
|
public static function queue(): array {
|
|
$getTasks = DB::prepare('
|
|
SELECT `zone_id`, `task_name`, `task_params`
|
|
FROM `ytkns_zones_tasks`
|
|
');
|
|
$getTasks->execute();
|
|
$tasks = [];
|
|
|
|
while($task = $getTasks->fetchObject(self::class))
|
|
$tasks[] = $task;
|
|
|
|
return $tasks;
|
|
}
|
|
|
|
public static function enqueue(Zone $zone, string $name, array $params = []): void {
|
|
$enqueue = DB::prepare('
|
|
REPLACE INTO `ytkns_zones_tasks` (
|
|
`zone_id`, `task_name`, `task_params`
|
|
) VALUES (
|
|
:zone, :task, :params
|
|
)
|
|
');
|
|
$enqueue->bindValue('zone', $zone->getId());
|
|
$enqueue->bindValue('task', $name);
|
|
$enqueue->bindValue('params', serialize(array_values($params)));
|
|
$enqueue->execute();
|
|
}
|
|
}
|