Initial import

This commit is contained in:
Admin Nasledstvo
2026-05-01 20:52:04 +03:00
commit ac168868ee
10028 changed files with 2337954 additions and 0 deletions
@@ -0,0 +1,163 @@
<?php
namespace app\widgets;
use app\models\Articles;
use app\models\Expositions;
use app\models\register\Collections;
use app\models\Positions;
class Carousel extends _Base
{
public $type;
public $id;
public $article;
public $width;
public $partner_id;
public function run()
{
switch ($this->type) {
case 'positions_home_page':
return $this->render('carousel/home_page', ['positions' => $this->getPositionsCarousel()]);
case 'positions_partner_home_page':
return $this->render('carousel/home_partner_page', ['articles' => $this->getPartnerPositionsCarousel($this->partner_id)]);
case 'virtual_walk_home_page':
return $this->render('carousel/virtual_walk_home_page', ['positions' => $this->getPositionsCarousel()]);
case 'positions_inner_page':
return $this->render('carousel/inner_page', ['positions' => $this->getPositionsCarousel()]);
case 'more_articles':
return $this->render('carousel/more_articles', ['positions' => $this->getPositionsCarousel()]);
case 'partner_more_articles':
return $this->render('carousel/partner_more_articles', ['positions' => $this->getPartnerMoreArticle($this->partner_id), 'partner_id' => $this->partner_id]);
case 'expositions_home_page':
return $this->render('carousel/expositions_home_page', ['positions' => $this->getSelectedExpositions(true)]);
case 'expositions_partner_home_page':
return $this->render('carousel/expositions_partner_home_page', ['expositions' => $this->getSelectedByPartnerExpositions()]);
case 'positions_inner_page_collections':
return $this->render('carousel/inner_page_collections', ['positions' => $this->getSelectedCollections()]);
case 'positions_inner_page_expositions':
return $this->render('carousel/inner_page_expositions', ['positions' => $this->getSelectedExpositions()]);
case 'article_detail_gallery':
return $this->render('carousel/article_detail_gallery', ['article' => $this->article]);
case 'object_detail_gallery':
return $this->render('carousel/object_detail_gallery', ['article' => $this->article]);
case 'exposition_detail_gallery':
return $this->render('carousel/exposition_detail_gallery', ['article' => $this->article]);
case 'article_detail_gallery_full_width':
return $this->render('carousel/article_detail_gallery_full_width', ['article' => $this->article]);
case 'collection_home_page':
return $this->render('carousel/collection_home_page', ['positions' => $this->getLastCollections()]);
case 'collection_partner_home_page':
return $this->render('carousel/collection_home_page', ['positions' => $this->getLastPartnerCollections()]);
}
}
public function getPositionsCarousel()
{
if ($this->id) {
$positions = Positions::find()
->innerJoinWith('articleModel')
->where(['group_id' => $this->id])
->andWhere(['IS NOT', 'position_article_key', NULL])
->andWhere(['is_active' => 1])
->orderBy(['order_index' => SORT_ASC])
->all();
switch ($this->type) {
case 'positions_home_page':
case 'virtual_walk_home_page':
return $this->reorder($positions);
case 'positions_inner_page':
case 'expositions_home_page':
case 'more_articles':
case 'partner_more_articles':
return $positions;
}
}
return [];
}
public function getPartnerPositionsCarousel($partner_id)
{
if ($this->id) {
$data = Articles::find()->where(['partner_id' => $partner_id, 'partner_page_selected' => 1])
->limit(7)
->all();
return $this->reorder($data);
}
return [];
}
public function getPartnerMoreArticle($partner_id)
{
return Articles::find()
->where(['partner_id' => $partner_id, 'partner_page_selected' => 1])
->all();
}
public function getSelectedCollections()
{
return Collections::find()->where([
'published' => 1,
'active' => 1,
'deleted' => 0,
'is_selected' => 1
])->all();
}
public function getSelectedExpositions($last = null)
{
if (!$last) {
return Expositions::find()->where([
'is_active' => 1,
'is_selected' => 1
])->all();
} else {
return Expositions::find()->where([
'is_active' => 1
])->orderBy(['publish_date' => SORT_DESC])->limit(15)->all();
}
}
public function getSelectedByPartnerExpositions()
{
return Expositions::find()->where([
'on_partner_page' => 1,
'partner_id' => $this->partner_id
])->orderBy(['publish_date' => SORT_DESC])->limit(15)->all();
}
public function getLastCollections()
{
return Collections::find()->where([
'published' => 1
])->orderBy(['added_on' => SORT_DESC])->all();
}
public function getLastPartnerCollections()
{
return Collections::find()->where([
'published' => 1,
'partner_id' => $this->partner_id
])->orderBy(['added_on' => SORT_DESC])->all();
}
public function reorder($positions)
{
$reorderList = [];
$center = ceil(sizeof($positions) / 2);
for ($i = $center; $i < sizeof($positions); $i++) {
$reorderList[] = $positions[$i];
}
for ($i = 0; $i < $center; $i++) {
$reorderList[] = $positions[$i];
}
return $reorderList;
}
}