diff --git a/src/Api/Adapter/OaiPmhRepositoryTokenAdapter.php b/src/Api/Adapter/OaiPmhRepositoryTokenAdapter.php index e6c02b58bcb52eca323783c996df4c926ce81dd3..209ca3c223ead78b62ac38da4041648f6389fba5 100644 --- a/src/Api/Adapter/OaiPmhRepositoryTokenAdapter.php +++ b/src/Api/Adapter/OaiPmhRepositoryTokenAdapter.php @@ -75,21 +75,24 @@ class OaiPmhRepositoryTokenAdapter extends AbstractEntityAdapter public function buildQuery(QueryBuilder $qb, array $query) { + $isOldOmeka = \Omeka\Module::VERSION < 2; + $alias = $isOldOmeka ? \Omeka\Entity\Item::class : 'omeka_root'; + if (isset($query['id'])) { $qb->andWhere($qb->expr()->eq( - 'omeka_root.id', + $alias . '.id', $this->createNamedParameter($qb, $query['id'])) ); } if (isset($query['verb'])) { $qb->andWhere($qb->expr()->eq( - 'omeka_root.verb', + $alias . '.verb', $this->createNamedParameter($qb, $query['verb'])) ); } if (isset($query['expired']) && $query['expired']) { $qb->andWhere($qb->expr()->lte( - 'omeka_root.expiration', + $alias . '.expiration', $this->createNamedParameter($qb, (new DateTime)->format(DateTime::ATOM)) )); } diff --git a/src/OaiPmh/ResponseGenerator.php b/src/OaiPmh/ResponseGenerator.php index 959b529f245cfaa10b0d5d4bb2001ce9c439f165..b1feaed6d56bff55bf3b676e007aa2dbab7d2efe 100644 --- a/src/OaiPmh/ResponseGenerator.php +++ b/src/OaiPmh/ResponseGenerator.php @@ -618,12 +618,19 @@ class ResponseGenerator extends AbstractXmlGenerator */ private function listResponse($verb, $metadataPrefix, $cursor, $set, $from, $until) { + $isOldOmeka = \Omeka\Module::VERSION < 2; + $alias = $isOldOmeka ? \Omeka\Entity\Item::class : 'omeka_root'; + + /** + * @var \Omeka\Api\Adapter\Manager $apiAdapterManager + * @var \Doctrine\ORM\EntityManager $entityManager + */ $apiAdapterManager = $this->serviceLocator->get('Omeka\ApiAdapterManager'); $entityManager = $this->serviceLocator->get('Omeka\EntityManager'); - $itemRepository = $entityManager->getRepository('Omeka\Entity\Item'); - $qb = $itemRepository->createQueryBuilder('omeka_root'); - $qb->select('omeka_root'); + $itemRepository = $entityManager->getRepository(\Omeka\Entity\Item::class); + $qb = $itemRepository->createQueryBuilder($alias); + $qb->select($alias); $query = new ArrayObject; @@ -667,12 +674,12 @@ class ResponseGenerator extends AbstractXmlGenerator if ($from) { $qb->andWhere($qb->expr()->orX( $qb->expr()->andX( - $qb->expr()->isNotNull('omeka_root.modified'), - $qb->expr()->gte('omeka_root.modified', ':from_1') + $qb->expr()->isNotNull($alias . '.modified'), + $qb->expr()->gte($alias . '.modified', ':from_1') ), $qb->expr()->andX( - $qb->expr()->isNull('omeka_root.modified'), - $qb->expr()->gte('omeka_root.created', ':from_2') + $qb->expr()->isNull($alias . '.modified'), + $qb->expr()->gte($alias . '.created', ':from_2') ) )); $qb->setParameter('from_1', $from); @@ -681,19 +688,19 @@ class ResponseGenerator extends AbstractXmlGenerator if ($until) { $qb->andWhere($qb->expr()->orX( $qb->expr()->andX( - $qb->expr()->isNotNull('omeka_root.modified'), - $qb->expr()->lte('omeka_root.modified', ':until_1') + $qb->expr()->isNotNull($alias . '.modified'), + $qb->expr()->lte($alias . '.modified', ':until_1') ), $qb->expr()->andX( - $qb->expr()->isNull('omeka_root.modified'), - $qb->expr()->lte('omeka_root.created', ':until_2') + $qb->expr()->isNull($alias . '.modified'), + $qb->expr()->lte($alias . '.created', ':until_2') ) )); $qb->setParameter('until_1', $until); $qb->setParameter('until_2', $until); } - $qb->groupBy('omeka_root.id'); + $qb->groupBy($alias . '.id'); // This limit call will form the basis of the flow control $qb->setMaxResults($this->_listLimit);