| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Search extends CI_Controller { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-05 06:12:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function __construct() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         parent::__construct(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->load->helper(array('form', 'url')); | 
					
						
							| 
									
										
										
										
											2021-02-10 01:52:23 +08:00
										 |  |  |         if($this->optionslib->get_option('global_search') != "true") { | 
					
						
							| 
									
										
										
										
											2019-09-12 00:35:31 +08:00
										 |  |  |             $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'); } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-09-05 06:12:45 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 	public function index() | 
					
						
							|  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2011-11-05 01:32:03 +08:00
										 |  |  | 		$data['page_title'] = "Search"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-14 18:52:11 +08:00
										 |  |  |         $this->load->view('interface_assets/header', $data); | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 		$this->load->view('search/main'); | 
					
						
							| 
									
										
										
										
											2019-05-14 18:52:11 +08:00
										 |  |  |         $this->load->view('interface_assets/footer'); | 
					
						
							| 
									
										
										
										
											2011-06-17 20:52:00 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2019-09-05 06:12:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Filter is for advanced searching and filtering of the logbook
 | 
					
						
							|  |  |  |     public function filter() { | 
					
						
							|  |  |  |         $data['page_title'] = "Search & Filter Logbook"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->load->library('form_validation'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-05 06:42:11 +08:00
										 |  |  |         $this->load->model('Search_filter'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $data['get_table_names'] = $this->Search_filter->get_table_columns(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //print_r($this->Search_filter->get_table_columns());
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-05 06:12:45 +08:00
										 |  |  |         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'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-09-12 07:53:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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) | 
					
						
							|  |  |  |                     { | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |                         if(isset($values['rules'])) { | 
					
						
							|  |  |  |                             if($values['condition'] == "AND") { | 
					
						
							|  |  |  |                                 $this->db->group_start(); | 
					
						
							| 
									
										
										
										
											2019-09-12 07:53:39 +08:00
										 |  |  |                             } else { | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  |                                 $this->db->or_group_start(); | 
					
						
							| 
									
										
										
										
											2019-09-12 07:53:39 +08:00
										 |  |  |                             } | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  |                             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']); | 
					
						
							|  |  |  |                                     } | 
					
						
							|  |  |  |                                 } | 
					
						
							| 
									
										
										
										
											2019-10-10 00:57:55 +08:00
										 |  |  | 								 | 
					
						
							|  |  |  | 								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); | 
					
						
							|  |  |  |                                     } | 
					
						
							|  |  |  |                                 } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |                                 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']); | 
					
						
							|  |  |  |                                     } | 
					
						
							|  |  |  |                                 } | 
					
						
							| 
									
										
										
										
											2019-09-12 07:53:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |                             } | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  |                             $this->db->group_end(); | 
					
						
							|  |  |  |                         } else { | 
					
						
							|  |  |  |                             //print_r($values['field']);
 | 
					
						
							|  |  |  |                             if(isset($values['operator'])) { | 
					
						
							| 
									
										
										
										
											2019-09-12 07:53:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-15 01:00:41 +08:00
										 |  |  |                             } | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  |                             if($values['operator'] == "equal") { | 
					
						
							|  |  |  |                                 if($search_type == "AND") { | 
					
						
							|  |  |  |                                     $this->db->where($values['field'], $values['value']);  | 
					
						
							|  |  |  |                                 } else { | 
					
						
							|  |  |  |                                     $this->db->or_where($values['field'], $values['value']);  | 
					
						
							|  |  |  |                                 } | 
					
						
							|  |  |  |                             } | 
					
						
							| 
									
										
										
										
											2019-09-15 01:00:41 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  |                             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']); | 
					
						
							|  |  |  |                                 } | 
					
						
							| 
									
										
										
										
											2019-09-15 01:00:41 +08:00
										 |  |  |                             } | 
					
						
							| 
									
										
										
										
											2019-10-10 00:57:55 +08:00
										 |  |  | 							 | 
					
						
							|  |  |  | 							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); | 
					
						
							|  |  |  | 								} | 
					
						
							|  |  |  | 							} | 
					
						
							| 
									
										
										
										
											2019-09-15 01:00:41 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  |                             if($values['operator'] == "less") { | 
					
						
							|  |  |  |                                 if($search_type == "AND") { | 
					
						
							|  |  |  |                                    $this->db->where($values['field'].' <', $values['value']); | 
					
						
							|  |  |  |                                 } else { | 
					
						
							|  |  |  |                                    $this->db->or_where($values['field'].' <', $values['value']); | 
					
						
							|  |  |  |                                 } | 
					
						
							| 
									
										
										
										
											2019-09-15 01:00:41 +08:00
										 |  |  |                             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  |                             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']); | 
					
						
							|  |  |  |                                 } | 
					
						
							| 
									
										
										
										
											2019-09-15 01:00:41 +08:00
										 |  |  |                             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-15 03:40:17 +08:00
										 |  |  |                             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']); | 
					
						
							|  |  |  |                                 } | 
					
						
							|  |  |  |                             } | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                          | 
					
						
							| 
									
										
										
										
											2019-09-12 07:53:39 +08:00
										 |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2019-09-12 07:55:42 +08:00
										 |  |  |             $this->db->order_by('COL_TIME_ON', 'DESC'); | 
					
						
							| 
									
										
										
										
											2019-09-12 07:53:39 +08:00
										 |  |  |             $query = $this->db->get($this->config->item('table_name')); | 
					
						
							|  |  |  |             echo json_encode($query->result_array()); | 
					
						
							| 
									
										
										
										
											2019-10-10 00:57:55 +08:00
										 |  |  |             } else { | 
					
						
							|  |  |  | 				echo "Noooooooob"; | 
					
						
							| 
									
										
										
										
											2019-09-12 07:53:39 +08:00
										 |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-08-20 01:24:56 +08:00
										 |  |  | } |