diff --git a/DependencyInjection/Factory/FtpAdapterFactory.php b/DependencyInjection/Factory/FtpAdapterFactory.php new file mode 100644 index 0000000..c26ff36 --- /dev/null +++ b/DependencyInjection/Factory/FtpAdapterFactory.php @@ -0,0 +1,64 @@ +setDefinition($id, new DefinitionDecorator('knp_gaufrette.adapter.ftp')) + ->addArgument($config['directory']) + ->addArgument($config['host']) + ->addArgument($config['username']) + ->addArgument($config['password']) + ->addArgument($config['port']) + ->addArgument($config['passive']) + ->addArgument($config['create']) + ->addArgument($config['mode']) + ; + } + + /** + * {@inheritDoc} + */ + function getKey() + { + return 'ftp'; + } + + /** + * {@inheritDoc} + */ + function addConfiguration(NodeDefinition $builder) + { + $builder + ->children() + ->scalarNode('directory')->isRequired()->end() + ->scalarNode('host')->isRequired()->end() + ->scalarNode('port')->defaultValue(21)->end() + ->scalarNode('username')->defaultNull()->end() + ->scalarNode('password')->defaultNull()->end() + ->booleanNode('passive')->defaultFalse()->end() + ->booleanNode('create')->defaultFalse()->end() + ->scalarNode('mode') + ->defaultValue(FTP_ASCII) + ->beforeNormalization() + ->ifString() + ->then(function($v) { return constant($v); }) + ->end() + ->end() + ; + } +} diff --git a/README.markdown b/README.markdown index c2ad49e..7b9a3b7 100644 --- a/README.markdown +++ b/README.markdown @@ -284,3 +284,34 @@ knp_gaufrette: ``` [gaufrette-homepage]: https://github.com/KnpLabs/Gaufrette + +## Ftp + +Adapter for FTP. + +### Parameters + + * `directory` The directory of the filesystem *(required)* + * `host` FTP host *(required)* + * `username` FTP username *(default null)* + * `password` FTP password *(default null)* + * `port` FTP port *(default 21)* + * `passive` FTP passive mode *(default false)* + * `create` Whether to create the directory if it does not exist *(default false)* + * `mode` FTP transfer mode *(defaut FTP_ASCII)* + +### Example + +``` yaml +# app/config/config.yml +knp_gaufrette: + adapters: + foo: + ftp: + host: example.com + username: user + password: pass + directory: /example/ftp + create: true + mode: FTP_BINARY +``` diff --git a/Resources/config/adapter_factories.xml b/Resources/config/adapter_factories.xml index 08668a9..1ecddc5 100644 --- a/Resources/config/adapter_factories.xml +++ b/Resources/config/adapter_factories.xml @@ -29,6 +29,9 @@ + + + diff --git a/Resources/config/gaufrette.xml b/Resources/config/gaufrette.xml index ecb16b8..dc75fef 100644 --- a/Resources/config/gaufrette.xml +++ b/Resources/config/gaufrette.xml @@ -26,6 +26,7 @@ +