Преглед на файлове

hookup creation and upload time into dav

Signed-off-by: Robin Appelman <robin@icewind.nl>
tags/v18.0.0beta1
Robin Appelman преди 4 години
родител
ревизия
2165f10aaf
No account linked to committer's email address
променени са 3 файла, в които са добавени 39 реда и са изтрити 0 реда
  1. 13
    0
      apps/dav/lib/Connector/Sabre/File.php
  2. 18
    0
      apps/dav/lib/Connector/Sabre/FilesPlugin.php
  3. 8
    0
      apps/dav/lib/Connector/Sabre/Node.php

+ 13
- 0
apps/dav/lib/Connector/Sabre/File.php Целия файл

@@ -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);
}

+ 18
- 0
apps/dav/lib/Connector/Sabre/FilesPlugin.php Целия файл

@@ -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;
});
}

/**

+ 8
- 0
apps/dav/lib/Connector/Sabre/Node.php Целия файл

@@ -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…
Отказ
Запис