Completed
Push — ezp25946-migrate_files_to_othe... ( 7b23be...d05e09 )
by
unknown
29:04 queued 15:33
created

Flysystem::getFilePrefixForScope()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 9
nc 4
nop 1
dl 0
loc 15
rs 9.2
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * This file is part of the eZ Publish Kernel package.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 */
9
namespace eZ\Publish\Core\IO\IOMetadataHandler;
10
11
use DateTime;
12
use eZ\Publish\Core\IO\Exception\BinaryFileNotFoundException;
13
use eZ\Publish\Core\IO\IOMetadataHandler;
14
use eZ\Publish\SPI\IO\BinaryFile as SPIBinaryFile;
15
use eZ\Publish\SPI\IO\BinaryFileCreateStruct as SPIBinaryFileCreateStruct;
16
use League\Flysystem\FileNotFoundException;
17
use League\Flysystem\FilesystemInterface;
18
19
class Flysystem implements IOMetadataHandler
20
{
21
    /** @var FilesystemInterface */
22
    private $filesystem;
23
24
    public function __construct(FilesystemInterface $filesystem)
25
    {
26
        $this->filesystem = $filesystem;
27
    }
28
29
    /**
30
     * Only reads & return metadata, since the binarydata handler took care of creating the file already.
31
     *
32
     * @throws BinaryFileNotFoundException
33
     */
34
    public function create(SPIBinaryFileCreateStruct $spiBinaryFileCreateStruct)
35
    {
36
        return $this->load($spiBinaryFileCreateStruct->id);
37
    }
38
39
    /**
40
     * Does really nothing, the binary data handler takes care of it.
41
     *
42
     * @param $spiBinaryFileId
43
     */
44
    public function delete($spiBinaryFileId)
45
    {
46
    }
47
48
    public function load($spiBinaryFileId)
49
    {
50
        try {
51
            $info = $this->filesystem->getMetadata($spiBinaryFileId);
52
        } catch (FileNotFoundException $e) {
53
            throw new BinaryFileNotFoundException($spiBinaryFileId);
54
        }
55
56
        $spiBinaryFile = new SPIBinaryFile();
57
        $spiBinaryFile->id = $spiBinaryFileId;
58
        $spiBinaryFile->size = $info['size'];
59
60
        if (isset($info['timestamp'])) {
61
            $spiBinaryFile->mtime = new DateTime('@' . $info['timestamp']);
62
        }
63
64
        return $spiBinaryFile;
65
    }
66
67
    public function exists($spiBinaryFileId)
68
    {
69
        return $this->filesystem->has($spiBinaryFileId);
70
    }
71
72
    public function getMimeType($spiBinaryFileId)
73
    {
74
        return $this->filesystem->getMimetype($spiBinaryFileId);
0 ignored issues
show
Comprehensibility Best Practice introduced by
The expression $this->filesystem->getMimetype($spiBinaryFileId); of type string|false adds false to the return on line 74 which is incompatible with the return type declared by the interface eZ\Publish\Core\IO\IOMetadataHandler::getMimeType of type string. It seems like you forgot to handle an error condition.
Loading history...
75
    }
76
77
    /**
78
     * Does nothing, as the binarydata handler takes care of it.
79
     */
80
    public function deleteDirectory($spiPath)
81
    {
82
    }
83
84
    /**
85
     * Count all available files in $scope.
86
     *
87
     * @param string $scope The file scope, one of 'binaryfile', 'image', 'mediafile'
88
     * @return int
89
     */
90
    public function count($scope)
91
    {
92
        return count($this->filesystem->listContents($this->getFilePrefixForScope($scope), true));
93
    }
94
95
    /**
96
     * Get the file prefix (storage path) for the given scope.
97
     *
98
     * @param $scope
99
     * @return string
100
     */
101
    private function getFilePrefixForScope($scope)
102
    {
103
        switch ($scope) {
104
            case 'image':
105
                return 'images';
106
107
            case 'binaryfile':
108
                return 'original';
109
110
            case 'mediafile':
111
                return 'original';
112
        }
113
114
        return 'UNKNOWN_FILE_PREFIX';
115
    }
116
}
117