Passed
Push — master ( 399253...56a070 )
by Roeland
10:07 queued 11s
created

Root::getInternalFolder()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 2
rs 10
1
<?php
2
3
declare(strict_types=1);
4
/**
5
 * @copyright Copyright (c) 2020, Roeland Jago Douma <[email protected]>
6
 *
7
 * @author Roeland Jago Douma <[email protected]>
8
 *
9
 * @license GNU AGPL version 3 or any later version
10
 *
11
 * This program is free software: you can redistribute it and/or modify
12
 * it under the terms of the GNU Affero General Public License as
13
 * published by the Free Software Foundation, either version 3 of the
14
 * License, or (at your option) any later version.
15
 *
16
 * This program is distributed in the hope that it will be useful,
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
 * GNU Affero General Public License for more details.
20
 *
21
 * You should have received a copy of the GNU Affero General Public License
22
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23
 *
24
 */
25
26
namespace OC\Preview\Storage;
27
28
use OC\Files\AppData\AppData;
29
use OC\SystemConfig;
30
use OCP\Files\IRootFolder;
31
use OCP\Files\NotFoundException;
32
use OCP\Files\SimpleFS\ISimpleFolder;
33
34
class Root extends AppData {
35
	public function __construct(IRootFolder $rootFolder, SystemConfig $systemConfig) {
36
		parent::__construct($rootFolder, $systemConfig, 'preview');
37
	}
38
39
40
	public function getFolder(string $name): ISimpleFolder {
41
		$internalFolder = $this->getInternalFolder($name);
42
43
		try {
44
			return parent::getFolder($internalFolder);
45
		} catch (NotFoundException $e) {
46
			/*
47
			 * The new folder structure is not found.
48
			 * Lets try the old one
49
			 */
50
		}
51
52
		return parent::getFolder($name);
53
	}
54
55
	public function newFolder(string $name): ISimpleFolder {
56
		$internalFolder = $this->getInternalFolder($name);
57
		return parent::newFolder($internalFolder);
58
	}
59
60
	/*
61
	 * Do not allow directory listing on this special root
62
	 * since it gets to big and time consuming
63
	 */
64
	public function getDirectoryListing(): array {
65
		return [];
66
	}
67
68
	private function getInternalFolder(string $name): string {
69
		return implode('/', str_split(substr(md5($name), 0, 7))) . '/' . $name;
70
	}
71
}
72