1212namespace League \FlysystemBundle \Adapter \Builder ;
1313
1414use League \Flysystem \Local \LocalFilesystemAdapter ;
15- use League \Flysystem \UnixVisibility \ PortableVisibilityConverter ;
15+ use League \Flysystem \Visibility ;
1616use Symfony \Component \DependencyInjection \Definition ;
1717use Symfony \Component \OptionsResolver \OptionsResolver ;
1818
@@ -33,58 +33,28 @@ protected function getRequiredPackages(): array
3333 return [];
3434 }
3535
36- protected function configureOptions (OptionsResolver $ resolver )
36+ protected function configureOptions (OptionsResolver $ resolver ): void
3737 {
3838 $ resolver ->setRequired ('directory ' );
3939 $ resolver ->setAllowedTypes ('directory ' , 'string ' );
4040
41+ $ this ->configureUnixOptions ($ resolver );
42+
4143 $ resolver ->setDefault ('lock ' , 0 );
4244 $ resolver ->setAllowedTypes ('lock ' , 'scalar ' );
4345
4446 $ resolver ->setDefault ('skip_links ' , false );
4547 $ resolver ->setAllowedTypes ('skip_links ' , 'scalar ' );
4648
47- $ resolver ->setDefault ('permissions ' , function (OptionsResolver $ subResolver ) {
48- $ subResolver ->setDefault ('file ' , function (OptionsResolver $ permsResolver ) {
49- $ permsResolver ->setDefault ('public ' , 0644 );
50- $ permsResolver ->setAllowedTypes ('public ' , 'scalar ' );
51-
52- $ permsResolver ->setDefault ('private ' , 0600 );
53- $ permsResolver ->setAllowedTypes ('private ' , 'scalar ' );
54- });
55-
56- $ subResolver ->setDefault ('dir ' , function (OptionsResolver $ permsResolver ) {
57- $ permsResolver ->setDefault ('public ' , 0755 );
58- $ permsResolver ->setAllowedTypes ('public ' , 'scalar ' );
59-
60- $ permsResolver ->setDefault ('private ' , 0700 );
61- $ permsResolver ->setAllowedTypes ('private ' , 'scalar ' );
62- });
63- });
64-
6549 $ resolver ->setDefault ('lazy_root_creation ' , false );
6650 $ resolver ->setAllowedTypes ('lazy_root_creation ' , 'scalar ' );
6751 }
6852
69- protected function configureDefinition (Definition $ definition , array $ options)
53+ protected function configureDefinition (Definition $ definition , array $ options, ? string $ defaultVisibilityForDirectories ): void
7054 {
7155 $ definition ->setClass (LocalFilesystemAdapter::class);
7256 $ definition ->setArgument (0 , $ options ['directory ' ]);
73- $ definition ->setArgument (1 ,
74- (new Definition (PortableVisibilityConverter::class))
75- ->setFactory ([PortableVisibilityConverter::class, 'fromArray ' ])
76- ->addArgument ([
77- 'file ' => [
78- 'public ' => (int ) $ options ['permissions ' ]['file ' ]['public ' ],
79- 'private ' => (int ) $ options ['permissions ' ]['file ' ]['private ' ],
80- ],
81- 'dir ' => [
82- 'public ' => (int ) $ options ['permissions ' ]['dir ' ]['public ' ],
83- 'private ' => (int ) $ options ['permissions ' ]['dir ' ]['private ' ],
84- ],
85- ])
86- ->setShared (false )
87- );
57+ $ definition ->setArgument (1 , $ this ->createUnixDefinition ($ options ['permissions ' ], $ defaultVisibilityForDirectories ?? Visibility::PRIVATE ));
8858 $ definition ->setArgument (2 , $ options ['lock ' ]);
8959 $ definition ->setArgument (3 , $ options ['skip_links ' ] ? LocalFilesystemAdapter::SKIP_LINKS : LocalFilesystemAdapter::DISALLOW_LINKS );
9060 $ definition ->setArgument (4 , null );
0 commit comments