Completed
Push — master ( a23d52...d867f9 )
by Morris
48:45 queued 13s
created

TrashFolderFolder::getLastModified()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
/**
4
 * @copyright 2018, Roeland Jago Douma <[email protected]>
5
 *
6
 * @author Roeland Jago Douma <[email protected]>
7
 *
8
 * @license GNU AGPL version 3 or any later version
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU Affero General Public License as
12
 * published by the Free Software Foundation, either version 3 of the
13
 * License, or (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 * GNU Affero General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU Affero General Public License
21
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
 *
23
 */
24
namespace OCA\Files_Trashbin\Sabre;
25
26
use OCP\Files\FileInfo;
27
use Sabre\DAV\Exception\Forbidden;
28
use Sabre\DAV\Exception\NotFound;
29
use Sabre\DAV\ICollection;
30
31
class TrashFolderFolder extends AbstractTrash implements ICollection, ITrash {
32
33
	/** @var string */
34
	private $root;
35
36
	/** @var string */
37
	private $userId;
38
39
	/** @var string */
40
	private $location;
41
42 View Code Duplication
	public function __construct(string $root,
43
								string $userId,
44
								FileInfo $data,
45
								string $location) {
46
		$this->root = $root;
47
		$this->userId = $userId;
48
		$this->location = $location;
49
		parent::__construct($data);
50
	}
51
52
	public function createFile($name, $data = null) {
53
		throw new Forbidden();
54
	}
55
56
	public function createDirectory($name) {
57
		throw new Forbidden();
58
	}
59
60
	public function getChild($name): ITrash {
61
		$entries = \OCA\Files_Trashbin\Helper::getTrashFiles($this->root . '/' . $this->getName(), $this->userId);
0 ignored issues
show
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
62
63
		foreach ($entries as $entry) {
64
			if ($entry->getName() === $name) {
65 View Code Duplication
				if ($entry->getType() === FileInfo::TYPE_FOLDER) {
66
					return new TrashFolderFolder($this->root . '/' . $this->getName(), $this->userId, $entry, $this->getOriginalLocation());
0 ignored issues
show
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
67
				}
68
				return new TrashFolderFile($this->root . '/' . $this->getName(), $this->userId, $entry, $this->getOriginalLocation());
0 ignored issues
show
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
69
			}
70
		}
71
72
		throw new NotFound();
73
	}
74
75
	public function getChildren(): array {
76
		$entries = \OCA\Files_Trashbin\Helper::getTrashFiles($this->root . '/' . $this->getName(), $this->userId);
0 ignored issues
show
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
77
78
		$children = array_map(function (FileInfo $entry) {
79 View Code Duplication
			if ($entry->getType() === FileInfo::TYPE_FOLDER) {
80
				return new TrashFolderFolder($this->root.'/'.$this->getName(), $this->userId, $entry, $this->getOriginalLocation());
0 ignored issues
show
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
81
			}
82
			return new TrashFolderFile($this->root.'/'.$this->getName(), $this->userId, $entry, $this->getOriginalLocation());
0 ignored issues
show
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
83
		}, $entries);
84
85
		return $children;
86
	}
87
88 View Code Duplication
	public function childExists($name): bool {
89
		$entries = \OCA\Files_Trashbin\Helper::getTrashFiles($this->root . '/' . $this->getName(), $this->userId);
0 ignored issues
show
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
90
91
		foreach ($entries as $entry) {
92
			if ($entry->getName() === $name) {
93
				return true;
94
			}
95
		}
96
97
		return false;
98
	}
99
100
	public function delete() {
101
		\OCA\Files_Trashbin\Trashbin::delete($this->root . '/' . $this->getName(), $this->userId, null);
0 ignored issues
show
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
102
	}
103
104
	public function setName($name) {
105
		throw new Forbidden();
106
	}
107
108
	public function restore(): bool {
109
		return \OCA\Files_Trashbin\Trashbin::restore($this->root . '/' . $this->getName(), $this->data->getName(), null);
0 ignored issues
show
Bug introduced by
Consider using $this->name. There is an issue with getName() and APC-enabled PHP versions.
Loading history...
110
	}
111
112
	public function getOriginalLocation(): string {
113
		return $this->location . '/' . $this->getFilename();
114
	}
115
}
116