public function getAction() { $url = $this->request->getQuery('url'); $banners = $this->modelsManager->createBuilder()->from(array('b' => 'App\\Models\\Banners'))->innerJoin('App\\Models\\BannersZones', 'b.id = bz.banner_id AND bz.zone_id = ' . $this->request->getQuery('zone_id', 'int'), 'bz')->andWhere('(end_date IS NULL OR end_date > ' . time() . ") AND (start_date IS NULL OR start_date <= " . time() . ") AND active = 1 AND archived = 0")->groupBy('b.id')->getQuery()->execute(); if (count($banners)) { $existsNonzeroPriority = false; $banners = $banners->filter(function ($banner) use(&$existsNonzeroPriority, $url) { if (!empty($banner->url_mask) && preg_match($banner->url_mask, $url) == 1 || empty($banner->url_mask)) { if (!empty($banner->max_impressions)) { $q = (empty($banner->start_date) ? '' : 'date >= ' . $banner->start_date) . (empty($banner->end_date) ? '' : ' AND date < ' . $banner->end_date); $views = $banner->countViews(array($q)); if ($views < $banner->max_impressions) { if ($banner->priority != 0) { $existsNonzeroPriority = true; } return $banner; } } else { if ($banner->priority != 0) { $existsNonzeroPriority = true; } return $banner; } } }); $segments = []; $end = 0; foreach ($banners as $banner) { $priority = $existsNonzeroPriority ? $banner->priority : 1; $segments[] = ['banner' => $banner, 'start' => $end, 'end' => $end + $priority]; $end += $priority; } $rand = rand(0, $end * 100) / 100; foreach ($segments as $segment) { if ($segment['start'] <= $rand && $segment['end'] > $rand) { $banner_selected = $segment['banner']; break; } } if (isset($banner_selected) && empty($banner_selected->id) || !isset($banner_selected)) { return; } $view = new Views(); $view->save(array('date' => time(), 'banner_id' => $banner_selected->id)); $this->view->view = $view->id; if ($banner_selected->type == "image") { $this->view->pick('rotator/image'); } elseif ($banner_selected->type == "flash") { $this->view->pick('rotator/flash'); } elseif ($banner_selected->type == "html") { $this->view->setRenderLevel(View::LEVEL_NO_RENDER); echo $banner_selected->content; return; } $this->view->banner = $banner_selected; } else { return; } }
/** * Displays a single Advert model. * @param integer $id * @return mixed */ public function actionView($id) { if (Currency::find()->where(['>', 'date', time()])->orderBy(['date' => SORT_DESC])->asArray()->one() == null) { $currency = new Currency(); if ($currency->exchangeRates()) { Yii::$app->session->setFlash('warning', 'Exchange rates might differ from actual ones'); } } $model = $this->findModel($id); $pic = new Pictures(); $imgModel = new UploadForm(); $n = Bookmark::find()->where(['user_id' => Yii::$app->user->identity->getId(), 'advert_id' => $id])->all(); if ($model->user_id == Yii::$app->user->identity->getId()) { if (isset($_POST['delete'])) { $model->deletePic(); } if (!empty($n)) { $value = 'Delete ' . 'from bookmarks'; } else { $value = 'Add to bookmarks'; } if (Yii::$app->request->isPost) { $imgModel->imageFiles = UploadedFile::getInstances($imgModel, 'imageFiles'); if ($imgModel->upload($id)) { return $this->render('view-my-advert', ['model' => $this->findModel($id), 'imgModel' => $imgModel, 'pic' => $pic]); } } return $this->render('view-my-advert', ['model' => $this->findModel($id), 'imgModel' => $imgModel, 'pic' => $pic, 'value' => $value]); } else { $views = new Views(); $n = Bookmark::find()->where(['user_id' => Yii::$app->user->identity->getId(), 'advert_id' => $id])->all(); if (!empty($n)) { $value = 'Delete ' . 'from bookmarks'; } else { $value = 'Add to bookmarks'; } if (!$views->countViews($id)) { if ($model->user_id !== Yii::$app->user->identity->getId()) { $advert = new Advert(); $advert->countViews($id); $views->advert_id = $id; $views->user_id = Yii::$app->user->identity->getId(); $views->save(); } } return $this->render('view-adv', ['model' => $this->findModel($id), 'pic' => $pic, 'imgModel' => $imgModel, 'value' => $value]); } }
/** * Displays a single Advert model. * @param integer $id * @return mixed */ public function actionView($id) { $model = $this->findModel($id); $pic = new Pictures(); $imgModel = new UploadForm(); if ($model->user_id == Yii::$app->user->identity->getId()) { if (isset($_POST['delete'])) { $model->deletePic(); } if (Yii::$app->request->isPost) { $imgModel->imageFile = UploadedFile::getInstance($imgModel, 'imageFile'); if ($imgModel->upload($id)) { return $this->render('view-my-advert', ['model' => $this->findModel($id), 'imgModel' => $imgModel, 'pic' => $pic]); } } return $this->render('view-my-advert', ['model' => $this->findModel($id), 'imgModel' => $imgModel, 'pic' => $pic]); } else { $views = new Views(); if (!$views->countViews($id)) { if ($model->user_id !== Yii::$app->user->identity->getId()) { $advert = new Advert(); $advert->countViews($id); $views->advert_id = $id; $views->user_id = Yii::$app->user->identity->getId(); $views->save(); } } return $this->render('view-adv', ['model' => $this->findModel($id), 'pic' => $pic, 'imgModel' => $imgModel]); } }