12
12
namespace League \FlysystemBundle \Adapter \Builder ;
13
13
14
14
use League \Flysystem \Local \LocalFilesystemAdapter ;
15
- use League \Flysystem \UnixVisibility \ PortableVisibilityConverter ;
15
+ use League \Flysystem \Visibility ;
16
16
use Symfony \Component \DependencyInjection \Definition ;
17
17
use Symfony \Component \OptionsResolver \OptionsResolver ;
18
18
@@ -33,58 +33,28 @@ protected function getRequiredPackages(): array
33
33
return [];
34
34
}
35
35
36
- protected function configureOptions (OptionsResolver $ resolver )
36
+ protected function configureOptions (OptionsResolver $ resolver ): void
37
37
{
38
38
$ resolver ->setRequired ('directory ' );
39
39
$ resolver ->setAllowedTypes ('directory ' , 'string ' );
40
40
41
+ $ this ->configureUnixOptions ($ resolver );
42
+
41
43
$ resolver ->setDefault ('lock ' , 0 );
42
44
$ resolver ->setAllowedTypes ('lock ' , 'scalar ' );
43
45
44
46
$ resolver ->setDefault ('skip_links ' , false );
45
47
$ resolver ->setAllowedTypes ('skip_links ' , 'scalar ' );
46
48
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
-
65
49
$ resolver ->setDefault ('lazy_root_creation ' , false );
66
50
$ resolver ->setAllowedTypes ('lazy_root_creation ' , 'scalar ' );
67
51
}
68
52
69
- protected function configureDefinition (Definition $ definition , array $ options)
53
+ protected function configureDefinition (Definition $ definition , array $ options, ? string $ defaultVisibilityForDirectories ): void
70
54
{
71
55
$ definition ->setClass (LocalFilesystemAdapter::class);
72
56
$ 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 ));
88
58
$ definition ->setArgument (2 , $ options ['lock ' ]);
89
59
$ definition ->setArgument (3 , $ options ['skip_links ' ] ? LocalFilesystemAdapter::SKIP_LINKS : LocalFilesystemAdapter::DISALLOW_LINKS );
90
60
$ definition ->setArgument (4 , null );
0 commit comments