<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Report_views_weekly_model extends CI_Model { protected $_table = 'report_views_weekly'; protected $_table_new = 'report_views_weekly_new'; public function __construct(){ parent::__construct(); date_default_timezone_set("Asia/Ho_Chi_Minh"); if (date('W') > 13) { $this->_table = $this->_table_new; } } public function cmsCountAll($name = null) { $this->db->select('COUNT(*) AS totalResults'); $this->db->from($this->_table); $query = $this->db->get(); $result = $query->result_array(); if ($result) { return $result[0]['totalResults']; } else { return 0; } } public function cmsGetPagination($record, $start, $name = null) { $this->db->select($this->_table . '.*, u1.full_name AS singer_name, track_user.name AS singer_name2, tracks.title AS name_song, GROUP_CONCAT(track_user.`name` SEPARATOR ",") AS all_name, tracks.art AS art, tracks.art_type AS art_type'); $this->db->from($this->_table); $this->db->join('track_user', 'track_user.track_id = ' . $this->_table . '.track_id', 'left'); $this->db->join('tracks', 'tracks.id = ' . $this->_table . '.track_id', 'left'); $this->db->join('users u1', 'u1.id = track_user.user_id', 'left'); if ($name != null) { $data = explode('-', $name); $this->db->where('week', $data[0]); $this->db->where('year', $data[1]); } $this->db->group_by($this->_table . '.id'); $this->db->order_by($this->_table . '.total_point', 'desc'); $this->db->limit($record); $query = $this->db->get(); return $query->result_array(); } public function selectSearch() { $this->db->select('week, year'); $this->db->from($this->_table); $this->db->distinct($this->_table . '.week'); $this->db->order_by( $this->_table . '.year desc'); $this->db->order_by( $this->_table . '.week desc'); $this->db->limit(60); $query = $this->db->get(); return $query->result_array(); } /** * Hàm lấy xếp hạng tuần trước để so sánh tăng/giảm hạng * * @param $week_year * @return array */ public function previousRanking($week_year) { $this->db->select('track_id, order, week, year'); $this->db->from($this->_table); if ($week_year != null) { $data = explode('-', $week_year); $week = intval($data[0]); $year = intval($data[1]); if ($week == 1) { return []; } else { $week = $week - 1; } $this->db->where('week', $week); $this->db->where('year', $year); } $this->db->where('order <=', 100); $query = $this->db->get(); $data = $query->result_array(); $result = []; if ($data) { foreach ($data as $key => $val) { $result[$val['track_id']] = $val['order']; } } return $result; } }