private function getArticleValues(Request $request) { $values = self::getCommonValues($request); self::checkRecordsArguments($request); self::checkMetadataPrefix($request); $from = self::MIN_FROM; $from_temp = self::getQueryValue($request, 'from'); if ($from_temp != null) { $from = $from_temp; } $until = self::MAX_UNTIL; $until_temp = self::getQueryValue($request, 'until'); if ($until_temp != null) { if (strlen($until_temp) == 10) { // day granularity $until = $until_temp . 'T23:59:59Z'; } else { $until = $until_temp; } } $values['completeListSize'] = ArticleDao::getContentCount($from, $until); $resumptionToken = self::getQueryValue($request, 'resumptionToken'); if ($resumptionToken == null) { $resumptionToken = 0; } self::checkToken($resumptionToken, $values['completeListSize']); if ($values['completeListSize'] == 0) { throw new OaiError('0 records', self::ERROR_NO_RECORDS_MATCH); } $articles = ArticleDao::findContentCustomPaginated($resumptionToken, self::PAGE_SIZE, $from, $until); $articles = ArticleService::getEnrichedArticles($articles); foreach ($articles as $article) { self::enrichArticle($article); } $values['articles'] = $articles; $values['expirationDate'] = self::getDateAsString(time() + 86400 * 2); $values['cursor'] = $resumptionToken; if ($resumptionToken + self::PAGE_SIZE > $values['completeListSize']) { $values['resumptionToken'] = ""; } else { $values['resumptionToken'] = $resumptionToken + self::PAGE_SIZE; } return $values; }