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(); } }