MIF_E31211879/application/models/Datatable.php

92 lines
2.2 KiB
PHP

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Datatable extends CI_Model{
/**
* @author Fendrik Nurul Jadid <fendrik1311@gmail.com>
* @since v.1.0
**/
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
public function __construct()
{
parent::__construct();
//Codeigniter : Write Less Do More
}
private function _get_datatables_query()
{
$this->db->from($this->table);
$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($table=null,$column_order=array(),$column_search=array(),$order=array())
{
$this->table = $table;
$this->column_order = $column_order;
$this->column_search = $column_search;
$this->order = $order;
$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();
}
}