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"));
     }
 }
Пример #4
0
 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"));
     }
 }
Пример #6
0
<?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}"]]);
    ?>
Пример #7
0
 /**
  * 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.');
     }
 }