From cd7e3c700f02f6b2cd565292e13f8680adc684c2 Mon Sep 17 00:00:00 2001 From: Christopher Georg Date: Tue, 28 Oct 2025 09:00:32 +0100 Subject: [PATCH 1/6] feat: use PhpFileLoader if XmlFileLoader is not available (since Symfony 8) --- .../OneupFlysystemExtension.php | 26 ++++++++++--- src/Resources/config/adapters.php | 20 ++++++++++ src/Resources/config/factories.php | 39 +++++++++++++++++++ src/Resources/config/flysystem.php | 12 ++++++ 4 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 src/Resources/config/adapters.php create mode 100644 src/Resources/config/factories.php create mode 100644 src/Resources/config/flysystem.php diff --git a/src/DependencyInjection/OneupFlysystemExtension.php b/src/DependencyInjection/OneupFlysystemExtension.php index 83d9ba5..b67230f 100644 --- a/src/DependencyInjection/OneupFlysystemExtension.php +++ b/src/DependencyInjection/OneupFlysystemExtension.php @@ -21,16 +21,24 @@ class OneupFlysystemExtension extends Extension public function load(array $configs, ContainerBuilder $container): void { - $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - $loader->load('factories.xml'); + if(class_exists(Loader\XMLFileLoader::class)) { + $loader = new Loader\XMLFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loaderExt = '.xml'; + } + else{ + $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loaderExt = '.php'; + } + + $loader->load('factories'.$loaderExt); $adapterFactories = $this->getFactories($container); $configuration = new Configuration($adapterFactories); $config = $this->processConfiguration($configuration, $configs); - $loader->load('adapters.xml'); - $loader->load('flysystem.xml'); + $loader->load('adapters'.$loaderExt); + $loader->load('flysystem'.$loaderExt); $adapters = []; @@ -45,8 +53,14 @@ public function load(array $configs, ContainerBuilder $container): void public function getConfiguration(array $config, ContainerBuilder $container): Configuration { - $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - $loader->load('factories.xml'); + if(class_exists(Loader\XMLFileLoader::class)) { + $loader = new Loader\XMLFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load('factories.xml'); + } + else{ + $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load(resource: 'factories.php'); + } $adapterFactories = $this->getFactories($container); diff --git a/src/Resources/config/adapters.php b/src/Resources/config/adapters.php new file mode 100644 index 0000000..9b28102 --- /dev/null +++ b/src/Resources/config/adapters.php @@ -0,0 +1,20 @@ +services(); + + $services->set('oneup_flysystem.adapter.local', League\Flysystem\Local\LocalFilesystemAdapter::class)->public(); + $services->set('oneup_flysystem.adapter.awss3v3', League\Flysystem\AwsS3V3\AwsS3V3Adapter::class)->public(); + $services->set('oneup_flysystem.adapter.ftp', League\Flysystem\Ftp\FtpAdapter::class)->public(); + $services->set('oneup_flysystem.adapter.sftp', League\Flysystem\PhpseclibV3\SftpAdapter::class)->public(); + $services->set('oneup_flysystem.adapter.memory', League\Flysystem\InMemory\InMemoryFilesystemAdapter::class)->public(); + $services->set('oneup_flysystem.adapter.async_aws_s3', League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter::class)->public(); + $services->set('oneup_flysystem.adapter.googlecloudstorage', League\Flysystem\GoogleCloudStorage\GoogleCloudStorageAdapter::class)->public(); + $services->set('oneup_flysystem.adapter.gitlab', RoyVoetman\FlysystemGitlab\GitlabAdapter::class)->public(); + $services->set('oneup_flysystem.adapter.azureblob', League\Flysystem\AzureBlobStorage\AzureBlobStorageAdapter::class)->public(); + +}; \ No newline at end of file diff --git a/src/Resources/config/factories.php b/src/Resources/config/factories.php new file mode 100644 index 0000000..289ccbb --- /dev/null +++ b/src/Resources/config/factories.php @@ -0,0 +1,39 @@ +services(); + + $services->set('oneup_flysystem.adapter_factory.local', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\LocalFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.awss3v3', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\AwsS3V3Factory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.ftp', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\FtpFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.sftp', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\SftpFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.in_memory', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\InMemoryFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.customadapter', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\CustomAdapterFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.async_aws_s3', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\AsyncAwsS3Factory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.google_cloud_storage', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\GoogleCloudStorageFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.gitlab', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\GitlabFactory::class) + ->tag('oneup_flysystem.adapter_factory'); + + $services->set('oneup_flysystem.adapter_factory.azureblob', Oneup\FlysystemBundle\DependencyInjection\Factory\Adapter\AzureBlobFactory::class) + ->tag('oneup_flysystem.adapter_factory'); +}; diff --git a/src/Resources/config/flysystem.php b/src/Resources/config/flysystem.php new file mode 100644 index 0000000..3fbb365 --- /dev/null +++ b/src/Resources/config/flysystem.php @@ -0,0 +1,12 @@ +services(); + + $services->set('oneup_flysystem.mount_manager', League\Flysystem\MountManager::class)->public(); + $services->set('oneup_flysystem.filesystem', League\Flysystem\Filesystem::class)->public()->abstract(); +}; From 3d8a9dd409ff36a4e858e06d58fe90f60e8be1bf Mon Sep 17 00:00:00 2001 From: Christopher Georg Date: Tue, 28 Oct 2025 09:04:25 +0100 Subject: [PATCH 2/6] feat: use PhpFileLoader if XmlFileLoader is not available (since Symfony 8) --- .../OneupFlysystemExtension.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/DependencyInjection/OneupFlysystemExtension.php b/src/DependencyInjection/OneupFlysystemExtension.php index b67230f..47a69f6 100644 --- a/src/DependencyInjection/OneupFlysystemExtension.php +++ b/src/DependencyInjection/OneupFlysystemExtension.php @@ -21,11 +21,10 @@ class OneupFlysystemExtension extends Extension public function load(array $configs, ContainerBuilder $container): void { - if(class_exists(Loader\XMLFileLoader::class)) { + if (class_exists(Loader\XMLFileLoader::class)) { $loader = new Loader\XMLFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loaderExt = '.xml'; - } - else{ + } else { $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loaderExt = '.php'; } @@ -37,8 +36,8 @@ public function load(array $configs, ContainerBuilder $container): void $configuration = new Configuration($adapterFactories); $config = $this->processConfiguration($configuration, $configs); - $loader->load('adapters'.$loaderExt); - $loader->load('flysystem'.$loaderExt); + $loader->load('adapters' . $loaderExt); + $loader->load('flysystem' . $loaderExt); $adapters = []; @@ -53,11 +52,10 @@ public function load(array $configs, ContainerBuilder $container): void public function getConfiguration(array $config, ContainerBuilder $container): Configuration { - if(class_exists(Loader\XMLFileLoader::class)) { + if (class_exists(Loader\XMLFileLoader::class)) { $loader = new Loader\XMLFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load('factories.xml'); - } - else{ + } else { $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load(resource: 'factories.php'); } From 8d23a5418777ea4cbdaa533313294f00b2e4bc63 Mon Sep 17 00:00:00 2001 From: Christopher Georg Date: Tue, 28 Oct 2025 11:30:16 +0100 Subject: [PATCH 3/6] feat: use PhpFileLoader if XmlFileLoader is not available (since Symfony 8) --- src/DependencyInjection/OneupFlysystemExtension.php | 2 +- src/Resources/config/adapters.php | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/DependencyInjection/OneupFlysystemExtension.php b/src/DependencyInjection/OneupFlysystemExtension.php index 47a69f6..c922f7f 100644 --- a/src/DependencyInjection/OneupFlysystemExtension.php +++ b/src/DependencyInjection/OneupFlysystemExtension.php @@ -29,7 +29,7 @@ public function load(array $configs, ContainerBuilder $container): void $loaderExt = '.php'; } - $loader->load('factories'.$loaderExt); + $loader->load('factories' . $loaderExt); $adapterFactories = $this->getFactories($container); diff --git a/src/Resources/config/adapters.php b/src/Resources/config/adapters.php index 9b28102..ed83a79 100644 --- a/src/Resources/config/adapters.php +++ b/src/Resources/config/adapters.php @@ -16,5 +16,4 @@ $services->set('oneup_flysystem.adapter.googlecloudstorage', League\Flysystem\GoogleCloudStorage\GoogleCloudStorageAdapter::class)->public(); $services->set('oneup_flysystem.adapter.gitlab', RoyVoetman\FlysystemGitlab\GitlabAdapter::class)->public(); $services->set('oneup_flysystem.adapter.azureblob', League\Flysystem\AzureBlobStorage\AzureBlobStorageAdapter::class)->public(); - -}; \ No newline at end of file +}; From 46555e154de5cf0e5f484bb40f0ea1632aefbaac Mon Sep 17 00:00:00 2001 From: Christopher Georg Date: Tue, 28 Oct 2025 11:36:42 +0100 Subject: [PATCH 4/6] feat: use PhpFileLoader if XmlFileLoader is not available (since Symfony 8) --- src/DependencyInjection/OneupFlysystemExtension.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/DependencyInjection/OneupFlysystemExtension.php b/src/DependencyInjection/OneupFlysystemExtension.php index c922f7f..ffd3634 100644 --- a/src/DependencyInjection/OneupFlysystemExtension.php +++ b/src/DependencyInjection/OneupFlysystemExtension.php @@ -21,8 +21,8 @@ class OneupFlysystemExtension extends Extension public function load(array $configs, ContainerBuilder $container): void { - if (class_exists(Loader\XMLFileLoader::class)) { - $loader = new Loader\XMLFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + if (class_exists(Loader\XmlFileLoader::class)) { + $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loaderExt = '.xml'; } else { $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); @@ -52,8 +52,8 @@ public function load(array $configs, ContainerBuilder $container): void public function getConfiguration(array $config, ContainerBuilder $container): Configuration { - if (class_exists(Loader\XMLFileLoader::class)) { - $loader = new Loader\XMLFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + if (class_exists(Loader\XmlFileLoader::class)) { + $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load('factories.xml'); } else { $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); From a193c4cfdd03c7ba8b556358d0dd9790e697caa6 Mon Sep 17 00:00:00 2001 From: Christopher Georg Date: Thu, 30 Oct 2025 08:28:22 +0100 Subject: [PATCH 5/6] feat: use PhpFileLoader if XmlFileLoader is not available (since Symfony 8) --- src/Resources/config/adapters.php | 83 ++++++++++++++++++++++++++---- src/Resources/config/flysystem.php | 15 +++++- 2 files changed, 87 insertions(+), 11 deletions(-) diff --git a/src/Resources/config/adapters.php b/src/Resources/config/adapters.php index ed83a79..f78cf64 100644 --- a/src/Resources/config/adapters.php +++ b/src/Resources/config/adapters.php @@ -7,13 +7,78 @@ return static function (ContainerConfigurator $containerConfigurator): void { $services = $containerConfigurator->services(); - $services->set('oneup_flysystem.adapter.local', League\Flysystem\Local\LocalFilesystemAdapter::class)->public(); - $services->set('oneup_flysystem.adapter.awss3v3', League\Flysystem\AwsS3V3\AwsS3V3Adapter::class)->public(); - $services->set('oneup_flysystem.adapter.ftp', League\Flysystem\Ftp\FtpAdapter::class)->public(); - $services->set('oneup_flysystem.adapter.sftp', League\Flysystem\PhpseclibV3\SftpAdapter::class)->public(); - $services->set('oneup_flysystem.adapter.memory', League\Flysystem\InMemory\InMemoryFilesystemAdapter::class)->public(); - $services->set('oneup_flysystem.adapter.async_aws_s3', League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter::class)->public(); - $services->set('oneup_flysystem.adapter.googlecloudstorage', League\Flysystem\GoogleCloudStorage\GoogleCloudStorageAdapter::class)->public(); - $services->set('oneup_flysystem.adapter.gitlab', RoyVoetman\FlysystemGitlab\GitlabAdapter::class)->public(); - $services->set('oneup_flysystem.adapter.azureblob', League\Flysystem\AzureBlobStorage\AzureBlobStorageAdapter::class)->public(); + $services->set('oneup_flysystem.adapter.local', League\Flysystem\Local\LocalFilesystemAdapter::class)->abstract() + ->args([ + 'location', + 'VisibilityConverter', + 'writeFlags', + 'linkHandling', + 'MimeTypeDetector', + 'lazyRootCreation', + ]) + ; + + $services->set('oneup_flysystem.adapter.awss3v3', League\Flysystem\AwsS3V3\AwsS3V3Adapter::class)->abstract() + ->args([ + 'S3ClientInterface', + 'bucket', + 'prefix', + 'VisibilityConverter', + 'MimeTypeDetector', + 'options', + 'streamReads', + ]); + + $services->set('oneup_flysystem.adapter.ftp', League\Flysystem\Ftp\FtpAdapter::class)->abstract() + ->args([ + 'options', + 'FtpConnectionProvider', + 'ConnectivityChecker', + 'VisibilityConverter', + 'MimeTypeDetector', + ]); + + $services->set('oneup_flysystem.adapter.sftp', League\Flysystem\PhpseclibV3\SftpAdapter::class)->abstract() + ->args([ + 'options', + 'root', + 'VisibilityConverter', + 'MimeTypeDetector', + ]); + + $services->set('oneup_flysystem.adapter.memory', League\Flysystem\InMemory\InMemoryFilesystemAdapter::class)->abstract() + ->args([ + 'defaultVisibility', + ]); + + $services->set('oneup_flysystem.adapter.async_aws_s3', League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter::class)->abstract() + ->args([ + 'Client', + 'Bucket', + 'Prefix', + 'VisibilityConverter', + ]); + + $services->set('oneup_flysystem.adapter.googlecloudstorage', League\Flysystem\GoogleCloudStorage\GoogleCloudStorageAdapter::class)->abstract() + ->args([ + 'Client', + 'Bucket', + 'Prefix', + 'VisibilityHandler', + 'defaultVisibility', + 'mimeTypeDetector', + ]); + + $services->set('oneup_flysystem.adapter.gitlab', RoyVoetman\FlysystemGitlab\GitlabAdapter::class)->abstract() + ->args([ + 'Client', + 'Prefix', + ]); + + $services->set('oneup_flysystem.adapter.azureblob', League\Flysystem\AzureBlobStorage\AzureBlobStorageAdapter::class)->abstract() + ->args([ + 'Client', + 'Container', + 'Prefix', + ]); }; diff --git a/src/Resources/config/flysystem.php b/src/Resources/config/flysystem.php index 3fbb365..3c7d37d 100644 --- a/src/Resources/config/flysystem.php +++ b/src/Resources/config/flysystem.php @@ -7,6 +7,17 @@ return static function (ContainerConfigurator $containerConfigurator): void { $services = $containerConfigurator->services(); - $services->set('oneup_flysystem.mount_manager', League\Flysystem\MountManager::class)->public(); - $services->set('oneup_flysystem.filesystem', League\Flysystem\Filesystem::class)->public()->abstract(); + $services->set('oneup_flysystem.mount_manager', League\Flysystem\MountManager::class) + ->public() + ->args([ + 'filesystems', + ]) + ; + + $services->set('oneup_flysystem.filesystem', League\Flysystem\Filesystem::class)->public()->abstract() + ->args([ + 'adapter', + 'config', + ]) + ; }; From 6c4532b8bd6ceb9a53d8ee184831997d66f3145a Mon Sep 17 00:00:00 2001 From: chris Date: Fri, 31 Oct 2025 16:11:36 +0100 Subject: [PATCH 6/6] Update src/Resources/config/flysystem.php Co-authored-by: David Greminger --- src/Resources/config/flysystem.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Resources/config/flysystem.php b/src/Resources/config/flysystem.php index 3c7d37d..6387a49 100644 --- a/src/Resources/config/flysystem.php +++ b/src/Resources/config/flysystem.php @@ -8,10 +8,10 @@ $services = $containerConfigurator->services(); $services->set('oneup_flysystem.mount_manager', League\Flysystem\MountManager::class) - ->public() - ->args([ - 'filesystems', - ]) + ->public() + ->args([ + 'filesystems', + ]) ; $services->set('oneup_flysystem.filesystem', League\Flysystem\Filesystem::class)->public()->abstract()