load->view('admin/view_admin_header', $data); $this->load->view('gps/' . $page_name, $data); $this->load->view('admin/view_admin_footer', $data); } public function tracking() { $data = array(); $data["members"] = []; $data["member_id"] = $this->input->get('member_id'); $gps = $this->load->database('gps', TRUE); $q = "SELECT member_id,count(*) AS count FROM members_tracking GROUP BY member_id ORDER BY member_id"; $r = $gps->query($q); if ($r->num_rows()) { foreach ($r->result() as $row) { $data["members"][] = (array)$row; } } $data["tracking_links"] = ""; $data["tracking_table"] = ""; $data["tracking_trips_table"] = ""; if ($data["member_id"]>0) { // id member_id traked_group speed lat lng gps ttime loc created device_id previous_id distance duration $q = "SELECT id,duration,distance,round(speed,2) as speed,date_trunc('second',ttime) as ttime,device_id,loc,traked_group FROM members_tracking WHERE member_id=".$data["member_id"]; $r = $gps->query($q); if ($r->num_rows()) { $this->load->library('pagination'); $config = array(); $config["total_rows"] = $r->num_rows(); $config["base_url"] = base_url() . "/gps/tracking"; $config["per_page"] = 20; $config["uri_segment"] = 3; $config["num_links"] = 7; $config['attributes'] = array('onclick' => 'document.location=this.href+\'?member_id='.$data["member_id"].'\';return false;'); $config['full_tag_open'] = ""; $config['num_tag_open'] = '
  • '; $config['num_tag_close'] = '
  • '; $config['cur_tag_open'] = "
  • "; $config['cur_tag_close'] = "
  • "; $config['next_tag_open'] = "
  • "; $config['next_tagl_close'] = "
  • "; $config['prev_tag_open'] = "
  • "; $config['prev_tagl_close'] = "
  • "; $config['first_tag_open'] = "
  • "; $config['first_tagl_close'] = "
  • "; $config['last_tag_open'] = "
  • "; $config['last_tagl_close'] = "
  • "; $this->pagination->initialize($config); $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; $page = is_numeric($page) ? $page : 0; $q.= " ORDER BY ttime DESC LIMIT " . $config["per_page"] . " OFFSET " . $page; $query = $gps->query($q); $this->load->helper('url'); $this->load->library('table'); $this->table->set_template($this->template); // id duration distance speed ttime device_id loc traked_group $this->table->set_heading( array('data' => 'ID', 'style' => 'width:80px'), array('data' => 'Duration', 'style' => 'width:80px'), array('data' => 'Distance', 'style' => 'width:80px'), array('data' => 'Speed', 'style' => 'width:80px'), array('data' => 'Time', 'style' => 'width:160px'), array('data' => 'Device ID', 'style' => 'width:80px'), array('data' => 'IP Address', 'style' => 'width:80px'), array('data' => 'Tracked Group', 'style' => 'width:80px') ); $data["tracking_table"] = $this->table->generate($query); $data["tracking_links"] = $this->pagination->create_links(); } $q = "SELECT '',"; $q.= "ROUND(a.duration,0) AS duration,ROUND(a.distance,2) AS distance,ROUND(a.speed,2) AS speed, ROUND(a.avg_speed,2) AS avg_speed "; $q.= "FROM members_tracking_trips a WHERE a.member_id=".$data["member_id"]; $q.= " AND a.distance>15 AND a.duration>15"; $r = $gps->query($q); $this->table->set_heading( array('data' => 'ID', 'style' => 'width:30px'), array('data' => 'Duration', 'style' => 'width:40px'), array('data' => 'Distance', 'style' => 'width:40px'), array('data' => 'Speed', 'style' => 'width:40px'), array('data' => 'Avg.Speed', 'style' => 'width:40px') ); $data["tracking_trips_table"] = $this->table->generate($r); } $data["page_title"] = "GPS Tracking"; $this->renderGpsPage("view_tracking", $data); } public function trip() { global $savvyext; $data = array(); $data["members"] = []; $data["member_id"] = (int)$this->input->get('member_id'); $data["id"] = (int)$this->input->get('id'); if ($data["id"]<1 || $data["member_id"]<1) { redirect('gps/tracking?member_id='.$data["member_id"]); return; } $gps = $this->load->database('gps', TRUE); $q = "SELECT a.id, a.device_id, ROUND(a.duration,0) AS duration, "; $q.= "ROUND(a.distance,2) AS distance,ROUND(a.speed,2) AS speed, "; $q.= "ROUND(a.avg_speed,2) AS avg_speed, a.location_start, a.location_end, "; $q.= "b.lat AS start_lat, b.lng AS start_lng, "; $q.= "c.lat AS end_lat, c.lng AS end_lng, "; $q.= "b.ttime AS start_time, c.ttime AS end_time "; $q.= "FROM members_tracking_trips a "; $q.= "LEFT JOIN members_tracking b ON (b.id=a.location_start) "; $q.= "LEFT JOIN members_tracking c ON (c.id=a.location_end) "; $q.= "WHERE a.member_id=".$data["member_id"]." AND a.id=".$data["id"]; $r = $gps->query($q); $f = $r->row_array(); $data = array_merge($data, $f); $q = "SELECT date_trunc('second',ttime) AS ttime,lat,lng,speed,distance,duration "; $q.= "FROM members_tracking WHERE member_id=".$data["member_id"]." "; $q.= "AND id>=".$data["location_start"]." AND id<=".$data["location_end"]." "; $q.= ($data["device_id"]>0?("AND device_id=".$data["device_id"]):" AND device_id IS NULL"); $q.= " ORDER BY ttime"; $r = $gps->query($q); $this->load->library('table'); $this->table->set_template($this->template); $this->table->set_heading( array('data' => 'Time', 'style' => 'width:30px'), array('data' => 'Lat', 'style' => 'width:30px'), array('data' => 'Lng', 'style' => 'width:30px'), array('data' => 'Speed', 'style' => 'width:40px'), array('data' => 'Distance', 'style' => 'width:40px'), array('data' => 'Duration', 'style' => 'width:40px') ); $data["tracking_trips_table"] = $this->table->generate($r); $min_lat = PHP_INT_MAX; $min_lng = PHP_INT_MAX; $max_lat = PHP_INT_MIN; $max_lng = PHP_INT_MIN; $center_lat = 0; $center_lng = 0; foreach ($r->result() as $row) { $f = (array) $row; $data["items"][] = $f; if ($f["lat"]<$min_lat) $min_lat = $f["lat"]; if ($f["lng"]<$min_lng) $min_lng = $f["lng"]; if ($f["lat"]>$max_lat) $max_lat = $f["lat"]; if ($f["lng"]>$max_lng) $max_lng = $f["lng"]; } $data["center_lat"] = ($min_lat+$max_lat)/2; $data["center_lng"] = ($min_lng+$max_lng)/2; $data['google_api_key'] = $savvyext->cfgReadChar('google.api_key'); $this->renderGpsPage("view_trip", $data); } }