/** * Filter data * * @param Table $table */ public function filter(Table $table) { $filters = $table->getFilters(); if (count($filters) == 0) { return; } $columns = $table->getColumns(); $result = []; foreach ($this->data as $row) { $passedAnds = true; foreach ($filters as $id => $filterData) { $passedOrs = false; foreach ($filterData as $name => $value) { $test = $this->checkFilter($name, $columns[$id]['type'], $value, $row[$id]); if ($test === true) { $passedOrs = true; } } if (!$passedOrs) { $passedAnds = false; } } if ($passedAnds) { $result[] = $row; } } $this->data = $result; }
/** * Filter data * * @param Table $table */ public function filter(Table $table) { $filters = $table->getFilters(); if (count($filters) == 0) { return; } $columns = $table->getColumns(); $result = []; foreach ($this->data as $row) { $passedAnds = true; foreach ($filters as $id => $filterData) { $passedOrs = false; foreach ($filterData as $name => $value) { $real = $row[$id]; if ($real && $columns[$id]['type'] == Table::TYPE_DATETIME) { if (is_string($real)) { if ($this->getDbTimezone()) { $real = new \DateTime($real, new \DateTimeZone($this->getDbTimezone())); } else { $real = new \DateTime($real); } } else { if (is_int($real)) { $real = new \DateTime('@' . $real); } } if (date_default_timezone_get()) { $real->setTimezone(new \DateTimeZone(date_default_timezone_get())); } } $test = $this->checkFilter($name, $columns[$id]['type'], $value, $real); if ($test === true) { $passedOrs = true; } } if (!$passedOrs) { $passedAnds = false; } } if ($passedAnds) { $result[] = $row; } } $this->data = $result; }
/** * Filter data * * @param Table $table */ public function filter(Table $table) { $this->sqlWhere = []; $this->sqlParams = []; $columns = $table->getColumns(); foreach ($table->getFilters() as $column => $filters) { foreach ($filters as $name => $value) { $this->buildFilter($columns[$column]['sql_id'], $columns[$column]['type'], $name, $value); } } if (count($this->sqlWhere) == 0) { return; } $ands = []; foreach ($this->sqlWhere as $filter => $ors) { $ands[] = '(' . join(') OR (', $ors) . ')'; } $qb = $this->getQueryBuilder(); $qb->andWhere('(' . join(') AND (', $ands) . ')'); foreach ($this->sqlParams as $name => $value) { $qb->setParameter($name, $value); } }
/** * Filter data * * @param Table $table * @return GenericDBAdapter */ public function filter(Table $table) { $this->sqlAnds = []; $this->sqlParams = $this->initialParams; $columns = $table->getColumns(); foreach ($table->getFilters() as $column => $filterData) { foreach ($filterData as $name => $value) { $this->buildFilter($columns[$column]['sql_id'], $columns[$column]['type'], $name, $value); } } return $this; }
/** * Filter data * * @param Table $table */ public function filter(Table $table) { $this->andOps = []; $columns = $table->getColumns(); foreach ($table->getFilters() as $column => $filters) { foreach ($filters as $name => $value) { $this->buildFilter($columns[$column]['field_name'], $columns[$column]['type'], $name, $value); } } if (count($this->andOps) == 0) { return; } $qb = $this->getQueryBuilder(); foreach ($this->andOps as $field => $orOps) { $expr = $qb->expr(); foreach ($orOps as $op) { $operator = $op['operator']; if ($operator == 'range') { $value1 = $op['value1']; $value2 = $op['value2']; if (strlen($value1) && strlen($value2)) { $expr->addOr($qb->expr()->field($field)->range($value1 instanceof MongoDate ? $value1 : (int) $value1, $value2 instanceof MongoDate ? $value2 : (int) $value2)); $expr->addOr($qb->expr()->field($field)->equals($value2 instanceof MongoDate ? $value2 : (int) $value2)); } else { if (strlen($value1)) { $expr->addOr($qb->expr()->field($field)->gte($value1 instanceof MongoDate ? $value1 : (int) $value1)); } else { if (strlen($value2)) { $expr->addOr($qb->expr()->field($field)->lte($value2 instanceof MongoDate ? $value2 : (int) $value2)); } } } } else { $value = $op['value']; $expr->addOr($qb->expr()->field($field)->{$operator}($value)); } } $qb->addAnd($expr); } }