diff --git a/composer.json b/composer.json index 1de3852..11433ff 100644 --- a/composer.json +++ b/composer.json @@ -17,10 +17,11 @@ "zendframework/zend-stdlib": "~2.5" }, "require-dev": { - "zendframework/zend-filter": "~2.5", + "zendframework/zend-filter": "~2.6", "zendframework/zend-i18n": "~2.5", "zendframework/zend-servicemanager": "~2.5", "zendframework/zend-validator": "~2.5", + "zendframework/zend-progressbar": "~2.5", "fabpot/php-cs-fixer": "1.7.*", "phpunit/PHPUnit": "~4.0" }, diff --git a/src/Transfer/Adapter/AbstractAdapter.php b/src/Transfer/Adapter/AbstractAdapter.php index 04e09c2..47bd1c3 100644 --- a/src/Transfer/Adapter/AbstractAdapter.php +++ b/src/Transfer/Adapter/AbstractAdapter.php @@ -710,6 +710,7 @@ public function hasErrors() public function addFilter($filter, $options = null, $files = null) { if (is_string($filter)) { + $options = (null !== $options && is_scalar($options)) ? [$options] : $options; $filter = $this->getFilterManager()->get($filter, $options); } diff --git a/src/Transfer/Adapter/FilterPluginManager.php b/src/Transfer/Adapter/FilterPluginManager.php index 3fa9456..e6a6684 100644 --- a/src/Transfer/Adapter/FilterPluginManager.php +++ b/src/Transfer/Adapter/FilterPluginManager.php @@ -10,6 +10,7 @@ namespace Zend\File\Transfer\Adapter; use Zend\Filter\FilterPluginManager as BaseManager; +use Zend\Filter\File; /** * Plugin manager implementation for the filter chain. @@ -21,15 +22,25 @@ class FilterPluginManager extends BaseManager { /** - * Default set of filters + * Constructor * - * @var array + * Merges default aliases pertinent to this plugin manager with those + * defined in the parent filter plugin manager. + * + * @param null|\Zend\ServiceManager\ConfigInterface|\Interop\Container\ContainerInterface $configOrContainerInstance + * @param array $v3config If $configOrContainerInstance is a container, this + * value will be passed to the parent constructor. */ - protected $aliases = [ - 'decrypt' => 'filedecrypt', - 'encrypt' => 'fileencrypt', - 'lowercase' => 'filelowercase', - 'rename' => 'filerename', - 'uppercase' => 'fileuppercase', - ]; + public function __construct($configOrContainerInstance = null, array $v3config = []) + { + $this->aliases = array_merge([ + 'decrypt' => File\Decrypt::class, + 'encrypt' => File\Encrypt::class, + 'lowercase' => File\LowerCase::class, + 'rename' => File\Rename::class, + 'uppercase' => File\UpperCase::class, + ], $this->aliases); + + parent::__construct($configOrContainerInstance, $v3config); + } } diff --git a/test/Transfer/Adapter/AbstractTest.php b/test/Transfer/Adapter/AbstractTest.php index 294323b..a16adc5 100644 --- a/test/Transfer/Adapter/AbstractTest.php +++ b/test/Transfer/Adapter/AbstractTest.php @@ -412,34 +412,31 @@ public function testAdapterShouldAllowRetrievingDestinationsForAnArrayOfSpecifie public function testSettingAndRetrievingOptions() { - $this->assertEquals( - [ - 'bar' => ['ignoreNoFile' => false, 'useByteString' => true], - 'baz' => ['ignoreNoFile' => false, 'useByteString' => true], - 'foo' => ['ignoreNoFile' => false, 'useByteString' => true, 'detectInfos' => true], - 'file_0_' => ['ignoreNoFile' => false, 'useByteString' => true], - 'file_1_' => ['ignoreNoFile' => false, 'useByteString' => true], - ], $this->adapter->getOptions()); + $this->assertEquals([ + 'bar' => ['ignoreNoFile' => false, 'useByteString' => true], + 'baz' => ['ignoreNoFile' => false, 'useByteString' => true], + 'foo' => ['ignoreNoFile' => false, 'useByteString' => true, 'detectInfos' => true], + 'file_0_' => ['ignoreNoFile' => false, 'useByteString' => true], + 'file_1_' => ['ignoreNoFile' => false, 'useByteString' => true], + ], $this->adapter->getOptions()); $this->adapter->setOptions(['ignoreNoFile' => true]); - $this->assertEquals( - [ - 'bar' => ['ignoreNoFile' => true, 'useByteString' => true], - 'baz' => ['ignoreNoFile' => true, 'useByteString' => true], - 'foo' => ['ignoreNoFile' => true, 'useByteString' => true, 'detectInfos' => true], - 'file_0_' => ['ignoreNoFile' => true, 'useByteString' => true], - 'file_1_' => ['ignoreNoFile' => true, 'useByteString' => true], - ], $this->adapter->getOptions()); + $this->assertEquals([ + 'bar' => ['ignoreNoFile' => true, 'useByteString' => true], + 'baz' => ['ignoreNoFile' => true, 'useByteString' => true], + 'foo' => ['ignoreNoFile' => true, 'useByteString' => true, 'detectInfos' => true], + 'file_0_' => ['ignoreNoFile' => true, 'useByteString' => true], + 'file_1_' => ['ignoreNoFile' => true, 'useByteString' => true], + ], $this->adapter->getOptions()); $this->adapter->setOptions(['ignoreNoFile' => false], 'foo'); - $this->assertEquals( - [ - 'bar' => ['ignoreNoFile' => true, 'useByteString' => true], - 'baz' => ['ignoreNoFile' => true, 'useByteString' => true], - 'foo' => ['ignoreNoFile' => false, 'useByteString' => true, 'detectInfos' => true], - 'file_0_' => ['ignoreNoFile' => true, 'useByteString' => true], - 'file_1_' => ['ignoreNoFile' => true, 'useByteString' => true], - ], $this->adapter->getOptions()); + $this->assertEquals([ + 'bar' => ['ignoreNoFile' => true, 'useByteString' => true], + 'baz' => ['ignoreNoFile' => true, 'useByteString' => true], + 'foo' => ['ignoreNoFile' => false, 'useByteString' => true, 'detectInfos' => true], + 'file_0_' => ['ignoreNoFile' => true, 'useByteString' => true], + 'file_1_' => ['ignoreNoFile' => true, 'useByteString' => true], + ], $this->adapter->getOptions()); } public function testGetAllAdditionalFileInfos() @@ -601,10 +598,9 @@ public function testTransferDestinationAtNonExistingElement() public function testSettingMagicFile() { $this->adapter->setOptions(['magicFile' => 'test/file']); - $this->assertEquals( - [ - 'bar' => ['magicFile' => 'test/file', 'ignoreNoFile' => false, 'useByteString' => true], - ], $this->adapter->getOptions('bar')); + $this->assertEquals([ + 'bar' => ['magicFile' => 'test/file', 'ignoreNoFile' => false, 'useByteString' => true], + ], $this->adapter->getOptions('bar')); } /** diff --git a/test/Transfer/Adapter/HttpTestMockAdapter.php b/test/Transfer/Adapter/HttpTestMockAdapter.php index ba0aa63..5a15b4b 100644 --- a/test/Transfer/Adapter/HttpTestMockAdapter.php +++ b/test/Transfer/Adapter/HttpTestMockAdapter.php @@ -41,12 +41,21 @@ public static function isApcAvailable() public static function apcTest($id) { - return ['total' => 100, 'current' => 100, 'rate' => 10]; + return [ + 'total' => 100, + 'current' => 100, + 'rate' => 10, + ]; } public static function uPTest($id) { - return ['bytes_total' => 100, 'bytes_uploaded' => 100, 'speed_average' => 10, 'cancel_upload' => true]; + return [ + 'bytes_total' => 100, + 'bytes_uploaded' => 100, + 'speed_average' => 10, + 'cancel_upload' => true, + ]; } public function switchApcToUP()