父节点
							
								
									f43115508c
								
							
						
					
					
						当前提交
						a12531fa60
					
				
					共有  1 个文件被更改,包括 133 次插入 和 248 次删除
				
			
		|  | @ -130,257 +130,142 @@ class Search extends CI_Controller { | ||||||
| 		$this->db->update('queries', $data); | 		$this->db->update('queries', $data); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	function fetchQueryResult($json, $returnquery) { | 	function buildWhere(array $object, string $condition = null): void | ||||||
| 
 |  | ||||||
| 		$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") { | 		 * The $object is one of the following: | ||||||
|  | 		 * - a group, with 'condition' and 'rules' keys | ||||||
|  | 		 * - a condition, that is either 'AND' or 'OR' depending on the parent group setting | ||||||
|  | 		 */ | ||||||
|  | 		$objectIsGroup = isset($object['condition']); | ||||||
|  | 		if ($objectIsGroup) { | ||||||
|  | 			if ($condition === null || $condition === 'AND') { | ||||||
| 				$this->db->group_start(); | 				$this->db->group_start(); | ||||||
| 			} else { | 			} else { | ||||||
| 				$this->db->or_group_start(); | 				$this->db->or_group_start(); | ||||||
| 			} | 			} | ||||||
| 						foreach($values['rules'] as $group_value) | 			foreach ($object['rules'] as $rule) { | ||||||
| 						{ | 				/* | ||||||
| 							$group_value['field'] = $this->config->item('table_name') . '.' . $group_value['field']; | 				 * Now iterate over the children, that are either groups or conditions | ||||||
| 
 | 				 */ | ||||||
| 							if($group_value['operator'] == "equal") { | 				$this->buildWhere($rule, $object['condition']); | ||||||
| 								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(); | 			$this->db->group_end(); | ||||||
| 		} else { | 		} else { | ||||||
| 						//print_r($values['field']);
 | 			$object['field'] = $this->config->item('table_name') . '.' . $object['field']; | ||||||
| 						$values['field'] = $this->config->item('table_name') . '.' . $values['field']; |  | ||||||
| 
 | 
 | ||||||
| 						if(isset($values['operator'])) { | 			if ($object['operator'] == "equal") { | ||||||
| 
 | 				if ($condition == "AND") { | ||||||
| 						} | 					$this->db->where($object['field'], $object['value']); | ||||||
| 						if($values['operator'] == "equal") { |  | ||||||
| 							if($search_type == "AND") { |  | ||||||
| 								$this->db->where($values['field'], $values['value']); |  | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'], $values['value']); | 					$this->db->or_where($object['field'], $object['value']); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "not_equal") { | 			if ($object['operator'] == "not_equal") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' !=', $values['value']); | 					$this->db->where($object['field'] . ' !=', $object['value']); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' !=', $values['value']); | 					$this->db->or_where($object['field'] . ' !=', $object['value']); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "begins_with") { | 			if ($object['operator'] == "begins_with") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' like ', $values['value']."%"); | 					$this->db->where($object['field'] . ' like ', $object['value'] . "%"); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' like ', $values['value']."%"); | 					$this->db->or_where($object['field'] . ' like ', $object['value'] . "%"); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "contains") { | 			if ($object['operator'] == "contains") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' like ', "%".$values['value']."%"); | 					$this->db->where($object['field'] . ' like ', "%" . $object['value'] . "%"); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' like ', "%".$values['value']."%"); | 					$this->db->or_where($object['field'] . ' like ', "%" . $object['value'] . "%"); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "ends_with") { | 			if ($object['operator'] == "ends_with") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' like ', "%".$values['value']); | 					$this->db->where($object['field'] . ' like ', "%" . $object['value']); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' like ', "%".$values['value']); | 					$this->db->or_where($object['field'] . ' like ', "%" . $object['value']); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "is_empty") { | 			if ($object['operator'] == "is_empty") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'], ""); | 					$this->db->where($object['field'], "''"); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'], ""); | 					$this->db->or_where($object['field'], "''"); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "is_not_empty") { | 			if ($object['operator'] == "is_not_empty") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' !=', ""); | 					$this->db->where($object['field'] . ' !=', "''"); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' !=', ""); | 					$this->db->or_where($object['field'] . ' !=', "''"); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "is_null") { | 			if ($object['operator'] == "is_null") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' is ', NULL); | 					$this->db->where($object['field'] . ' is ', NULL); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' is ', NULL); | 					$this->db->or_where($object['field'] . ' is ', NULL); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "is_not_null") { | 			if ($object['operator'] == "is_not_null") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' is not ', NULL); | 					$this->db->where($object['field'] . ' is not ', NULL); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' is not ', NULL); | 					$this->db->or_where($object['field'] . ' is not ', NULL); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "less") { | 
 | ||||||
| 							if($search_type == "AND") { | 			if ($object['operator'] == "less") { | ||||||
| 								$this->db->where($values['field'].' <', $values['value']); | 				if ($condition == "AND") { | ||||||
|  | 					$this->db->where($object['field'] . ' <', $object['value']); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' <', $values['value']); | 					$this->db->or_where($object['field'] . ' <', $object['value']); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "less_or_equal") { | 			if ($object['operator'] == "less_or_equal") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' <=', $values['value']); | 					$this->db->where($object['field'] . ' <=', $object['value']); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' <=', $values['value']); | 					$this->db->or_where($object['field'] . ' <=', $object['value']); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "greater") { | 			if ($object['operator'] == "greater") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' >', $values['value']); | 					$this->db->where($object['field'] . ' >', $object['value']); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' >', $values['value']); | 					$this->db->or_where($object['field'] . ' >', $object['value']); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 						if($values['operator'] == "greater_or_equal") { | 			if ($object['operator'] == "greater_or_equal") { | ||||||
| 							if($search_type == "AND") { | 				if ($condition == "AND") { | ||||||
| 								$this->db->where($values['field'].' >=', $values['value']); | 					$this->db->where($object['field'] . ' >=', $object['value']); | ||||||
| 				} else { | 				} else { | ||||||
| 								$this->db->or_where($values['field'].' >=', $values['value']); | 					$this->db->or_where($object['field'] . ' >=', $object['value']); | ||||||
|  | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 				} | 	function fetchQueryResult($json, $returnquery) { | ||||||
| 			} | 
 | ||||||
| 		} | 		$search_items = json_decode($json, true); | ||||||
|  | 
 | ||||||
|  | 		$this->buildWhere($search_items); | ||||||
| 
 | 
 | ||||||
| 		$this->db->order_by('COL_TIME_ON', 'DESC'); | 		$this->db->order_by('COL_TIME_ON', 'DESC'); | ||||||
| 		$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id'); | 		$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id'); | ||||||
|  |  | ||||||
		正在加载…
	
		在新工单中引用