public static function extract(array $parameters) { $filter = new self(); $fields = isset($parameters['fields']) ? $parameters['fields'] : null; $startIndex = isset($parameters['startIndex']) ? $parameters['startIndex'] : null; $count = isset($parameters['count']) ? $parameters['count'] : null; $sortBy = isset($parameters['sortBy']) ? $parameters['sortBy'] : null; $sortOrder = isset($parameters['sortOrder']) ? $parameters['sortOrder'] : null; $filterBy = isset($parameters['filterBy']) ? $parameters['filterBy'] : null; $filterOp = isset($parameters['filterOp']) ? $parameters['filterOp'] : null; $filterValue = isset($parameters['filterValue']) ? $parameters['filterValue'] : null; $updatedSince = isset($parameters['updatedSince']) ? $parameters['updatedSince'] : null; if (!empty($fields)) { $parts = explode(',', $fields); $fields = array(); foreach ($parts as $field) { $field = trim($field); if (strlen($field) > 0 && strlen($field) < 32 && ctype_alnum($field)) { $fields[] = $field; } } } else { $fields = null; } $filter->setFields($fields); $startIndex = (int) $startIndex; if (!empty($startIndex) && $startIndex > 0) { $filter->setStartIndex($startIndex); } $count = (int) $count; if (!empty($count) && $count > 0) { $filter->setCount($count); } if (!empty($sortBy) && strlen($sortBy) < 128) { $filter->setSortBy($sortBy); } if (!empty($sortOrder)) { switch (strtolower($sortOrder)) { case 'asc': case 'ascending': $filter->setSortOrder(Sql::SORT_ASC); break; case 'desc': case 'descending': $filter->setSortOrder(Sql::SORT_DESC); break; } } if (!empty($filterBy) && ctype_alnum($filterBy) && strlen($filterBy) < 32) { $filter->setFilterBy($filterBy); } if (!empty($filterOp) && in_array($filterOp, array('contains', 'equals', 'startsWith', 'present'))) { $filter->setFilterOp($filterOp); } if (!empty($filterValue) && strlen($filterValue) < 128) { $filter->setFilterValue($filterValue); } if (!empty($updatedSince)) { $filter->setUpdatedSince(new \DateTime($updatedSince)); } return $filter; }