109 lines
4.5 KiB
PHP
109 lines
4.5 KiB
PHP
<?php
|
|
|
|
|
|
use app\models\Expositions;
|
|
use app\models\register\Collections;
|
|
use app\models\RegisterObjects;
|
|
use app\models\UserFavorites;
|
|
use app\models\Articles;
|
|
|
|
header('Content-type: application/json');
|
|
|
|
|
|
$user = \app\services\Auth::getUserByToken();
|
|
|
|
if($user) {
|
|
|
|
$lg = Yii::$app->language;
|
|
|
|
$per_page = 10;
|
|
|
|
if (!empty($_GET['type'])) {
|
|
|
|
$page = $_GET['page'] ?? 1;
|
|
|
|
$fav = UserFavorites::find()->where(['user_id' => $user->id, 'table' => $_GET['type']])->all();
|
|
$ids = [];
|
|
|
|
foreach ($fav as $f)
|
|
$ids[] = $f->fid;
|
|
|
|
switch ($_GET['type']):
|
|
case 'collections':
|
|
$data = [];
|
|
$models = Collections::find()->where(['IN', 'id', $ids]);
|
|
$count = $models->count();
|
|
$models = $models->offset($per_page * $page - $per_page)->limit($per_page);
|
|
foreach ($models->all() as $dbModel) {
|
|
$model = new \stdClass();
|
|
$model->title = $lg == 'en' ? $dbModel->name_en ?? $dbModel->name : $dbModel->name;
|
|
$model->type = 'collections';
|
|
$model->path = '/tabs/search/collection';
|
|
$model->img = $dbModel->getImg(\Yii::$app->params['portal'] . '/_public/images/empty-169.png');
|
|
$model->id = $dbModel->id;
|
|
$data[] = $model;
|
|
}
|
|
echo json_encode(['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
|
|
exit;
|
|
|
|
case 'expositions':
|
|
$data = [];
|
|
$models = Expositions::find()->where(['IN', 'id', $ids]);
|
|
$count = $models->count();
|
|
$models = $models->offset($per_page * $page - $per_page)->limit($per_page);
|
|
foreach ($models->all() as $dbModel) {
|
|
$model = new \stdClass();
|
|
$model->title = $lg == 'en' ? $dbModel->ts_en_name ?? $dbModel->name : $dbModel->name;
|
|
$model->type = 'expositions';
|
|
$model->path = '/tabs/search/exposition';
|
|
$model->img = $dbModel->getImg();
|
|
$model->id = $dbModel->id;
|
|
$data[] = $model;
|
|
}
|
|
echo json_encode(['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
|
|
exit;
|
|
|
|
case 'register_objects':
|
|
$data = [];
|
|
$models = RegisterObjects::find()->where(['lib_type' => 1])->andWhere(['IN', 'id', $ids]);
|
|
$count = $models->count();
|
|
$models = $models->offset($per_page * $page - $per_page)->limit($per_page);
|
|
foreach ($models->all() as $dbModel) {
|
|
$model = new \stdClass();
|
|
$model->title = $lg == 'en' ? $dbModel->ts_en_name ?? $dbModel->name : $dbModel->name;
|
|
$model->type = 'register_objects';
|
|
$model->path = '/tabs/search/object';
|
|
$model->img = $dbModel->getImg(\Yii::$app->params['portal'] . '/_public/images/empty-169.png');
|
|
$model->id = $dbModel->id;
|
|
$data[] = $model;
|
|
}
|
|
echo json_encode(['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
|
|
exit;
|
|
|
|
|
|
case 'articles':
|
|
$data = [];
|
|
$models = Articles::find()->andWhere(['IN', 'id', $ids]);
|
|
$count = $models->count();
|
|
$models = $models->offset($per_page * $page - $per_page)->limit($per_page);
|
|
foreach ($models->all() as $dbModel) {
|
|
$model = new \stdClass();
|
|
$model->title = $lg == 'en' ? $dbModel->title_en ?? $dbModel->title : $dbModel->title;
|
|
$model->type = $dbModel->art_table;
|
|
$model->path = '/tabs/articles/' . $dbModel->art_table;
|
|
$model->img = ($dbModel->getArticle()->image('16:11') ? $dbModel->getArticle()->image('16:11') : \Yii::$app->params['portal'] . '/_public/images/empty-169.png');
|
|
$model->id = $dbModel->id;
|
|
$data[] = $model;
|
|
}
|
|
echo json_encode(['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
|
|
exit;
|
|
|
|
endswitch;
|
|
}
|
|
}
|
|
|
|
echo json_encode(['error' => 1, 'message' => 'Permission denied']);
|
|
exit;
|
|
|
|
/* @var $this \yii\web\View */
|