This change removes the need for the option in cloudlog.php config and makes public search enabled via the frontend interface
		
			
				
	
	
		
			311 行
		
	
	
	
		
			14 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			311 行
		
	
	
	
		
			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->optionslib->get_option('global_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";
 | 
						|
          }
 | 
						|
 | 
						|
    }
 | 
						|
}
 |