Handle badly named version files more gracefully and log information

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
pull/34528/head
Côme Chilliet 3 years ago
parent 5fd3971f35
commit 53cb5b8d07
No known key found for this signature in database
GPG Key ID: A3E2F658B28C760A
  1. 18
      apps/files_versions/lib/Storage.php

@ -176,7 +176,6 @@ class Storage {
* store a new version of a file.
*/
public static function store($filename) {
// if the file gets streamed we need to remove the .part extension
// to get the right target
$ext = pathinfo($filename, PATHINFO_EXTENSION);
@ -357,7 +356,6 @@ class Storage {
* @return bool
*/
public static function rollback(string $file, int $revision, IUser $user) {
// add expected leading slash
$filename = '/' . ltrim($file, '/');
@ -495,11 +493,21 @@ class Storage {
$filename = $pathparts['filename'];
if ($filename === $versionedFile) {
$pathparts = pathinfo($entryName);
$timestamp = substr($pathparts['extension'], 1);
$timestamp = substr($pathparts['extension'] ?? '', 1);
if (!is_numeric($timestamp)) {
\OC::$server->get(LoggerInterface::class)->error(
'Version file {path} has incorrect name format',
[
'path' => $entryName,
'app' => 'files_versions',
]
);
continue;
}
$filename = $pathparts['filename'];
$key = $timestamp . '#' . $filename;
$versions[$key]['version'] = $timestamp;
$versions[$key]['humanReadableTimestamp'] = self::getHumanReadableTimestamp($timestamp);
$versions[$key]['humanReadableTimestamp'] = self::getHumanReadableTimestamp((int)$timestamp);
if (empty($userFullPath)) {
$versions[$key]['preview'] = '';
} else {
@ -578,7 +586,7 @@ class Storage {
* @param int $timestamp
* @return string for example "5 days ago"
*/
private static function getHumanReadableTimestamp($timestamp) {
private static function getHumanReadableTimestamp(int $timestamp): string {
$diff = time() - $timestamp;
if ($diff < 60) { // first minute

Loading…
Cancel
Save