public function getWeighedSearchCondition($fields, $searchTerm) { if (!is_array($searchTerm)) { $searchTerm = array($searchTerm); } $if = array(); foreach ($fields as $field => $weight) { foreach ($searchTerm as $term) { $cond = new LikeCond(new ARFieldHandle($this->getClassName(), $field), '%' . $term . '%'); $if[] = 'IF(' . $cond->toString() . ', ' . $weight . ', '; } } return implode('', $if) . 0 . str_repeat(')', count($if)); }
private function applyStateFilter(Condition $cond) { $filters = $this->request->get('filters'); if (!is_array($filters)) { $filters = (array) json_decode($filters); } if (isset($filters['ShippingAddress.stateName'])) { $value = $filters['ShippingAddress.stateName']; $c = new LikeCond(new ARFieldHandle('UserAddress', "stateName"), '%' . $value . '%'); $c->addOR(new LikeCond(new ARFieldHandle('State', "name"), '%' . $value . '%')); $cond->addAND($c); unset($filters['ShippingAddress.stateName']); $this->request->set('filters', $filters); } }