137 lines
4.0 KiB
PHP
137 lines
4.0 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
class NewDatatable extends CI_Model{
|
|
var $table = ''; //nama tabel dari database
|
|
var $column_order = array(); //field yang ada di table user
|
|
var $column_search = array(); //field yang diizin untuk pencarian
|
|
var $order = array(); // default order
|
|
var $join = array();
|
|
var $where = array();
|
|
var $select = '';
|
|
var $group = '';
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
//Codeigniter : Write Less Do More
|
|
}
|
|
|
|
public function setup($data){
|
|
$this->table = $data['table'];
|
|
$this->column_order = $data['column_order'];
|
|
$this->column_search = $data['column_search'];
|
|
$this->order = $data['order'];
|
|
if (array_key_exists('join', $data)) {
|
|
$this->join = $data['join'];
|
|
}
|
|
if (array_key_exists('where', $data)) {
|
|
$this->where = $data['where'];
|
|
}
|
|
if (array_key_exists('group', $data)) {
|
|
$this->group = $data['group'];
|
|
}
|
|
if (array_key_exists('select', $data)) {
|
|
$this->select = $data['select'];
|
|
}
|
|
|
|
}
|
|
|
|
// private function _get_datatables_query($term=''){ //term is value of $_REQUEST['search']['value']
|
|
// $column = array('k.id_kota','k.nm_kota', 'p.nm_propinsi');
|
|
// $this->db->select('k.id_kota, k.nm_kota, p.nm_propinsi');
|
|
// $this->db->from('kota as k');
|
|
// $this->db->join('propinsi as p', 'p.id_propinsi = k.id_propinsi','left');
|
|
// $this->db->like('k.id_kota', $term);
|
|
// $this->db->or_like('k.nm_kota', $term);
|
|
// $this->db->or_like('p.nm_propinsi', $term);
|
|
// if(isset($_REQUEST['order'])) // here order processing
|
|
// {
|
|
// $this->db->order_by($column[$_REQUEST['order']['0']['column']], $_REQUEST['order']['0']['dir']);
|
|
// }
|
|
// else if(isset($this->order))
|
|
// {
|
|
// $order = $this->order;
|
|
// $this->db->order_by(key($order), $order[key($order)]);
|
|
// }
|
|
// }
|
|
|
|
private function _get_datatables_query()
|
|
{
|
|
|
|
if ($this->select!='') {
|
|
$this->db->select($this->select);
|
|
}
|
|
$this->db->from($this->table);
|
|
if (!empty($this->join)) {
|
|
foreach ($this->join as $jo => $j) {
|
|
$this->db->join($jo,$j);
|
|
}
|
|
}
|
|
if (!empty($this->where)) {
|
|
foreach ($this->where as $wh => $w) {
|
|
$this->db->where($wh,$w);
|
|
}
|
|
}
|
|
if ($this->group!='') {
|
|
$this->db->group_by($this->group);
|
|
}
|
|
|
|
// $this->db->where("kodewil",$this->session->userdata("wilayah"));
|
|
$i = 0;
|
|
|
|
foreach ($this->column_search as $item) // looping awal
|
|
{
|
|
if($_POST['search']['value']) // jika datatable mengirimkan pencarian dengan metode POST
|
|
{
|
|
|
|
if($i===0) // looping awal
|
|
{
|
|
$this->db->group_start();
|
|
$this->db->like($item, $_POST['search']['value']);
|
|
}
|
|
else
|
|
{
|
|
$this->db->or_like($item, $_POST['search']['value']);
|
|
}
|
|
|
|
if(count($this->column_search) - 1 == $i)
|
|
$this->db->group_end();
|
|
}
|
|
$i++;
|
|
}
|
|
|
|
if(isset($_POST['order']))
|
|
{
|
|
$this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
|
|
}
|
|
else if(isset($this->order))
|
|
{
|
|
$order = $this->order;
|
|
$this->db->order_by(key($order), $order[key($order)]);
|
|
}
|
|
}
|
|
|
|
function get_datatables()
|
|
{
|
|
$this->_get_datatables_query();
|
|
if($_POST['length'] != -1)
|
|
$this->db->limit($_POST['length'], $_POST['start']);
|
|
$query = $this->db->get();
|
|
return $query->result();
|
|
}
|
|
|
|
function count_filtered()
|
|
{
|
|
$this->_get_datatables_query();
|
|
$query = $this->db->get();
|
|
return $query->num_rows();
|
|
}
|
|
|
|
public function count_all()
|
|
{
|
|
$this->db->from($this->table);
|
|
return $this->db->count_all_results();
|
|
}
|
|
}
|