protected function set_ajax_list_queries($state_info = null) { if (!empty($state_info->per_page)) { if (empty($state_info->page) || !is_numeric($state_info->page)) { $this->limit($state_info->per_page); } else { $limit_page = ($state_info->page - 1) * $state_info->per_page; $this->limit($state_info->per_page, $limit_page); } } if (!empty($state_info->order_by)) { $this->order_by($state_info->order_by[0], $state_info->order_by[1]); } if (!empty($state_info->search)) { if (!empty($this->relation)) { foreach ($this->relation as $relation_name => $relation_values) { $temp_relation[$this->_unique_field_name($relation_name)] = $this->_get_field_names_to_search($relation_values); } } if (is_array($state_info->search)) { foreach ($state_info->search as $search_field => $search_text) { if (isset($temp_relation[$search_field])) { if (is_array($temp_relation[$search_field])) { foreach ($temp_relation[$search_field] as $relation_field) { $this->or_like($relation_field, $search_text); } } else { $this->like($temp_relation[$search_field], $search_text); } } elseif (isset($this->relation_n_n[$search_field])) { $escaped_text = $this->basic_model->escape_str($search_text); $this->having($search_field . " LIKE '%" . $escaped_text . "%'"); } else { $this->like($search_field, $search_text); } } } elseif ($state_info->search->field !== null) { if (isset($temp_relation[$state_info->search->field])) { if (is_array($temp_relation[$state_info->search->field])) { foreach ($temp_relation[$state_info->search->field] as $search_field) { $this->or_like($search_field, $state_info->search->text); } } else { $this->like($temp_relation[$state_info->search->field], $state_info->search->text); } } elseif (isset($this->relation_n_n[$state_info->search->field])) { $escaped_text = $this->basic_model->escape_str($state_info->search->text); $this->having($state_info->search->field . " LIKE '%" . $escaped_text . "%'"); } else { $this->like($state_info->search->field, $state_info->search->text); } } else { $columns = $this->get_columns(); $search_text = $state_info->search->text; if (!empty($this->where)) { foreach ($this->where as $where) { $this->basic_model->having($where[0], $where[1], $where[2]); } } foreach ($columns as $column) { if (isset($temp_relation[$column->field_name])) { if (is_array($temp_relation[$column->field_name])) { foreach ($temp_relation[$column->field_name] as $search_field) { $this->or_like($search_field, $search_text); } } else { $this->or_like($temp_relation[$column->field_name], $search_text); } } elseif (isset($this->relation_n_n[$column->field_name])) { //@todo have a where for the relation_n_n statement } else { $this->or_like($column->field_name, $search_text); } } } } }