Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace League\Flysystem\UnixVisibility;
6
 
7
use League\Flysystem\PortableVisibilityGuard;
8
use League\Flysystem\Visibility;
9
 
10
class PortableVisibilityConverter implements VisibilityConverter
11
{
12
    public function __construct(
13
        private int $filePublic = 0644,
14
        private int $filePrivate = 0600,
15
        private int $directoryPublic = 0755,
16
        private int $directoryPrivate = 0700,
17
        private string $defaultForDirectories = Visibility::PRIVATE
18
    ) {
19
    }
20
 
21
    public function forFile(string $visibility): int
22
    {
23
        PortableVisibilityGuard::guardAgainstInvalidInput($visibility);
24
 
25
        return $visibility === Visibility::PUBLIC
26
            ? $this->filePublic
27
            : $this->filePrivate;
28
    }
29
 
30
    public function forDirectory(string $visibility): int
31
    {
32
        PortableVisibilityGuard::guardAgainstInvalidInput($visibility);
33
 
34
        return $visibility === Visibility::PUBLIC
35
            ? $this->directoryPublic
36
            : $this->directoryPrivate;
37
    }
38
 
39
    public function inverseForFile(int $visibility): string
40
    {
41
        if ($visibility === $this->filePublic) {
42
            return Visibility::PUBLIC;
43
        } elseif ($visibility === $this->filePrivate) {
44
            return Visibility::PRIVATE;
45
        }
46
 
47
        return Visibility::PUBLIC; // default
48
    }
49
 
50
    public function inverseForDirectory(int $visibility): string
51
    {
52
        if ($visibility === $this->directoryPublic) {
53
            return Visibility::PUBLIC;
54
        } elseif ($visibility === $this->directoryPrivate) {
55
            return Visibility::PRIVATE;
56
        }
57
 
58
        return Visibility::PUBLIC; // default
59
    }
60
 
61
    public function defaultForDirectories(): int
62
    {
63
        return $this->defaultForDirectories === Visibility::PUBLIC ? $this->directoryPublic : $this->directoryPrivate;
64
    }
65
 
66
    /**
67
     * @param array<mixed>  $permissionMap
68
     */
69
    public static function fromArray(array $permissionMap, string $defaultForDirectories = Visibility::PRIVATE): PortableVisibilityConverter
70
    {
71
        return new PortableVisibilityConverter(
72
            $permissionMap['file']['public'] ?? 0644,
73
            $permissionMap['file']['private'] ?? 0600,
74
            $permissionMap['dir']['public'] ?? 0755,
75
            $permissionMap['dir']['private'] ?? 0700,
76
            $defaultForDirectories
77
        );
78
    }
79
}