Skip to content
This repository has been archived by the owner on Jan 30, 2020. It is now read-only.

Commit

Permalink
Merge branch 'hotfix/zendframework/zendframework#6577-adding-missing-…
Browse files Browse the repository at this point in the history
…paginator-adapter-plugin-manager-registered-services'

Close zendframework/zendframework#6577
  • Loading branch information
Ocramius committed Nov 22, 2014
179 parents 922a24d + 3833182 + fd8deb8 + 4cda17f + b678d4c + e07a576 + ace2d81 + 77f83ca + 130a50a + f12feba + 4452247 + 2630a49 + 43cba4d + e4204b5 + d05ccf2 + e604cfb + ca97c01 + 287eb63 + 51a49db + a59e5dc + 548a07d + 8505b4c + 2716d1a + 37045c3 + 6903d5f + cdad453 + 9db7df2 + 9bb9d9a + 41b2dc0 + 5295cf8 + 27f9b6d + b273434 + 5b111b1 + ee4a022 + 5130ae3 + aff706f + f73a53d + d4a913a + b29f072 + 651a727 + 430d154 + 1839a34 + 0d5d64e + 5cde84e + dc8ee4d + 85d900a + 887c312 + 9c949ae + 0fc5669 + e29d393 + e25c698 + ca5bdbb + 18e54b8 + 73cc878 + a514416 + 778823f + fff1957 + 35beb1b + ecb2a1a + 67a31fa + c0ee14a + 7273469 + 62e104e + 293b0d0 + c59092f + b3e8431 + 615f1cb + 198a3b9 + 1630584 + 7627438 + 84a5bf6 + ad86c9d + a84a8ca + 4198a62 + e822871 + 431867b + 200dbe0 + 7277f0b + 2408da8 + 2413f67 + 4731ffc + d177c96 + b27c24b + ec13154 + 8e7b30c + 6c4437a + 2a2ed86 + 366d656 + 5f3d390 + 666d47b + dd0e03b + 1a5602a + c01cd9c + 6849552 + 8b79ca2 + e84f0d1 + 9f1b34e + c453b3e + 3d74be7 + 999502e + a46d96f + fba87c0 + ce665da + ef2dd94 + a66c89a + b997097 + da0e97d + 1302f0b + a1bbaa9 + 6bfa503 + b4b9ece + 9b1ac2d + 30880b8 + e308f6d + 8da89be + 199755f + 2310cd0 + 4e7316f + 1d6c476 + c2593db + c6ff37b + 5344902 + a35c230 + 39052a9 + 8152f2f + e0f8777 + d1f068b + 006fb88 + 6261074 + 8bf6181 + 33e79d4 + a778f16 + 57199ed + 3653e0c + 5b5a61e + 082fd49 + d56f4bf + d4ad9b4 + c2442b4 + a56d05b + 7400cfb + 8794fff + 0877be7 + 9c75f77 + 261c157 + 94f1dd4 + ae538e5 + bf68265 + c222657 + 56e71f6 + b95fff7 + 7736317 + 8a3b848 + e18ea15 + ae1a095 + a18a97f + c3ef55c + 09f0424 + 6369f0d + bbce3db + e7612d4 + af38e3f + cd3f4d4 + 498edd0 + a792bd9 + 9922da0 + 350dc8b + d9ed179 + 622be5c + 7960d27 + a406fa3 + b68216d + 0ff2c31 + 9b14073 + 3983ab0 + f028776 + 60ef0d1 + 76edd11 + f0586c2 commit 3673138
Show file tree
Hide file tree
Showing 4 changed files with 133 additions and 1 deletion.
44 changes: 44 additions & 0 deletions src/Adapter/Service/CallbackFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace Zend\Paginator\Adapter\Service;

