vendor/league/flysystem-bundle/src/Adapter/Builder/LocalAdapterDefinitionBuilder.php line 69

Open in your IDE?
  1. <?php
  2. /*
  3. * This file is part of the flysystem-bundle project.
  4. *
  5. * (c) Titouan Galopin <galopintitouan@gmail.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace League\FlysystemBundle\Adapter\Builder;
  11. use League\Flysystem\Local\LocalFilesystemAdapter;
  12. use League\Flysystem\UnixVisibility\PortableVisibilityConverter;
  13. use Symfony\Component\DependencyInjection\Definition;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. /**
  16. * @author Titouan Galopin <galopintitouan@gmail.com>
  17. *
  18. * @internal
  19. */
  20. class LocalAdapterDefinitionBuilder extends AbstractAdapterDefinitionBuilder
  21. {
  22. public function getName(): string
  23. {
  24. return 'local';
  25. }
  26. protected function getRequiredPackages(): array
  27. {
  28. return [];
  29. }
  30. protected function configureOptions(OptionsResolver $resolver)
  31. {
  32. $resolver->setRequired('directory');
  33. $resolver->setAllowedTypes('directory', 'string');
  34. $resolver->setDefault('lock', 0);
  35. $resolver->setAllowedTypes('lock', 'scalar');
  36. $resolver->setDefault('skip_links', false);
  37. $resolver->setAllowedTypes('skip_links', 'scalar');
  38. $resolver->setDefault('permissions', function (OptionsResolver $subResolver) {
  39. $subResolver->setDefault('file', function (OptionsResolver $permsResolver) {
  40. $permsResolver->setDefault('public', 0644);
  41. $permsResolver->setAllowedTypes('public', 'scalar');
  42. $permsResolver->setDefault('private', 0600);
  43. $permsResolver->setAllowedTypes('private', 'scalar');
  44. });
  45. $subResolver->setDefault('dir', function (OptionsResolver $permsResolver) {
  46. $permsResolver->setDefault('public', 0755);
  47. $permsResolver->setAllowedTypes('public', 'scalar');
  48. $permsResolver->setDefault('private', 0700);
  49. $permsResolver->setAllowedTypes('private', 'scalar');
  50. });
  51. });
  52. $resolver->setDefault('lazy_root_creation', false);
  53. $resolver->setAllowedTypes('lazy_root_creation', 'scalar');
  54. }
  55. protected function configureDefinition(Definition $definition, array $options)
  56. {
  57. $definition->setClass(LocalFilesystemAdapter::class);
  58. $definition->setArgument(0, $options['directory']);
  59. $definition->setArgument(1,
  60. (new Definition(PortableVisibilityConverter::class))
  61. ->setFactory([PortableVisibilityConverter::class, 'fromArray'])
  62. ->addArgument([
  63. 'file' => [
  64. 'public' => (int) $options['permissions']['file']['public'],
  65. 'private' => (int) $options['permissions']['file']['private'],
  66. ],
  67. 'dir' => [
  68. 'public' => (int) $options['permissions']['dir']['public'],
  69. 'private' => (int) $options['permissions']['dir']['private'],
  70. ],
  71. ])
  72. ->setShared(false)
  73. );
  74. $definition->setArgument(2, $options['lock']);
  75. $definition->setArgument(3, $options['skip_links'] ? LocalFilesystemAdapter::SKIP_LINKS : LocalFilesystemAdapter::DISALLOW_LINKS);
  76. $definition->setArgument(4, null);
  77. $definition->setArgument(5, $options['lazy_root_creation']);
  78. }
  79. }