Cloudlog/application/controllers/Search.php

312 wiersze
14 KiB
PHP

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Search extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
if($this->config->item('public_search') != TRUE) {
$this->load->model('user_model');
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
}
}
public function index()
{
$data['page_title'] = "Search";
$this->load->view('interface_assets/header', $data);
$this->load->view('search/main');
$this->load->view('interface_assets/footer');
}
// Filter is for advanced searching and filtering of the logbook
public function filter() {
$data['page_title'] = "Search & Filter Logbook";
$this->load->library('form_validation');
$this->load->model('Search_filter');
$data['get_table_names'] = $this->Search_filter->get_table_columns();
//print_r($this->Search_filter->get_table_columns());
if ($this->form_validation->run() == FALSE)
{
$this->load->view('interface_assets/header', $data);
$this->load->view('search/filter');
$this->load->view('interface_assets/footer');
}
else
{
$this->load->view('interface_assets/header', $data);
$this->load->view('search/filter');
$this->load->view('interface_assets/footer');
}
}
function json_result() {
if(isset($_POST['search'])) {
$json = $_POST['search'];
$search_items = json_decode($json, true);
$search_type = "";
foreach($search_items as $key=>$value){
if($value == "AND") {
$search_type = "AND";
}
if ($value == "OR") {
$search_type = "OR";
}
if(is_array($value)) {
foreach($value as $values)
{
if(isset($values['rules'])) {
if($values['condition'] == "AND") {
$this->db->group_start();
} else {
$this->db->or_group_start();
}
foreach($values['rules'] as $group_value)
{
if($group_value['operator'] == "equal") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'], $group_value['value']);
} else {
$this->db->or_where($group_value['field'], $group_value['value']);
}
}
if($group_value['operator'] == "not_equal") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' !=', $group_value['value']);
} else {
$this->db->or_where($group_value['field'].' !=', $group_value['value']);
}
}
if($group_value['operator'] == "begins_with") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' like ', $group_value['value']."%");
} else {
$this->db->or_where($group_value['field'].' like ', $group_value['value']."%");
}
}
if($group_value['operator'] == "contains") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' like ', "%".$group_value['value']."%");
} else {
$this->db->or_where($group_value['field'].' like ', "%".$group_value['value']."%");
}
}
if($group_value['operator'] == "ends_with") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' like ', "%".$group_value['value']);
} else {
$this->db->or_where($group_value['field'].' like ', "%".$group_value['value']);
}
}
if($group_value['operator'] == "is_empty") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'], "''");
} else {
$this->db->or_where($group_value['field'], "''");
}
}
if($group_value['operator'] == "is_not_empty") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' !=', "''");
} else {
$this->db->or_where($group_value['field'].' !=', "''");
}
}
if($group_value['operator'] == "is_null") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' is ', NULL);
} else {
$this->db->or_where($group_value['field'].' is ', NULL);
}
}
if($group_value['operator'] == "is_not_null") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' is not ', NULL);
} else {
$this->db->or_where($group_value['field'].' is not ', NULL);
}
}
if($group_value['operator'] == "less") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' <', $group_value['value']);
} else {
$this->db->or_where($group_value['field'].' <', $group_value['value']);
}
}
if($group_value['operator'] == "less_or_equal") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' <=', $group_value['value']);
} else {
$this->db->or_where($group_value['field'].' <=', $group_value['value']);
}
}
if($group_value['operator'] == "greater") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' >', $group_value['value']);
} else {
$this->db->or_where($group_value['field'].' >', $group_value['value']);
}
}
if($group_value['operator'] == "greater_or_equal") {
if($values['condition'] == "AND") {
$this->db->where($group_value['field'].' >=', $group_value['value']);
} else {
$this->db->or_where($group_value['field'].' >=', $group_value['value']);
}
}
}
$this->db->group_end();
} else {
//print_r($values['field']);
if(isset($values['operator'])) {
}
if($values['operator'] == "equal") {
if($search_type == "AND") {
$this->db->where($values['field'], $values['value']);
} else {
$this->db->or_where($values['field'], $values['value']);
}
}
if($values['operator'] == "not_equal") {
if($search_type == "AND") {
$this->db->where($values['field'].' !=', $values['value']);
} else {
$this->db->or_where($values['field'].' !=', $values['value']);
}
}
if($values['operator'] == "begins_with") {
if($search_type == "AND") {
$this->db->where($values['field'].' like ', $values['value']."%");
} else {
$this->db->or_where($values['field'].' like ', $values['value']."%");
}
}
if($values['operator'] == "contains") {
if($search_type == "AND") {
$this->db->where($values['field'].' like ', "%".$values['value']."%");
} else {
$this->db->or_where($values['field'].' like ', "%".$values['value']."%");
}
}
if($values['operator'] == "ends_with") {
if($search_type == "AND") {
$this->db->where($values['field'].' like ', "%".$values['value']);
} else {
$this->db->or_where($values['field'].' like ', "%".$values['value']);
}
}
if($values['operator'] == "is_empty") {
if($search_type == "AND") {
$this->db->where($values['field'], "");
} else {
$this->db->or_where($values['field'], "");
}
}
if($values['operator'] == "is_not_empty") {
if($search_type == "AND") {
$this->db->where($values['field'].' !=', "");
} else {
$this->db->or_where($values['field'].' !=', "");
}
}
if($values['operator'] == "is_null") {
if($search_type == "AND") {
$this->db->where($values['field'].' is ', NULL);
} else {
$this->db->or_where($values['field'].' is ', NULL);
}
}
if($values['operator'] == "is_not_null") {
if($search_type == "AND") {
$this->db->where($values['field'].' is not ', NULL);
} else {
$this->db->or_where($values['field'].' is not ', NULL);
}
}
if($values['operator'] == "less") {
if($search_type == "AND") {
$this->db->where($values['field'].' <', $values['value']);
} else {
$this->db->or_where($values['field'].' <', $values['value']);
}
}
if($values['operator'] == "less_or_equal") {
if($search_type == "AND") {
$this->db->where($values['field'].' <=', $values['value']);
} else {
$this->db->or_where($values['field'].' <=', $values['value']);
}
}
if($values['operator'] == "greater") {
if($search_type == "AND") {
$this->db->where($values['field'].' >', $values['value']);
} else {
$this->db->or_where($values['field'].' >', $values['value']);
}
}
if($values['operator'] == "greater_or_equal") {
if($search_type == "AND") {
$this->db->where($values['field'].' >=', $values['value']);
} else {
$this->db->or_where($values['field'].' >=', $values['value']);
}
}
}
}
}
}
$this->db->order_by('COL_TIME_ON', 'DESC');
$query = $this->db->get($this->config->item('table_name'));
echo json_encode($query->result_array());
} else {
echo "Noooooooob";
}
}
}