use Zend\Paginator\Adapter\Callback;
use Zend\ServiceManager\MutableCreationOptionsInterface;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class CallbackFactory implements
FactoryInterface,
MutableCreationOptionsInterface
{
/**
* Adapter options
* @var array
*/
protected $creationOptions;

/**
* {@inheritDoc}
*/
public function setCreationOptions(array $creationOptions)
{
$this->creationOptions = $creationOptions;
}

/**
* {@inheritDoc}
*
* @return Callback
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
return new Callback($this->creationOptions[0], $this->creationOptions[1]);
}
}
50 changes: 50 additions & 0 deletions src/Adapter/Service/DbTableGatewayFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace Zend\Paginator\Adapter\Service;

use Zend\Paginator\Adapter\DbTableGateway;
use Zend\ServiceManager\MutableCreationOptionsInterface;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class DbTableGatewayFactory implements
FactoryInterface,
MutableCreationOptionsInterface
{
/**
* Adapter options
* @var array
*/
protected $creationOptions;

/**
* {@inheritDoc}
*/
public function setCreationOptions(array $creationOptions)
{
$this->creationOptions = $creationOptions;
}

/**
* {@inheritDoc}
*
* @return DbTableGateway
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
return new DbTableGateway(
$this->creationOptions[0],
isset($this->creationOptions[1]) ? $this->creationOptions[1] : null,
isset($this->creationOptions[2]) ? $this->creationOptions[2] : null,
isset($this->creationOptions[3]) ? $this->creationOptions[3] : null,
isset($this->creationOptions[4]) ? $this->creationOptions[4] : null
);
}
}
4 changes: 3 additions & 1 deletion src/AdapterPluginManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ class AdapterPluginManager extends AbstractPluginManager
* @var array
*/
protected $factories = array(
'dbselect' => 'Zend\Paginator\Adapter\Service\DbSelectFactory'
'dbselect' => 'Zend\Paginator\Adapter\Service\DbSelectFactory',
'dbtablegateway' => 'Zend\Paginator\Adapter\Service\DbTableGatewayFactory',
'callback' => 'Zend\Paginator\Adapter\Service\CallbackFactory',
);

/**
Expand Down
36 changes: 36 additions & 0 deletions test/AdapterPluginManagerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

namespace ZendTest\Paginator;

use Zend\Stdlib\CallbackHandler;
use Zend\Db\Adapter\Platform\Sql92;
use Zend\Paginator\AdapterPluginManager;
use Zend\ServiceManager\ServiceManager;
use Zend\Mvc\Service\ServiceManagerConfig;
Expand Down Expand Up @@ -55,6 +57,40 @@ public function testCanRetrieveAdapterPlugin()
$this->assertInstanceOf('Zend\Paginator\Adapter\DbSelect', $plugin);
$plugin = $this->adapaterPluginManager->get('null', 101);
$this->assertInstanceOf('Zend\Paginator\Adapter\Null', $plugin);

//test dbtablegateway
$mockStatement = $this->getMock('Zend\Db\Adapter\Driver\StatementInterface');
$mockDriver = $this->getMock('Zend\Db\Adapter\Driver\DriverInterface');
$mockDriver->expects($this->any())
->method('createStatement')
->will($this->returnValue($mockStatement));
$mockDriver->expects($this->any())
->method('formatParameterName')
->will($this->returnArgument(0));
$mockAdapter = $this->getMockForAbstractClass(
'Zend\Db\Adapter\Adapter',
array($mockDriver, new Sql92())
);
$mockTableGateway = $this->getMockForAbstractClass(
'Zend\Db\TableGateway\TableGateway',
array('foobar', $mockAdapter)
);
$where = "foo = bar";
$order = "foo";
$group = "foo";
$having = "count(foo)>0";
$plugin = $this->adapaterPluginManager->get('dbtablegateway', array($mockTableGateway, $where, $order, $group, $having));
$this->assertInstanceOf('Zend\Paginator\Adapter\DbTableGateway', $plugin);

//test callback
$itemsCallback = new CallbackHandler(function () {
return array();
});
$countCallback = new CallbackHandler(function () {
return 0;
});
$plugin = $this->adapaterPluginManager->get('callback', array($itemsCallback, $countCallback));
$this->assertInstanceOf('Zend\Paginator\Adapter\Callback', $plugin);
}

public function testCanRetrievePluginManagerWithServiceManager()
Expand Down

0 comments on commit 3673138

Please sign in to comment.