Chris@18: offset = $offset; Chris@18: $this->size = $size; Chris@18: } Chris@18: Chris@18: /** Chris@18: * Returns the current offset. Chris@18: * Chris@18: * @return int Chris@18: * The query offset. Chris@18: */ Chris@18: public function getOffset() { Chris@18: return $this->offset; Chris@18: } Chris@18: Chris@18: /** Chris@18: * Returns the page size. Chris@18: * Chris@18: * @return int Chris@18: * The requested size of the query result. Chris@18: */ Chris@18: public function getSize() { Chris@18: return $this->size; Chris@18: } Chris@18: Chris@18: /** Chris@18: * Creates an OffsetPage object from a query parameter. Chris@18: * Chris@18: * @param mixed $parameter Chris@18: * The `page` query parameter from the Symfony request object. Chris@18: * Chris@18: * @return \Drupal\jsonapi\Query\OffsetPage Chris@18: * An OffsetPage object with defaults. Chris@18: */ Chris@18: public static function createFromQueryParameter($parameter) { Chris@18: if (!is_array($parameter)) { Chris@18: $cacheability = (new CacheableMetadata())->addCacheContexts(['url.query_args:page']); Chris@18: throw new CacheableBadRequestHttpException($cacheability, 'The page parameter needs to be an array.'); Chris@18: } Chris@18: Chris@18: $expanded = $parameter + [ Chris@18: static::OFFSET_KEY => static::DEFAULT_OFFSET, Chris@18: static::SIZE_KEY => static::SIZE_MAX, Chris@18: ]; Chris@18: Chris@18: if ($expanded[static::SIZE_KEY] > static::SIZE_MAX) { Chris@18: $expanded[static::SIZE_KEY] = static::SIZE_MAX; Chris@18: } Chris@18: Chris@18: return new static($expanded[static::OFFSET_KEY], $expanded[static::SIZE_KEY]); Chris@18: } Chris@18: Chris@18: }