89 lines
3.9 KiB
PHP
89 lines
3.9 KiB
PHP
<?php
|
|
|
|
use app\models\Articles;
|
|
use app\services\Formatter;
|
|
use app\services\ViewReg;
|
|
|
|
$data = [];
|
|
if (!empty($_GET['id'])) {
|
|
$lg = \Yii::$app->language;
|
|
|
|
$condition = [];
|
|
//$condition['is_active'] = 1;
|
|
$condition['id'] = $_GET['id'];
|
|
$articles = Articles::find()->where($condition);
|
|
|
|
$article = $articles->one();
|
|
|
|
$favorite = false;
|
|
$user = \app\services\Auth::getUserByToken();
|
|
if ($user) {
|
|
$favoriteExists = \app\models\UserFavorites::find()->where(['user_id' => $user->id, 'table' => 'articles', 'fid' => $_GET['id']])->exists();
|
|
if ($favoriteExists)
|
|
$favorite = true;
|
|
}
|
|
|
|
if ($article && $article->article) {
|
|
$model = new \stdClass();
|
|
$model->title = $lg == 'en' ? $article->title_en ?? $article->title : $article->title;
|
|
$model->text = strip_tags($article->article->text());
|
|
$model->type = 'articles';
|
|
$model->images = $article->article->images('16:11');
|
|
$model->img = $article->article->image('16:11') ?? \Yii::$app->params['portal'] . '/_public/images/empty-169.png';
|
|
$model->isFavorite = $favorite;
|
|
if ($article->art_table == 'campaigns') {
|
|
$model->date = $article->campaigns->getFormattedDates();
|
|
$model->location = $lg == 'en' ? $article->campaigns->ts_en_location : $article->campaigns->location;
|
|
}
|
|
if ($article->art_table == 'events') {
|
|
$model->date = $article->events->getFormattedDates();
|
|
$model->dates = explode(',', $article->events->event_dates);
|
|
if ($article->events->type == 'booking') {
|
|
$model->bookingAvailable = $article->events->isBookingAvailable();
|
|
$model->event_id = $article->events->id;
|
|
$slug = Formatter::cyrillicTrans($article->article->title());
|
|
$model->booking_url = Yii::$app->params['portal'] . '/' . $lg . '/sabitia/' . Formatter::encodeId($article->id) . "-$slug/?booking=true&webview_mode=true";
|
|
if (!empty($_GET['tickets'])) {
|
|
$tickets = \app\models\OrderBooking::find()->where(['event_id' => $article->events->id])->all();
|
|
|
|
$ticketGroups = [];
|
|
$all_tickets_count = 0;
|
|
$all_validated = 0;
|
|
foreach ($tickets as $ticketGroup) {
|
|
if(empty($ticketGroups[$ticketGroup->ticket_id])) {
|
|
$ticketGroups[$ticketGroup->ticket_id] = [
|
|
'count' => $ticketGroup->tickets_count,
|
|
'name' => $lg == 'en' ? $ticketGroup->name_en : $ticketGroup->name_bg,
|
|
'validated_count' => $ticketGroup->validated_count
|
|
];
|
|
} else {
|
|
$ticketGroups[$ticketGroup->ticket_id]['count'] += $ticketGroup->tickets_count;
|
|
$ticketGroups[$ticketGroup->ticket_id]['validated_count'] += $ticketGroup->validated_count;
|
|
}
|
|
}
|
|
|
|
foreach ($ticketGroups as $group) {
|
|
$all_tickets_count += $group['count'];
|
|
$all_validated += $group['validated_count'];
|
|
}
|
|
$model->tickets = array_values($ticketGroups);
|
|
$model->total_tickets = $all_tickets_count;
|
|
$model->total_validated = $all_validated;
|
|
}
|
|
}
|
|
|
|
$model->location = $lg == 'en' ? $article->events->ts_en_location : $article->events->location;
|
|
}
|
|
if ($article->art_table == 'news') {
|
|
$model->date = date('d.m.Y', strtotime($article->publish_date));
|
|
}
|
|
|
|
|
|
$model->id = $article->id;
|
|
$data[] = $model;
|
|
}
|
|
}
|
|
header('Content-type: application/json');
|
|
echo json_encode(['data' => $data]);
|
|
exit;
|