1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace OCP\Files\Cache;
use ArrayAccess;
/**
* meta data for a file or folder
*
* @since 9.0.0
*
* This interface extends \ArrayAccess since v21.0.0, previous versions only
* implemented it in the private implementation. Hence php would allow using the
* object as array, while strictly speaking it didn't support this.
*/
interface ICacheEntry extends ArrayAccess {
public const DIRECTORY_MIMETYPE = 'httpd/unix-directory';
/**
* Get the numeric id of a file
*
* @return int
* @since 9.0.0
*/
public function getId();
/**
* Get the numeric id for the storage
*
* @return int
* @since 9.0.0
*/
public function getStorageId();
/**
* Get the path of the file relative to the storage root
*
* @return string
* @since 9.0.0
*/
public function getPath();
/**
* Get the file name
*
* @return string
* @since 9.0.0
*/
public function getName();
/**
* Get the full mimetype
*
* @return string
* @since 9.0.0
*/
public function getMimeType();
/**
* Get the first part of the mimetype
*
* @return string
* @since 9.0.0
*/
public function getMimePart();
/**
* Get the file size in bytes
*
* @return int
* @since 9.0.0
*/
public function getSize();
/**
* Get the last modified date as unix timestamp
*
* @return int
* @since 9.0.0
*/
public function getMTime();
/**
* Get the last modified date on the storage as unix timestamp
*
* Note that when a file is updated we also update the mtime of all parent folders to make it visible to the user which folder has had updates most recently
* This can differ from the mtime on the underlying storage which usually only changes when a direct child is added, removed or renamed
*
* @return int
* @since 9.0.0
*/
public function getStorageMTime();
/**
* Get the etag for the file
*
* An etag is used for change detection of files and folders, an etag of a file changes whenever the content of the file changes
* Etag for folders change whenever a file in the folder has changed
*
* @return string
* @since 9.0.0
*/
public function getEtag();
/**
* Get the permissions for the file stored as bitwise combination of \OCP\PERMISSION_READ, \OCP\PERMISSION_CREATE
* \OCP\PERMISSION_UPDATE, \OCP\PERMISSION_DELETE and \OCP\PERMISSION_SHARE
*
* @return int
* @since 9.0.0
*/
public function getPermissions();
/**
* Check if the file is encrypted
*
* @return bool
* @since 9.0.0
*/
public function isEncrypted();
/**
* Get the metadata etag for the file
*
* @return string | null
* @since 18.0.0
*/
public function getMetadataEtag(): ?string;
/**
* Get the last modified date as unix timestamp
*
* @return int | null
* @since 18.0.0
*/
public function getCreationTime(): ?int;
/**
* Get the last modified date as unix timestamp
*
* @return int | null
* @since 18.0.0
*/
public function getUploadTime(): ?int;
/**
* Get the unencrypted size
*
* This might be different from the result of getSize
*
* @return int
* @since 25.0.0
*/
public function getUnencryptedSize(): int;
}
|