/**
  * (non-PHPdoc)
  *
  * @see \Agent\Entity\Relationship::getQuery()
  */
 public function getQuery($value = null, $query = null, $required = null, $boost = null)
 {
     $query = parent::getQuery($value, $query, $required, $boost);
     $method = 'addMust';
     // $required ? 'addMust' : 'addShould';
     if (isset($value) && is_array($value) && count($value) == 2) {
         $range = new Elastica\Query\Range();
         $field = $this->getCriterion()->getTypeField();
         switch ($field) {
             case '_date':
                 foreach ($value as &$date) {
                     $time = strtotime($date);
                     if ($time) {
                         $date = date('Y-m-d\\TH:i:s', $time);
                     } else {
                         $date = date('Y-m-d\\TH:i:s', -9999999999.0);
                     }
                 }
                 break;
         }
         @(list($from, $to) = $value);
         if (isset($from, $to)) {
             $range->addField($field, ['gt' => $from, 'lt' => $to]);
             $query->{$method}($range);
         }
     }
     return $query;
 }
 /**
  * (non-PHPdoc)
  *
  * @see \Agent\Entity\Relationship::getQuery()
  */
 public function getQuery($value = null, $query = null, $required = null, $boost = null)
 {
     $query = parent::getQuery($value, $query, $required, $boost);
     $method = $required ? 'addMustNot' : 'addMustNot';
     if (isset($value)) {
         $query->{$method}(new Elastica\Query\Match('value', $value));
     }
     return $query;
 }
 /**
  * (non-PHPdoc)
  *
  * @see \Agent\Entity\Relationship::getQuery()
  */
 public function getQuery($values = null, $query = null, $required = null, $boost = null)
 {
     $fields = array_flip(['city', 'state', 'zip']);
     $location = array_intersect_key(array_filter($values), $fields);
     $criterion = $this->getCriterion();
     $method = 'addMust';
     // $required ? 'addMust' : 'addShould';
     $distance = empty($values['distance']) ? false : $values['distance'];
     if ($criterion && $location) {
         if (!$distance) {
             $query = parent::getQuery($values, $query, $required, $boost);
             $attribute = $criterion->getAttribute();
             if ($attribute) {
                 $attributeDesc = $attribute->getAttributeDesc();
                 if ($attributeDesc) {
                     $token = strtolower(trim(current(explode(' ', $attributeDesc))));
                     if ($token && isset($location[$token])) {
                         $value = $location[$token];
                         if (isset($value)) {
                             if (is_array($value)) {
                                 $statesQuery = new \Agent\Elastica\Query\BoolQuery();
                                 foreach ($value as $_value) {
                                     $state_full_name = $this->getStateNames($_value);
                                     if ($state_full_name) {
                                         $statesQuery->addShould(new Elastica\Query\Match('value', $state_full_name));
                                     }
                                     $statesQuery->addShould(new Elastica\Query\Match('value', $_value));
                                 }
                                 $query->{$method}($statesQuery);
                             } else {
                                 $state_full_name = $this->getStateNames($value);
                                 if ($state_full_name) {
                                     $query->{$method}(new Elastica\Query\Match('value', $state_full_name));
                                 }
                                 $query->{$method}(new Elastica\Query\Match('value', $value));
                             }
                         }
                     }
                 }
             }
         } else {
             try {
                 $localityQuery = new LocalityQuery($criterion->getServiceLocator());
                 $locality = $localityQuery->request($location);
                 if ($locality) {
                     list($latlon['lat'], $latlon['lon']) = $locality['_source']['latlon'];
                     $query = new Elastica\Query\GeoDistance('locality', $latlon, $distance . "mi");
                 }
             } catch (\Exception $e) {
                 //
             }
         }
     }
     return $query;
 }
 /**
  * (non-PHPdoc)
  *
  * @see \Agent\Entity\Relationship::getQuery()
  */
 public function getQuery($value = null, $query = null, $required = null, $boost = null)
 {
     $query = parent::getQuery($value, $query, $required, $boost);
     $method = $required ? 'addShould' : 'addShould';
     if (isset($value) && is_array($value)) {
         foreach ($value as $v) {
             $query->{$method}(new Elastica\Query\Match('value', $v));
         }
     }
     return $query;
 }
 /**
  * (non-PHPdoc)
  *
  * @see \Agent\Entity\Relationship::getQuery()
  */
 public function getQuery($value = null, $query = null, $required = null, $boost = null)
 {
     $query = parent::getQuery($value, $query, $required, $boost);
     $method = 'addMust';
     // $required ? 'addMust' : 'addShould';
     if (isset($value)) {
         $wildcard = new Elastica\Query\Wildcard('value', "*" . strtolower($value) . "*", $boost);
         $query->{$method}($wildcard);
     }
     return $query;
 }
Exemple #6
0
 /**
  * (non-PHPdoc)
  *
  * @see \Agent\Entity\Relationship::getQuery()
  */
 public function getQuery($value = null, $query = null, $required = null, $boost = null)
 {
     $from = $to = null;
     if ($value && is_array($value) && count($value) == 2) {
         @(list($from, $to) = $value);
     }
     $query = parent::getQuery(null, $query, $required, $boost);
     $method = 'addMust';
     // $required ? 'addMust' : 'addShould';
     if (isset($from, $to)) {
         $range = new Elastica\Query\Range();
         $range->addField($this->getCriterion()->getTypeField(), ['gte' => $from, 'lte' => $to]);
         $query->{$method}($range);
     }
     return $query;
 }
Exemple #7
0
 /**
  * (non-PHPdoc)
  *
  * @see \Agent\Entity\Relationship::getQuery()
  */
 public function getQuery($value = null, $query = null, $required = null, $boost = null)
 {
     $query = parent::getQuery($value, $query, $required, $boost);
     $method = 'addMust';
     // $required ? 'addMust' : 'addShould';
     if (isset($value)) {
         $bool = (bool) $value;
         switch ($bool) {
             case true:
                 $query->{$method}(new Elastica\Query\Terms('value', ['yes', 'true', '1']));
                 break;
             case false:
                 $query->{$method}(new Elastica\Query\Terms('value', ['no', 'false', '0']));
                 break;
         }
     }
     return $query;
 }
Exemple #8
0
 /**
  * (non-PHPdoc)
  *
  * @see \Agent\Entity\Relationship::getQuery()
  */
 public function getQuery($value = null, $query = null, $required = null, $boost = null)
 {
     $query = parent::getQuery($value, $query, $required, $boost);
     $method = 'addMust';
     // $required ? 'addMust' : 'addShould';
     if (isset($value)) {
         $range = new Elastica\Query\Range();
         $field = $this->getCriterion()->getTypeField();
         switch ($field) {
             case '_date':
                 $time = strtotime($value);
                 if ($time) {
                     $value = date('Y-m-d\\TH:i:s', $time);
                 } else {
                     $value = date('Y-m-d\\TH:i:s', -9999999999.0);
                 }
                 break;
         }
         $range->addField($field, ['lte' => $value]);
         $query->{$method}($range);
     }
     return $query;
 }