예제 #1
0
파일: Portal.php 프로젝트: siburny/stats
 function post()
 {
     $this->load->library("google_php_client", $this->user_company);
     $this->parser->data['active_menu_portal'] = TRUE;
     $data = array("page_title" => "Welcome!", "params" => array());
     $post_id = $this->input->get('post_id');
     if (empty($post_id) || !preg_match('/^[0-9]+$/i', $post_id)) {
         redirect('/portal/');
     }
     $data['params']['post_id'] = $post_id;
     $page = $this->input->get('page');
     if ($page != null && preg_match('/^[0-9]+$/i', $page)) {
         $page = str_replace("page", "", strtolower($page));
         $page--;
     } else {
         $page = 0;
     }
     $data['params']['page'] = $page;
     $date_from = $this->input->get("date_from");
     $date_to = $this->input->get("date_to");
     if ($date_from != NULL) {
         $date_from = strtolower($date_from);
         switch ($date_from) {
             case "today":
             case "yesterday":
                 $data['date_selected'] = $date_from;
                 $data['params']['date_from'] = $date_from;
                 $date_to = new DateTime($date_from);
                 $date_from = clone $date_to;
                 break;
             case "7days":
                 $data['date_selected'] = $date_from;
                 $data['params']['date_from'] = $date_from;
                 $date_to = new DateTime("yesterday");
                 $date_from = clone $date_to;
                 $date_from->modify('-6 days');
                 break;
             case "30days":
                 $data['date_selected'] = $date_from;
                 $data['params']['date_from'] = $date_from;
                 $date_to = new DateTime("yesterday");
                 $date_from = clone $date_to;
                 $date_from->modify('-29 days');
                 break;
             default:
                 if ($date_to != NULL) {
                     if (preg_match("/^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}\$/", $date_from) && preg_match("/^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}\$/", $date_to)) {
                         $data['date_selected'] = "custom";
                         $data['date_from_input'] = $date_from;
                         $data['date_to_input'] = $date_to;
                         $data['params']['date_from'] = $date_from;
                         $data['params']['date_to'] = $date_to;
                         $date_from = DateTime::createFromFormat("m-d-Y", $date_from);
                         $date_to = DateTime::createFromFormat("m-d-Y", $date_to);
                         break;
                     }
                 }
                 $data['date_selected'] = "";
                 $date_to = NULL;
                 break;
         }
     }
     if ($date_to == NULL) {
         $date_to = new DateTime();
         $date_from = clone $date_to;
         $date_from->modify('-29 days');
     }
     $data['date_from'] = $date_from->format("M j, Y");
     $data['date_to'] = $date_to->format("M j, Y");
     $data['date_from_ymd'] = $date_from->format('Y-m-d');
     $data['date_to_ymd'] = $date_to->format('Y-m-d');
     $this->load->model("Post_model", "post");
     $this->user = $this->ion_auth->user()->row();
     $post_stats = Post_model::get_post_stats($post_id, $this->user_company->company_id, $date_to, $date_from, TRUE, TRUE, $page);
     $data['post_title'] = $post_stats[0]->title;
     $data['post_id'] = $post_stats[0]->post_id;
     $rows = $this->google_php_client->get_post_stats($post_stats[0]->url, $data['date_to_ymd'], $data['date_from_ymd']);
     $data['rows'] = array();
     foreach ($rows as $index => $row) {
         $ar = array("n" => $index + 1, "source" => $row[0], "sessions" => $row[1]);
         $data['rows'][] = $ar;
     }
     $rows = $this->db->from('post_stats')->select_max('date_updated')->get()->result_array();
     $data['last_updated'] = $rows[0]['date_updated'];
     //Total Stats
     $count = $this->db->from('posts')->where('company_id', $this->user_company->company_id)->where('date_published >=', $data['date_from_ymd'])->where('date_published <=', $data['date_to_ymd'])->count_all_results();
     $count_all = $this->db->from('posts')->where('company_id', $this->user_company->company_id)->count_all_results();
     $data['totals'] = array('pageviews' => 0, 'sessions' => 0, 'engaged_minutes' => 0, 'posts' => number_format($count), 'all_posts' => number_format($count_all));
     $rows = $this->google_php_client->get_profile_stats($data['date_to_ymd'], $data['date_from_ymd']);
     if ($rows) {
         $data['totals']['sessions'] = number_format($rows[0][0]);
         $data['totals']['engaged_minutes'] = number_format($rows[0][0] * $rows[0][1] / 60);
         $data['totals']['pageviews'] = number_format($rows[0][2]);
     }
     //$query = $data['params'];
     //$data['prev_link'] = $page == 0 ? "" : "/portal/?".http_build_query($query);
     //$query['page']++;
     //$data['date_link'] = http_build_query($query);
     //$query['page']++;
     //$data['next_link'] = "/portal/?".http_build_query($query);
     $this->parser->parse("portal/post", $data);
 }