From 4c1fb031d6d6d2b19266ee95a5b97b1af752b65a Mon Sep 17 00:00:00 2001
From: Daniel Berthereau <Daniel.github@Berthereau.net>
Date: Mon, 4 Nov 2019 00:00:00 +0100
Subject: [PATCH] Made compatible for versions before Omeka 2.

---
 .../Adapter/OaiPmhRepositoryTokenAdapter.php  |  9 ++++--
 src/OaiPmh/ResponseGenerator.php              | 31 ++++++++++++-------
 2 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/src/Api/Adapter/OaiPmhRepositoryTokenAdapter.php b/src/Api/Adapter/OaiPmhRepositoryTokenAdapter.php
index e6c02b5..209ca3c 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 959b529..b1feaed 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);
-- 
GitLab