hookup creation and upload time into dav
Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
parent
136c4ef925
commit
2165f10aaf
|
@ -291,6 +291,19 @@ class File extends Node implements IFile {
|
|||
}
|
||||
}
|
||||
|
||||
$fileInfoUpdate = [
|
||||
'upload_time' => time()
|
||||
];
|
||||
|
||||
// allow sync clients to send the creation time along in a header
|
||||
if (isset($this->request->server['HTTP_X_OC_CTIME'])) {
|
||||
$ctime = $this->sanitizeMtime($this->request->server['HTTP_X_OC_CTIME']);
|
||||
$fileInfoUpdate['creation_time'] = $ctime;
|
||||
$this->header('X-OC-CTime: accepted');
|
||||
}
|
||||
|
||||
$this->fileView->putFileInfo($this->path, $fileInfoUpdate);
|
||||
|
||||
if ($view) {
|
||||
$this->emitPostHooks($exists);
|
||||
}
|
||||
|
|
|
@ -70,6 +70,9 @@ class FilesPlugin extends ServerPlugin {
|
|||
const HAS_PREVIEW_PROPERTYNAME = '{http://nextcloud.org/ns}has-preview';
|
||||
const MOUNT_TYPE_PROPERTYNAME = '{http://nextcloud.org/ns}mount-type';
|
||||
const IS_ENCRYPTED_PROPERTYNAME = '{http://nextcloud.org/ns}is-encrypted';
|
||||
const METADATA_ETAG_PROPERTYNAME = '{http://nextcloud.org/ns}metadata_etag';
|
||||
const UPLOAD_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}upload_time';
|
||||
const CREATION_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}creation_time';
|
||||
const SHARE_NOTE = '{http://nextcloud.org/ns}note';
|
||||
|
||||
/**
|
||||
|
@ -400,6 +403,14 @@ class FilesPlugin extends ServerPlugin {
|
|||
return new ChecksumList($checksum);
|
||||
});
|
||||
|
||||
$propFind->handle(self::CREATION_TIME_PROPERTYNAME, function() use ($node) {
|
||||
return $node->getFileInfo()->getCreationTime();
|
||||
});
|
||||
|
||||
$propFind->handle(self::UPLOAD_TIME_PROPERTYNAME, function() use ($node) {
|
||||
return $node->getFileInfo()->getUploadTime();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
if ($node instanceof \OCA\DAV\Connector\Sabre\Directory) {
|
||||
|
@ -470,6 +481,13 @@ class FilesPlugin extends ServerPlugin {
|
|||
}
|
||||
return false;
|
||||
});
|
||||
$propPatch->handle(self::CREATION_TIME_PROPERTYNAME, function($time) use ($node) {
|
||||
if (empty($time)) {
|
||||
return false;
|
||||
}
|
||||
$node->setCreationTime((int) $time);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -201,6 +201,14 @@ abstract class Node implements \Sabre\DAV\INode {
|
|||
return $this->fileView->putFileInfo($this->path, array('etag' => $etag));
|
||||
}
|
||||
|
||||
public function setCreationTime(int $time) {
|
||||
return $this->fileView->putFileInfo($this->path, array('creation_time' => $time));
|
||||
}
|
||||
|
||||
public function setUploadTime(int $time) {
|
||||
return $this->fileView->putFileInfo($this->path, array('upload_time' => $time));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the size of the node, in bytes
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue