public function statisticAction() { $id = $this->dispatcher->getParam('id'); $banner = Banners::findFirst($id); if ($id && $banner && $banner->advertiser_id == $this->auth->get_user()->id) { $this->assets->collection('bottom-js')->addJs('js/moment/moment.min.js')->addJs('js/moment/ru.js')->addJs('js/datetimepicker/js/bootstrap-datetimepicker.js'); $this->assets->collection('css')->addCss('js/datetimepicker/css/bootstrap-datetimepicker.min.css'); if (!$this->request->getQuery('start_date')) { if (!empty($banner->start_date)) { $start_date = $banner->start_date; } else { $first_view = $banner->views->getFirst()->date; if (!empty($first_view)) { $start_date = $first_view; } else { $start_date = 0; } } } else { $start_date = date_parse_from_format('d.m.Y H:i', $this->request->getQuery('start_date')); $start_date = mktime($start_date['hour'], $start_date['minute'], 0, $start_date['month'], $start_date['day'], $start_date['year']); } if (!$this->request->getQuery('end_date')) { if (!empty($banner->end_date)) { if ($banner->end_date > time()) { $end_date = time(); } else { $end_date = $banner->end_date; } } else { $end_date = time(); } } else { $end_date = date_parse_from_format('d.m.Y H:i', $this->request->getQuery('end_date')); $end_date = mktime($end_date['hour'], $end_date['minute'], 0, $end_date['month'], $end_date['day'], $end_date['year']); } $days = floor(($end_date + 10800) / 86400) - floor(($start_date + 10800) / 86400) + 1; $days_arr = []; if ($days > 0) { for ($i = 0; $i < $days; $i++) { $day = floor(($start_date + 10800) / 86400) * 86400 + $i * 86400 - 10800; if ((!empty($banner->start_date) ? $day >= floor(($banner->start_date + 10800) / 86400) * 86400 - 10800 : true) && $day < (!empty($banner->end_date) ? $banner->end_date : time())) { $days_arr[] = array('date' => $day, 'views' => $banner->countViews("date >= {$day} AND date < " . ($day + 86400)), 'clicks' => $banner->countViews("date >= {$day} AND date < " . ($day + 86400) . " AND clicked = 1")); } } } $this->view->days = $days_arr; $q = "date >= {$start_date} AND date <= {$end_date}"; $this->view->views = $banner->countViews(array($q)); $q .= " AND clicked = 1"; $this->view->clicks = $banner->countViews(array($q)); $this->view->start_date = $start_date; $this->view->end_date = $end_date; $this->view->banner = $banner; $this->view->title = "Статистика для баннера \"{$banner->name}\""; \Phalcon\Tag::prependTitle("Статистика для баннера \"{$banner->name}\""); } else { $this->dispatcher->forward(array("namespace" => 'App\\Controllers', "controller" => "error", "action" => "notFound")); } }
public function get_bannersAction() { $type = $this->request->getQuery('type'); $banners = Banners::find(array('type = :type:', 'bind' => array('type' => $type)))->toArray(); $arr = array('banners' => $banners); if ($this->request->getQuery('type') == 'image') { $arr['directory'] = $this->url->get($this->config->banners->imagePath); } elseif ($this->request->getQuery('type') == 'flash') { $arr['directory'] = $this->url->get($this->config->banners->flashPath); } echo json_encode($arr); }
public function clickAction() { $id = $this->dispatcher->getParam('id'); $banner = Banners::findFirst(array('id = :id:', 'bind' => array('id' => $id))); if ($id && $banner) { $view_id = $this->request->getQuery('view'); $view = Views::findFirst(array('id = :id:', 'bind' => array('id' => $view_id))); $view->update(array('clicked' => 1)); return $this->response->redirect($banner->link, true, 302); } else { $this->dispatcher->forward(array("namespace" => 'App\\Controllers', "controller" => "error", "action" => "notFound")); } }
public static function getCarousel() { $slider = []; $items = Banners::find()->all(); foreach ($items as $item) { $slide = ''; if (!empty($item->url)) { $slide .= Html::beginTag('a', ['href' => $item->url]); } $slide .= Html::img($item->getUploadUrl('photo')); if (!empty($item->url)) { $slide .= Html::endTag('a'); } $slider[] = $slide; } return $slider; }
public function toggle_archivedAction() { $id = $this->dispatcher->getParam('id'); $banner = Banners::findFirst($id); if ($id && $banner) { if ($banner->toggleArchived()) { $this->flashSession->success($banner->archived == 1 ? "Баннер помещён в архив" : "Баннер изъят из архива"); } else { foreach ($banner->getMessages() as $message) { $this->flashSession->error($message->getMessage()); } } if (isset($_SERVER['HTTP_REFERER'])) { return $this->response->redirect($_SERVER['HTTP_REFERER'], true); } else { return $this->response->redirect(array('for' => 'controller', 'controller' => 'banners')); } } else { $this->dispatcher->forward(array("namespace" => 'App\\Controllers', "controller" => "error", "action" => "notFound")); } }
<?php use yii\bootstrap\ActiveForm; use yii\helpers\Html; use yii\bootstrap\Carousel; use app\models\Banners; /* @var $this yii\web\View */ $this->title = 'Главная'; ?> <section class="services"> <div class="services_bg text-center"> <?php echo Carousel::widget(['items' => Banners::getCarousel(), 'controls' => false, 'options' => ['interval' => 2000, 'class' => 'slide']]); ?> </div> </section> <section class="main_form container"> <div class="main_form_title">Отправьте заявку для получения<br> бесплатной консультации</div> <?php if (Yii::$app->session->hasFlash('consultFormSubmitted')) { ?> <p>Спасибо за Ваше обращение! Мы обязательно Вам перезвоним.</p> <?php } else { ?> <?php $form = ActiveForm::begin(['id' => 'consult-form', 'fieldConfig' => ['template' => "{label}\n{input}\n{error}"]]); ?>
/** * Finds the Banners model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Banners the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Banners::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }