From 0ad2ac3cfaa23bf030d2dd0c6b7d5a9a0736d05d Mon Sep 17 00:00:00 2001 From: prolic Date: Mon, 11 May 2015 19:04:26 +0200 Subject: [PATCH 01/11] add mongodb support --- src/ZfTable/AbstractTable.php | 2 + .../Source/DoctrineODMMongoDBQueryBuilder.php | 82 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php diff --git a/src/ZfTable/AbstractTable.php b/src/ZfTable/AbstractTable.php index 82d57c2..1a6c2af 100644 --- a/src/ZfTable/AbstractTable.php +++ b/src/ZfTable/AbstractTable.php @@ -195,6 +195,8 @@ public function setSource($source) $source = new Source\SqlSelect($source); } elseif ($source instanceof \Doctrine\ORM\QueryBuilder) { $source = new Source\DoctrineQueryBuilder($source); + } else if ($source instanceof \Doctrine\ODM\MongoDB\Query\Builder) { + $source = new Source\DoctrineODMMongoDBQueryBuilder($source); } elseif (is_array($source)) { $source = new Source\ArrayAdapter($source); } else { diff --git a/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php b/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php new file mode 100644 index 0000000..c87a050 --- /dev/null +++ b/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php @@ -0,0 +1,82 @@ +query = $query; + } + + /** + * + * @return \Zend\Paginator\Paginator + */ + public function getPaginator() + { + if (!$this->paginator) { + + + $this->order(); + + $adapter = new DoctrineAdapter($this->getQuery()->getQuery()->execute()); + $this->paginator = new Paginator($adapter); + $this->initPaginator(); + + } + return $this->paginator; + } + + + + protected function order() + { + $column = $this->getParamAdapter()->getColumn(); + $order = $this->getParamAdapter()->getOrder(); + + if (!$column) { + return; + } + + $header = $this->getTable()->getHeader($column); + $tableAlias = ($header) ? $header->getTableAlias() : 'q'; + + if (false === strpos($tableAlias, '.')) { + $tableAlias = $tableAlias.'.'.$column; + } + + $this->query->sort($tableAlias, $order); + } + + + public function getQuery() + { + return $this->query; + } + + public function getSource() + { + return $this->query; + } +} From 88220cb0dde925e0626067bcebe29966665418d1 Mon Sep 17 00:00:00 2001 From: Oleksandr Khutoretskyy Date: Fri, 15 May 2015 12:15:52 +0200 Subject: [PATCH 02/11] Update AbstractTable.php CS Fixed conform to PSR --- src/ZfTable/AbstractTable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ZfTable/AbstractTable.php b/src/ZfTable/AbstractTable.php index 1a6c2af..b03c8ce 100644 --- a/src/ZfTable/AbstractTable.php +++ b/src/ZfTable/AbstractTable.php @@ -195,7 +195,7 @@ public function setSource($source) $source = new Source\SqlSelect($source); } elseif ($source instanceof \Doctrine\ORM\QueryBuilder) { $source = new Source\DoctrineQueryBuilder($source); - } else if ($source instanceof \Doctrine\ODM\MongoDB\Query\Builder) { + } elseif ($source instanceof \Doctrine\ODM\MongoDB\Query\Builder) { $source = new Source\DoctrineODMMongoDBQueryBuilder($source); } elseif (is_array($source)) { $source = new Source\ArrayAdapter($source); From ce0de333539edae250ed2292a8cf06e4294d135a Mon Sep 17 00:00:00 2001 From: Oleksandr Khutoretskyy Date: Tue, 26 May 2015 19:49:19 +0200 Subject: [PATCH 03/11] Update DoctrineODMMongoDBQueryBuilder.php improved order method, sort by tableAlias and by header name if tableAlies does not defined on header config --- .../Source/DoctrineODMMongoDBQueryBuilder.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php b/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php index c87a050..f5b7708 100644 --- a/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php +++ b/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php @@ -58,12 +58,16 @@ protected function order() if (!$column) { return; } - $header = $this->getTable()->getHeader($column); - $tableAlias = ($header) ? $header->getTableAlias() : 'q'; - if (false === strpos($tableAlias, '.')) { - $tableAlias = $tableAlias.'.'.$column; + if (!$header) { + return; + } + + if ($header->getTableAlias()) { + $tableAlias = $header->getTableAlias(); + } else { + $tableAlias = $header->getName(); } $this->query->sort($tableAlias, $order); From 6454b06146ecd6d549b713a05252fcacdbc31731 Mon Sep 17 00:00:00 2001 From: Olekhy Khutoretskyy Date: Tue, 4 Aug 2015 00:35:07 +0200 Subject: [PATCH 04/11] sorting in order fixed --- src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php b/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php index f5b7708..58256ce 100644 --- a/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php +++ b/src/ZfTable/Source/DoctrineODMMongoDBQueryBuilder.php @@ -69,7 +69,7 @@ protected function order() } else { $tableAlias = $header->getName(); } - + $order = strcasecmp('asc', $order) === 0 ? 1 : -1; $this->query->sort($tableAlias, $order); } From df1e0a004b8c654d137b3272f47b0654c5a67d99 Mon Sep 17 00:00:00 2001 From: Olekhy Khutoretskyy Date: Fri, 11 Sep 2015 12:17:21 +0200 Subject: [PATCH 05/11] Added Source class as for mongodb standart query builder --- src/ZfTable/AbstractTable.php | 2 + .../Source/DoctrineMongoDBQueryBuilder.php | 73 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php diff --git a/src/ZfTable/AbstractTable.php b/src/ZfTable/AbstractTable.php index b03c8ce..ad9e889 100644 --- a/src/ZfTable/AbstractTable.php +++ b/src/ZfTable/AbstractTable.php @@ -197,6 +197,8 @@ public function setSource($source) $source = new Source\DoctrineQueryBuilder($source); } elseif ($source instanceof \Doctrine\ODM\MongoDB\Query\Builder) { $source = new Source\DoctrineODMMongoDBQueryBuilder($source); + } elseif ($source instanceof \Doctrine\MongoDB\Query\Builder) { + $source = new Source\DoctrineMongoDBQueryBuilder($source); } elseif (is_array($source)) { $source = new Source\ArrayAdapter($source); } else { diff --git a/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php b/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php new file mode 100644 index 0000000..e6ca0f2 --- /dev/null +++ b/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php @@ -0,0 +1,73 @@ +queryBuilder = $queryBuilder; + } + + protected function order() + { + $column = $this->getParamAdapter()->getColumn(); + $order = $this->getParamAdapter()->getOrder(); + + if (!$column) { + return; + } + $header = $this->getTable()->getHeader($column); + + if (!$header) { + return; + } + + if ($header->getTableAlias()) { + $tableAlias = $header->getTableAlias(); + } else { + $tableAlias = $header->getName(); + } + + $this->queryBuilder->sort($tableAlias, $order); + } + + public function getPaginator() + { + if (!$this->paginator) { + $this->order(); + $adapter = new DoctrineAdapter($this->queryBuilder->getQuery()->execute()); + $this->paginator = new Paginator($adapter); + $this->initPaginator(); + + } + + return $this->paginator; + } + + /** + * @return Builder + */ + public function getSource() + { + return $this->queryBuilder; + } +} From 91879cdb6602e9ef1063af7a4bae41ba304d867a Mon Sep 17 00:00:00 2001 From: Sascha-Oliver Prolic Date: Fri, 11 Sep 2015 12:21:27 +0100 Subject: [PATCH 06/11] fix mongo db source --- src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php b/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php index e6ca0f2..ccb9ead 100644 --- a/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php +++ b/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php @@ -2,8 +2,8 @@ namespace ZfTable\Source; +use Dimabay\App\MongoDb\PaginatorAdapter; use Doctrine\MongoDB\Query\Builder; -use DoctrineMongoODMModule\Paginator\Adapter\DoctrinePaginator as DoctrineAdapter; use Zend\Paginator\Paginator; class DoctrineMongoDBQueryBuilder extends AbstractSource @@ -54,7 +54,7 @@ public function getPaginator() { if (!$this->paginator) { $this->order(); - $adapter = new DoctrineAdapter($this->queryBuilder->getQuery()->execute()); + $adapter = new PaginatorAdapter($this->queryBuilder->getQuery()->execute()->getMongoCursor()); $this->paginator = new Paginator($adapter); $this->initPaginator(); From 1e0eadb943ec19a4dd59d5e844b5f05630c07d9b Mon Sep 17 00:00:00 2001 From: Sascha-Oliver Prolic Date: Fri, 11 Sep 2015 12:27:13 +0100 Subject: [PATCH 07/11] add mongo paginator adapter --- src/ZfTable/MongoDbPaginatorAdapter.php | 46 +++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/ZfTable/MongoDbPaginatorAdapter.php diff --git a/src/ZfTable/MongoDbPaginatorAdapter.php b/src/ZfTable/MongoDbPaginatorAdapter.php new file mode 100644 index 0000000..bb5f507 --- /dev/null +++ b/src/ZfTable/MongoDbPaginatorAdapter.php @@ -0,0 +1,46 @@ +cursor = $cursor; + } + + /** + * @return int + */ + public function count() + { + return $this->cursor->count(); + } + + /** + * @param int $offset + * @param int $itemCountPerPage + * @return MongoCursor + */ + public function getItems($offset, $itemCountPerPage) + { + $this->cursor->skip($offset); + $this->cursor->limit($itemCountPerPage); + return $this->cursor; + } +} From d757a73b4edcc7d20970c90da5967d84e489590e Mon Sep 17 00:00:00 2001 From: Sascha-Oliver Prolic Date: Fri, 11 Sep 2015 12:28:35 +0100 Subject: [PATCH 08/11] use own adapter --- src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php b/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php index ccb9ead..52d28dc 100644 --- a/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php +++ b/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php @@ -2,7 +2,7 @@ namespace ZfTable\Source; -use Dimabay\App\MongoDb\PaginatorAdapter; +use ZfTable\MongoDbPaginatorAdapter; use Doctrine\MongoDB\Query\Builder; use Zend\Paginator\Paginator; @@ -54,7 +54,7 @@ public function getPaginator() { if (!$this->paginator) { $this->order(); - $adapter = new PaginatorAdapter($this->queryBuilder->getQuery()->execute()->getMongoCursor()); + $adapter = new MongoDbPaginatorAdapter($this->queryBuilder->getQuery()->execute()->getMongoCursor()); $this->paginator = new Paginator($adapter); $this->initPaginator(); From b212a5fca898df70f51168e71d1595eb09e75add Mon Sep 17 00:00:00 2001 From: prolic Date: Fri, 11 Sep 2015 19:35:39 +0100 Subject: [PATCH 09/11] use doctrine mongo cursor --- src/ZfTable/MongoDbPaginatorAdapter.php | 10 +++++----- src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ZfTable/MongoDbPaginatorAdapter.php b/src/ZfTable/MongoDbPaginatorAdapter.php index bb5f507..45e02cc 100644 --- a/src/ZfTable/MongoDbPaginatorAdapter.php +++ b/src/ZfTable/MongoDbPaginatorAdapter.php @@ -2,7 +2,7 @@ namespace ZfTable; -use MongoCursor; +use Doctrine\MongoDB\Cursor; use Zend\Paginator\Adapter\AdapterInterface; /** @@ -12,14 +12,14 @@ final class MongoDbPaginatorAdapter implements AdapterInterface { /** - * @var MongoCursor + * @var Cursor */ private $cursor; /** - * @param MongoCursor $cursor + * @param Cursor $cursor */ - public function __construct(MongoCursor $cursor) + public function __construct(Cursor $cursor) { $this->cursor = $cursor; } @@ -35,7 +35,7 @@ public function count() /** * @param int $offset * @param int $itemCountPerPage - * @return MongoCursor + * @return Cursor */ public function getItems($offset, $itemCountPerPage) { diff --git a/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php b/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php index 52d28dc..61bb0db 100644 --- a/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php +++ b/src/ZfTable/Source/DoctrineMongoDBQueryBuilder.php @@ -54,7 +54,7 @@ public function getPaginator() { if (!$this->paginator) { $this->order(); - $adapter = new MongoDbPaginatorAdapter($this->queryBuilder->getQuery()->execute()->getMongoCursor()); + $adapter = new MongoDbPaginatorAdapter($this->queryBuilder->getQuery()->execute()); $this->paginator = new Paginator($adapter); $this->initPaginator(); From 94b3aac7e24bb8cf116eeba3652d6a5116676d23 Mon Sep 17 00:00:00 2001 From: Sascha-Oliver Prolic Date: Wed, 30 Sep 2015 16:43:04 +0100 Subject: [PATCH 10/11] Update composer.json --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0357655..08a7938 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,8 @@ ], "require": { "php": ">=5.3.3", - "zendframework/zendframework": ">2.1.3" + "zendframework/zend-mvc": "^2.6.0", + "zendframework/zend-form": "^2.6.0" }, "require-dev": { "squizlabs/php_codesniffer": "1.5.*" From 2b0ee5a405b453bb09cad94c31d5ccbc18556bc3 Mon Sep 17 00:00:00 2001 From: Sascha-Oliver Prolic Date: Wed, 14 Oct 2015 15:26:47 +0100 Subject: [PATCH 11/11] Update composer.json --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 08a7938..3010d92 100644 --- a/composer.json +++ b/composer.json @@ -14,8 +14,8 @@ ], "require": { "php": ">=5.3.3", - "zendframework/zend-mvc": "^2.6.0", - "zendframework/zend-form": "^2.6.0" + "zendframework/zend-mvc": "^2.4.0", + "zendframework/zend-form": "^2.4.0" }, "require-dev": { "squizlabs/php_codesniffer": "1.5.*"