*/ class ModelStream extends AbstractModel { public int $streamId; public string $name; /** * @return ModelNews[] */ public function getNews(): array { $res = $this->sqlite->query('SELECT * FROM priority o JOIN news n ON o.news_id=n.news_id WHERE stream_id=? ', $this->streamId); $ars = $this->sqlite->res2arr($res); $news = []; $service = new ServiceNews($this->sqlite); foreach ($ars as $ar) { $priority = ModelPriority::createFromArray($this->sqlite, $ar); $feed = $service->getById($ar['news_id']); $feed->setPriority($priority); $news[] = $feed; } return $this->sortNews($news); } private function sortNews(array $news): array { usort($news, function (ModelNews $a, ModelNews $b) { if ($a->getPriority()->getPriorityValue() > $b->getPriority()->getPriorityValue()) { return -1; } elseif ($a->getPriority()->getPriorityValue() < $b->getPriority()->getPriorityValue()) { return 1; } else { return strcmp($b->newsDate, $a->newsDate); } }); return $news; } /** * @return ModelStream[] */ public function getAllParentDependence(): array { $streams = []; $res = $this->sqlite->query('SELECT * FROM dependence WHERE parent=?', $this->streamId); $service = new ServiceStream($this->sqlite); foreach ($this->sqlite->res2arr($res) as $row) { $streams[] = $service->getById($row['child']); } return $streams; } /** * @return ModelStream[] */ public function getAllChildDependence(): array { $streams = []; $res = $this->sqlite->query('SELECT * FROM dependence WHERE child=?', $this->streamId); $service = new ServiceStream($this->sqlite); foreach ($this->sqlite->res2arr($res) as $row) { $streams[] = $service->getById($row['parent']); } return $streams; } public static function createFromArray(helper_plugin_sqlite $helperPluginSqlite, array $data): self { $model = new self($helperPluginSqlite); $model->name = $data['name']; $model->streamId = $data['stream_id']; return $model; } }