/** * {@inheritDoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $this->auditAlias = $ds->generateParameterName('a'); $this->auditFieldAlias = $ds->generateParameterName('f'); $this->fieldParam = $ds->generateParameterName('field'); $this->objectClassParam = $ds->generateParameterName('objectClass'); if (!$ds instanceof OrmFilterDatasourceAdapter) { throw new LogicException(sprintf('"Oro\\Bundle\\FilterBundle\\Datasource\\Orm\\OrmFilterDatasourceAdapter" expected but "%s" given.', get_class($ds))); } $qb = $ds->getQueryBuilder(); $fieldName = $this->getField($data['auditFilter']['columnName']); list($objectAlias) = $qb->getRootAliases(); $objectClass = $this->getClass($data['auditFilter']['columnName'], $qb->getRootEntities()); $metadata = $qb->getEntityManager()->getClassMetadata($objectClass); if ($metadata->isIdentifierComposite) { throw new \LogicException('Composite identifiers are not supported.'); } $identifier = $metadata->getIdentifier()[0]; $auditQb = $qb->getEntityManager()->getRepository('OroDataAuditBundle:Audit')->createQueryBuilder($this->auditAlias); $auditQb->select('1')->andWhere(sprintf('%s.objectClass = :%s', $this->auditAlias, $this->objectClassParam))->andWhere(sprintf('%s.objectId = %s.%s', $this->auditAlias, $objectAlias, $identifier))->setParameter($this->objectClassParam, $objectClass)->setMaxResults(1); $auditQb->join(sprintf('%s.fields', $this->auditAlias), $this->auditFieldAlias, Expr\Join::WITH, sprintf('%s.field = :%s', $this->auditFieldAlias, $this->fieldParam))->setParameter($this->fieldParam, $fieldName); $auditDs = new OrmFilterDatasourceAdapter($auditQb); $this->applyFilter($auditDs, 'datetime', sprintf('%s.loggedAt', $this->auditAlias), $data['auditFilter']['data']); $this->applyNewAuditValueFilter($auditDs, $objectClass, $fieldName, $data); $this->applyFilterToClause($ds, $ds->expr()->exists($auditQb->getQuery()->getDQL())); foreach ($auditQb->getParameters() as $parameter) { $qb->setParameter($parameter->getName(), $parameter->getValue(), $parameter->getType()); } }
/** * {@inheritdoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $data = $this->dateFilterUtility->parseData($this->get(FilterUtility::DATA_NAME_KEY), $data); if (!$data) { return false; } $dateStartValue = $data['date_start']; $dateEndValue = $data['date_end']; $startDateParameterName = $ds->generateParameterName($this->getName()); $endDateParameterName = $ds->generateParameterName($this->getName()); $this->applyDependingOnType($data['type'], $ds, $dateStartValue, $dateEndValue, $startDateParameterName, $endDateParameterName, $data['field']); if (null !== $dateStartValue) { $ds->setParameter($startDateParameterName, $dateStartValue); } if (null !== $dateEndValue) { $ds->setParameter($endDateParameterName, $dateEndValue); } return true; }
/** * {@inheritdoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $this->activityAlias = $ds->generateParameterName('r'); $this->activityListAlias = $ds->generateParameterName('a'); if (!$ds instanceof OrmFilterDatasourceAdapter) { throw new LogicException(sprintf('"Oro\\Bundle\\FilterBundle\\Datasource\\Orm\\OrmFilterDatasourceAdapter" expected but "%s" given.', get_class($ds))); } $type = $data['filterType']; unset($data['filterType']); $qb = $ds->getQueryBuilder(); $em = $qb->getEntityManager(); $metadata = $em->getClassMetadata($data['entityClassName']); $activityQb = $this->createActivityQueryBuilder($em, $data, $this->getIdentifier($metadata)); $activityPart = $ds->expr()->exists($activityQb->getQuery()->getDQL()); if ($type === static::TYPE_HAS_NOT_ACTIVITY) { $activityPart = $ds->expr()->not($activityPart); } $this->applyFilterToClause($ds, $activityPart); $this->copyParameters($activityQb, $qb); }
/** * {@inheritdoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $data = $this->parseData($data); if (!$data) { return false; } $operator = $this->getOperator($data['type']); $parameterName = $ds->generateParameterName($this->getName()); $this->applyFilterToClause($ds, $ds->expr()->comparison($this->get(FilterUtility::DATA_NAME_KEY), $operator, $parameterName, true)); $ds->setParameter($parameterName, $data['value']); return true; }
/** * {@inheritdoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $data = $this->parseData($data); if (!$data) { return false; } $type = $data['type']; $parameterName = $ds->generateParameterName($this->getName()); $this->applyFilterToClause($ds, $this->buildComparisonExpr($ds, $type, $this->get(FilterUtility::DATA_NAME_KEY), $parameterName)); if (!in_array($type, [FilterUtility::TYPE_EMPTY, FilterUtility::TYPE_NOT_EMPTY])) { $ds->setParameter($parameterName, $data['value']); } return true; }
/** * {@inheritdoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $data = $this->parseData($data); if (!$data) { return false; } $operator = $this->getOperator($data['type']); $ds->generateParameterName($this->getName()); $data['data'] = $data['value']; unset($data['value']); unset($data['type']); $this->util->applyFilter($ds, $this->get(ProductFilterUtility::DATA_NAME_KEY), $operator, $data); return true; }
/** * {@inheritDoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $data = $this->parseData($data); if (!$data) { return false; } $type = $data['type']; if (count($data['value']) > 1 || isset($data['value'][0]) && $data['value'][0] != "") { $parameterName = $ds->generateParameterName($this->getName()); $this->applyFilterToClause($ds, $this->get(FilterUtility::DATA_NAME_KEY) . ' in (:' . $parameterName . ')'); if (!in_array($type, [FilterUtility::TYPE_EMPTY, FilterUtility::TYPE_NOT_EMPTY], true)) { $ds->setParameter($parameterName, $data['value']); } } return true; }
/** * {@inheritDoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $data = $this->parseData($data); if (!$data) { return false; } $type = $data['type']; if (count($data['value']) > 1 || isset($data['value'][0]) && $data['value'][0] != "") { $parameterName = $ds->generateParameterName($this->getName()); $qb2 = $this->registry->getManager()->getRepository('Oro\\Bundle\\UserBundle\\Entity\\User')->createQueryBuilder('u')->select('u.id')->leftJoin('u.businessUnits', 'bu')->where('bu.id in (:' . $parameterName . ')')->getQuery()->getDQL(); $this->applyFilterToClause($ds, $this->get(FilterUtility::DATA_NAME_KEY) . ' in (' . $qb2 . ')'); if (!in_array($type, [FilterUtility::TYPE_EMPTY, FilterUtility::TYPE_NOT_EMPTY], true)) { $ds->setParameter($parameterName, $data['value']); } } return true; }
/** * {@inheritdoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $data = $this->parseData($data); if (!$data) { return false; } $operator = $this->getOperator($data['type']); $parameter = $ds->generateParameterName($this->getName()); if ('IN' == $operator) { $expression = $ds->expr()->in($this->get(FilterUtility::DATA_NAME_KEY), $parameter, true); } else { $expression = $ds->expr()->notIn($this->get(FilterUtility::DATA_NAME_KEY), $parameter, true); } $this->applyFilterToClause($ds, $expression); $ds->setParameter($parameter, $data['value']); return true; }
/** * {@inheritdoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $data = $this->parseData($data); if (!$data) { return false; } $operator = $this->getOperator($data['type']); $ds->generateParameterName($this->getName()); // Convert value to base unit if ('EMPTY' !== $operator) { $this->converter->setFamily($this->family); $baseValue = $this->converter->convertBaseToStandard($data['unit'], $data['value']); } else { $baseValue = null; } $this->util->applyFilterByAttribute($ds, $this->get(ProductFilterUtility::DATA_NAME_KEY), $baseValue, $operator); return true; }
/** * {@inheritdoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $this->ds = $ds; $data = $this->parseData($data); $this->ds = null; if (!$data) { return false; } $type = $data['type']; $values = is_array($data['value']) ? $data['value'] : [$data['value']]; foreach ($values as $value) { $parameterName = $ds->generateParameterName($this->getName()); $this->applyFilterToClause($ds, $this->buildComparisonExpr($ds, $type, $this->getFieldExpr($type), $parameterName)); if (!in_array($type, [FilterUtility::TYPE_EMPTY, FilterUtility::TYPE_NOT_EMPTY])) { $ds->setParameter($parameterName, $value); } } return true; }
/** * {@inheritdoc} */ public function apply(FilterDatasourceAdapterInterface $ds, $data) { $data = $this->parseData($data); if (!$data) { return false; } if ($data['in'] !== null) { if (!empty($data['in'])) { $parameterName = $ds->generateParameterName($this->getName()); $this->applyFilterToClause($ds, $ds->expr()->in($this->get(FilterUtility::DATA_NAME_KEY), $parameterName, true)); $ds->setParameter($parameterName, $data['in']); } else { // requested to return all selected rows, but no one row are selected $this->applyFilterToClause($ds, $ds->expr()->eq(0, 1)); } } elseif ($data['out'] !== null && !empty($data['out'])) { $parameterName = $ds->generateParameterName($this->getName()); $this->applyFilterToClause($ds, $ds->expr()->notIn($this->get(FilterUtility::DATA_NAME_KEY), $parameterName, true)); $ds->setParameter($parameterName, $data['out']); } return true; }
/** * @param FilterDatasourceAdapterInterface $ds * @param string $fieldName * @param mixed $valueStart * @param mixed $valueEnd * @return string */ protected function buildNotBetweenExpr(FilterDatasourceAdapterInterface $ds, $fieldName, $valueStart, $valueEnd) { $parameterStart = $ds->generateParameterName($this->getName()); $parameterEnd = $ds->generateParameterName($this->getName()); if ($valueStart && $valueEnd) { $ds->setParameter($parameterStart, $valueStart); $ds->setParameter($parameterEnd, $valueEnd); return $ds->expr()->orX($ds->expr()->lt($fieldName, $parameterStart, true), $ds->expr()->gt($fieldName, $parameterEnd, true)); } elseif ($valueStart) { $ds->setParameter($parameterStart, $valueStart); return $ds->expr()->lt($fieldName, $parameterStart, true); } else { $ds->setParameter($parameterEnd, $valueEnd); return $ds->expr()->gt($fieldName, $parameterEnd, true); } }