/**
  * Apply the filter to the ModelCriteria instance.
  *
  * @param ProxyQueryInterface $query
  * @param string              $alias
  * @param string              $field
  * @param string              $value
  */
 public function filter(ProxyQueryInterface $query, $alias, $field, $value)
 {
     $map = $this->getCriteriaMap();
     $comparison = !empty($map[$value['type']]) ? $map[$value['type']] : null;
     /* @var $query ModelCriteria */
     if (empty($comparison)) {
         $query->filterBy($field, sprintf($this->getOption('format', '%s'), $value['value']));
     } else {
         $query->filterBy($field, sprintf($this->getOption('format', '%s'), $value['value']), $comparison);
     }
 }
 /**
  * Apply the filter to the ModelCriteria instance.
  *
  * @param ProxyQueryInterface $query
  * @param string              $alias
  * @param string              $field
  * @param string              $value
  */
 public function filter(ProxyQueryInterface $query, $alias, $field, $value)
 {
     $map = $this->getCriteriaMap();
     if ($value['value'] instanceof PropelObjectCollection) {
         $comparison = $value['type'] === ChoiceType::TYPE_NOT_CONTAINS ? $map[$value['type']] : Criteria::IN;
         $query->filterBy($field, $value['value'], $comparison);
     } else {
         $comparison = $map[$value['type'] ?: ChoiceType::TYPE_CONTAINS];
         $query->filterBy($field, $value['value'], $comparison);
     }
 }
 /**
  * Apply the filter to the ModelCriteria instance.
  *
  * @param ProxyQueryInterface $query
  * @param string              $alias
  * @param string              $field
  * @param string              $value
  */
 public function filter(ProxyQueryInterface $query, $alias, $field, $value)
 {
     $map = $this->getCriteriaMap();
     if (!array_key_exists('value', $value) || !array_key_exists($value['value'], $map)) {
         return;
     }
     /* @var $query ModelCriteria */
     $query->filterBy($field, true, $map[$value['value']]);
 }
 /**
  * Filters according to a given single date/datetime.
  *
  * @param ProxyQueryInterface $query
  * @param string              $field
  * @param string              $value
  */
 protected function filterDate(ProxyQueryInterface $query, $field, $data)
 {
     // default type for simple filter
     $data['type'] = !isset($data['type']) || !is_numeric($data['type']) ? DateType::TYPE_EQUAL : $data['type'];
     // just find an operator and apply query
     $operator = $this->getOperator($data['type']);
     // transform types
     if ($this->getOption('input_type') === 'timestamp') {
         $data['value'] = $data['value'] instanceof \DateTime ? $data['value']->getTimestamp() : 0;
     }
     $query->filterBy($field, $data['value'], $operator);
 }
 /**
  * @todo Add support for related classes.
  * @todo Add support for multi-column primary key.
  *
  * @param string                                           $class
  * @param \Sonata\AdminBundle\Datagrid\ProxyQueryInterface $query
  * @param array                                            $idx
  */
 public function addIdentifiersToQuery($class, ProxyQueryInterface $query, array $idx)
 {
     if (null !== ($column = $this->getModelIdentifier($class))) {
         $query->filterBy($column, $idx, \Criteria::IN);
     }
 }