コード例 #1
0
 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"));
     }
 }
コード例 #2
0
 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"));
     }
 }
コード例 #3
0
 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"));
     }
 }