Beispiel #1
0
 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);
     }
 }