hasMany(Positions::class, ['group_id' => 'id'])->orderBy(['order_index' => SORT_ASC])->all(); } public function getPositionsCount() { return $this->hasMany(Positions::class, ['group_id' => 'id'])->count(); } public function getArticleModel() { return $this->hasOne(Articles::class, ['key' => 'position_article_key']); } public function getArticle() { if ($this->position_article_key) { $articleModel = $this->articleModel; $table = explode('_', $this->position_article_key); switch ($table[0]) { case 'news': $src = $articleModel->news->getSrcOfSingleImage('title_news_image', 'thumb'); return $this->articleTableRowPreview( 'Новина: (№ ' . $articleModel->news->id . ')', $articleModel->news->title, $src ); case 'events': $src = $articleModel->events->getSrcOfSingleImage('title_event_image', 'thumb'); return $this->articleTableRowPreview( 'Събитие: (№ ' . $articleModel->events->id . ')', $articleModel->events->title, $src ); case 'campaigns': $src = $articleModel->campaigns->getSrcOfSingleImage('title_campaigns_image', 'thumb'); return $this->articleTableRowPreview( 'Кампания: (№ ' . $articleModel->campaigns->id . ')', $articleModel->campaigns->title, $src ); } } return 'Няма закачен материал'; } private function articleTableRowPreview($type, $title, $src_img) { $html = '
'; if ($src_img) { $html .= ''; } $html .= '
'; $html .= '
' . $type . '
'; $html .= '
' . $title . '
'; $html .= '
'; $html .= '
'; return $html; } public function getNextOrderIndex() { $size = sizeof($this->positions); $last = $this->positions[$size - 1]; return $last->order_index + 1; } }