/** * @param string $offset * @param string $itemCountPerPage * @throws Exception\InvalidArgumentException * @return \Matryoshka\Model\ResultSet\ResultSetInterface */ protected function loadItems($offset = null, $itemCountPerPage = null) { $criteria = clone $this->criteria; if ($itemCountPerPage !== null) { $criteria->setLimit($itemCountPerPage); } if ($offset !== null) { $criteria->setOffset($offset); } if ($criteria->getPage() === null) { $criteria->setPage(1); } /* @var $restClient RestClientInterface */ $restClient = $this->model->getDataGateway(); if (!$restClient instanceof RestClientInterface) { throw new Exception\InvalidArgumentException(sprintf('Model must provide a %s datagateway', RestClientInterface::class)); } $resultSet = $this->model->find($criteria); $payloadData = (array) $restClient->getLastResponseData(); $this->count = null; if (isset($payloadData[$this->totalItemsParamName])) { $this->count = $payloadData[$this->totalItemsParamName]; } $offset = $criteria->getOffset(); $itemCountPerPage = $criteria->getLimit(); $cacheKey = $offset . '-' . $itemCountPerPage; $this->preloadCache = [$cacheKey => $resultSet]; return $resultSet; }
/** * @param ResultSetInterface $resultSet * @return $this */ public function setResultSetPrototype(ResultSetInterface $resultSet) { return parent::setResultSetPrototype($resultSet); }