FV = $this->load->database('mysql', TRUE); } /** * 重置查询 */ private function reset() { $this->p_id = false; $this->p_site_code = false; $this->p_title = false; $this->p_url = false; $this->p_author = false; $this->p_hits = false; $this->p_datetime = false; $this->my_fields = false; $this->order_by = false; $this->limit = false; } /** * 分页列表 * @param type $site_code * @param type $author * @param type $order * @param type $url */ public function get_page_list($page = 0, $site_code = '', $author = '', $order = 'id', $url = '') { $this->reset(); if (!empty($site_code)) { $this->p_site_code = ' AND p_site_code = ' . $this->FV->escape($site_code); } if (!empty($author)) { $this->p_author = ' AND p_author = ' . $this->FV->escape($author); } if (!empty($url)) { $url = $this->FV->escape(urldecode($url)); $this->p_url = " AND p_url LIKE %$url%"; } // 排序 $this->order_by = ' ORDER BY '; if ('id' == $order) { $this->order_by .= 'p_id DESC'; } else { $this->order_by .= 'p_hits DESC'; } $this->limit = $page . ",30"; return $this->get_list(); } /** * 获取列表 - 用于与访客表交互计算的方法 * @param type $page_ids * @param type $site_code * @param type $author * @param type $order * @param type $url * @return boolean */ public function get_by_ids($page_ids = array(), $site_code = '', $author = '', $order = '', $url = '') { $this->reset(); if (empty($page_ids)) { return FALSE; } $page_ids = implode(",", $page_ids); $this->p_id = "AND p_id IN ($page_ids)"; // 站点代码 if (!empty($site_code)) { $this->p_site_code = "AND p_site_code =" . $this->FV->escape($site_code); } // 作者 if (!empty($author)) { $this->p_author = "AND p_author =" . $this->FV->escape($author); } // URL if (!empty($url)) { $url = $this->FV->escape(urldecode($url)); $this->p_url = " AND p_url LIKE %$url%"; } // 排序 $this->order_by = ' ORDER BY '; if (!empty($order) && 'hit' === $order) { $this->order_by .= 'p_hits DESC'; if ($page_ids) { // 排序 $this->order_by .= ", find_in_set(p_id,'$page_ids')"; } } else { if ($page_ids) { $this->order_by .= "find_in_set(p_id,'$page_ids'),"; } $this->order_by .= "p_id DESC"; } return $this->get_list(); } /** * 根据指定条件获取单个page记录 * @param type $url * @param type $site_code */ public function get_one_page($url, $site_code = '') { if (empty($url)) { return FALSE; } $this->reset(); $this->p_url = ' AND p_url =' . $this->FV->escape($url); if (!empty($site_code)) { $this->p_site_code = ' AND p_site_code =' . $this->FV->escape($site_code); } $this->limit = 1; return $this->get_list(); } /** * 添加新的页面并返回 * @param type $site_code * @param type $page_url * @param type $page_title * @return boolean */ public function add_add_return($site_code, $page_url, $page_title = '') { // 插入新的page if ($site_code AND $page_url) { $sql = "INSERT INTO analytics_pages ( p_site_code, p_url, p_title, p_datetime ) VALUES ( ?, ?, ?, ? )"; $this->FV->query($sql, array($site_code, $page_url, $page_title, time())); return $this->FV->insert_id(); } return FALSE; } /** * 更新点击 * @param type $page_id */ public function inc_view($page_id) { if (!empty($page_id)) { $sql = "UPDATE analytics_pages SET p_hits = p_hits + 1 WHERE p_id = ?"; return $this->FV->query($sql, array($page_id)); } return FALSE; } /** * 根据ID获取一条数据 * @param type $id * @return boolean */ public function get_one($id) { if (!empty($id) && is_numeric($id)) { $this->reset(); $this->p_id = ' AND p_id = ' . $this->FV->escape($id); $this->limit = 1; return $this->get_list(); } return FALSE; } /** * 获取数据集 */ private function get_list() { $sql = "SELECT "; if ($this->my_fields === false) { $sql .= "p_id," . " p_site_code," . " p_title," . " p_url," . " p_author," . " p_hits," . " p_datetime"; } else { $sql .= $this->my_fields; } $sql .= " FROM analytics_pages"; $sql .= " WHERE 1=1 "; $this->p_id ? $sql .= $this->p_id : false; $this->p_site_code ? $sql .= $this->p_site_code : false; $this->p_title ? $sql .= $this->p_title : false; $this->p_url ? $sql .= $this->p_url : false; $this->p_author ? $sql .= $this->p_author : false; $this->p_hits ? $sql .= $this->p_hits : false; $this->p_datetime ? $sql .= $this->p_datetime : false; $this->order_by ? $sql.=$this->order_by : false; $this->limit ? $sql.= ' LIMIT ' . $this->limit : false; $query = $this->FV->query($sql); if ($this->limit == 1) { if ($query->num_rows() > 0) { $row = $query->row(); return $row; } else { return FALSE; } } else { return $query->result(); } } }