Jarves\Storage\Propel::mapFilter PHP Method

mapFilter() public method

public mapFilter ( mixed $query, array $filter )
$query mixed
$filter array
    public function mapFilter($query, $filter)
    {
        foreach ((array) $filter as $key => $value) {
            $field = $this->getDefinition()->getField($key);
            if (!$field) {
                continue;
            }
            $columns = $field->getFieldType()->getColumns();
            if (1 < count($columns)) {
                foreach ($columns as $idx => $column) {
                    $filter = 'filterBy' . ucfirst($column->getName());
                    if (method_exists($query, $filter)) {
                        $namedIndex = ucfirst($column->getName());
                        if (0 === strpos($namedIndex, $key)) {
                            $namedIndex = substr($namedIndex, strlen($key));
                        }
                        $valueToSet = isset($value[$idx]) ? $value[$idx] : $value[$namedIndex];
                        if ('integer' === $column->getPhpDataType()) {
                            $valueToSet = (int) $valueToSet;
                        }
                        $query->{$filter}($valueToSet);
                    }
                }
            } else {
                $column = $columns[0];
                $filter = 'filterBy' . ucfirst($column->getName());
                $valueToSet = $value;
                if ('integer' === $column->getPhpDataType()) {
                    $valueToSet = (int) $valueToSet;
                }
                $query->{$filter}($valueToSet);
            }
        }
    }