fetchAll() as $column) // $columns[] = $column['Field']; $count_all = mysql\query::query("SELECT COUNT(*) FROM ($query) t")->fetchColumn(); $items_per_page = $input['limit']?:$this->items_per_page; $page = floor($input['offset']/$items_per_page); $order_by = array(); if(in_array($input['order']['column'], $columns)) { $order_by[$input['order']['column']] = $input['order']['dir']; } $filters = array(); foreach($input['filter'] as $column => $value) if(!empty($value)) { $filters[$column] = $value; } if($input['search']) { $search = array(); foreach($columns as $column) { $uid = $column.uniqid(); $search[] = array( 'or' => true, 'customQuery' => "`$column` LIKE :$uid", 'params' => array( $uid => "%{$input['search']}%", ), ); } $search = mysql\query::parseConditions($search, $values); $filters[] = array( 'customQuery' => '( ' . $search . ' ) ', 'params' => $values, ); } $count_filtered = mysql\query::count('*', " ($query) t", $filters, $order_by); $pages_count = floor($count_filtered/$items_per_page) + 1; if($page > $pages_count) $page = $pages_count; $limit_offset = (int) $input['offset']; $this->data = mysql\query::select(array('*'), " ($query) t", $filters, $order_by, $items_per_page, $limit_offset); $this->page = $page; $this->count_all = $count_all; $this->count_filtered = $count_filtered; $this->items_per_page = $items_per_page; $this->pages_count = $pages_count; } public function get() { return $this->data->fetchAll(); } public function getDataTableArray() { $out = array(); $out['recordsTotal'] = $this->count_all; $out['recordsFiltered'] = $this->count_filtered; $out['data'] = array(); return $out; } }