<?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();
 }


}
