@@ -84,17 +84,17 @@ discard block |
||
84 | 84 | |
85 | 85 | private static $max_versions_per_interval = [ |
86 | 86 | //first 10sec, one version every 2sec |
87 | - 1 => ['intervalEndsAfter' => 10, 'step' => 2], |
|
87 | + 1 => ['intervalEndsAfter' => 10, 'step' => 2], |
|
88 | 88 | //next minute, one version every 10sec |
89 | - 2 => ['intervalEndsAfter' => 60, 'step' => 10], |
|
89 | + 2 => ['intervalEndsAfter' => 60, 'step' => 10], |
|
90 | 90 | //next hour, one version every minute |
91 | - 3 => ['intervalEndsAfter' => 3600, 'step' => 60], |
|
91 | + 3 => ['intervalEndsAfter' => 3600, 'step' => 60], |
|
92 | 92 | //next 24h, one version every hour |
93 | - 4 => ['intervalEndsAfter' => 86400, 'step' => 3600], |
|
93 | + 4 => ['intervalEndsAfter' => 86400, 'step' => 3600], |
|
94 | 94 | //next 30days, one version per day |
95 | 95 | 5 => ['intervalEndsAfter' => 2592000, 'step' => 86400], |
96 | 96 | //until the end one version per week |
97 | - 6 => ['intervalEndsAfter' => -1, 'step' => 604800], |
|
97 | + 6 => ['intervalEndsAfter' => -1, 'step' => 604800], |
|
98 | 98 | ]; |
99 | 99 | |
100 | 100 | /** @var \OCA\Files_Versions\AppInfo\Application */ |
@@ -167,7 +167,7 @@ discard block |
||
167 | 167 | * @return int versions size |
168 | 168 | */ |
169 | 169 | private static function getVersionsSize($user) { |
170 | - $view = new View('/' . $user); |
|
170 | + $view = new View('/'.$user); |
|
171 | 171 | $fileInfo = $view->getFileInfo('/files_versions'); |
172 | 172 | return isset($fileInfo['size']) ? $fileInfo['size'] : 0; |
173 | 173 | } |
@@ -185,7 +185,7 @@ discard block |
||
185 | 185 | } |
186 | 186 | |
187 | 187 | // we only handle existing files |
188 | - if (! Filesystem::file_exists($filename) || Filesystem::is_dir($filename)) { |
|
188 | + if (!Filesystem::file_exists($filename) || Filesystem::is_dir($filename)) { |
|
189 | 189 | return false; |
190 | 190 | } |
191 | 191 | |
@@ -268,14 +268,14 @@ discard block |
||
268 | 268 | $filename = $deletedFile['filename']; |
269 | 269 | |
270 | 270 | if (!Filesystem::file_exists($path)) { |
271 | - $view = new View('/' . $uid . '/files_versions'); |
|
271 | + $view = new View('/'.$uid.'/files_versions'); |
|
272 | 272 | |
273 | 273 | $versions = self::getVersions($uid, $filename); |
274 | 274 | if (!empty($versions)) { |
275 | 275 | foreach ($versions as $v) { |
276 | - \OC_Hook::emit('\OCP\Versions', 'preDelete', ['path' => $path . $v['version'], 'trigger' => self::DELETE_TRIGGER_MASTER_REMOVED]); |
|
277 | - self::deleteVersion($view, $filename . '.v' . $v['version']); |
|
278 | - \OC_Hook::emit('\OCP\Versions', 'delete', ['path' => $path . $v['version'], 'trigger' => self::DELETE_TRIGGER_MASTER_REMOVED]); |
|
276 | + \OC_Hook::emit('\OCP\Versions', 'preDelete', ['path' => $path.$v['version'], 'trigger' => self::DELETE_TRIGGER_MASTER_REMOVED]); |
|
277 | + self::deleteVersion($view, $filename.'.v'.$v['version']); |
|
278 | + \OC_Hook::emit('\OCP\Versions', 'delete', ['path' => $path.$v['version'], 'trigger' => self::DELETE_TRIGGER_MASTER_REMOVED]); |
|
279 | 279 | } |
280 | 280 | } |
281 | 281 | } |
@@ -309,33 +309,33 @@ discard block |
||
309 | 309 | $rootView = new View(''); |
310 | 310 | |
311 | 311 | // did we move a directory ? |
312 | - if ($rootView->is_dir('/' . $targetOwner . '/files/' . $targetPath)) { |
|
312 | + if ($rootView->is_dir('/'.$targetOwner.'/files/'.$targetPath)) { |
|
313 | 313 | // does the directory exists for versions too ? |
314 | - if ($rootView->is_dir('/' . $sourceOwner . '/files_versions/' . $sourcePath)) { |
|
314 | + if ($rootView->is_dir('/'.$sourceOwner.'/files_versions/'.$sourcePath)) { |
|
315 | 315 | // create missing dirs if necessary |
316 | - self::createMissingDirectories($targetPath, new View('/'. $targetOwner)); |
|
316 | + self::createMissingDirectories($targetPath, new View('/'.$targetOwner)); |
|
317 | 317 | |
318 | 318 | // move the directory containing the versions |
319 | 319 | $rootView->$operation( |
320 | - '/' . $sourceOwner . '/files_versions/' . $sourcePath, |
|
321 | - '/' . $targetOwner . '/files_versions/' . $targetPath |
|
320 | + '/'.$sourceOwner.'/files_versions/'.$sourcePath, |
|
321 | + '/'.$targetOwner.'/files_versions/'.$targetPath |
|
322 | 322 | ); |
323 | 323 | } |
324 | - } elseif ($versions = Storage::getVersions($sourceOwner, '/' . $sourcePath)) { |
|
324 | + } elseif ($versions = Storage::getVersions($sourceOwner, '/'.$sourcePath)) { |
|
325 | 325 | // create missing dirs if necessary |
326 | - self::createMissingDirectories($targetPath, new View('/'. $targetOwner)); |
|
326 | + self::createMissingDirectories($targetPath, new View('/'.$targetOwner)); |
|
327 | 327 | |
328 | 328 | foreach ($versions as $v) { |
329 | 329 | // move each version one by one to the target directory |
330 | 330 | $rootView->$operation( |
331 | - '/' . $sourceOwner . '/files_versions/' . $sourcePath.'.v' . $v['version'], |
|
332 | - '/' . $targetOwner . '/files_versions/' . $targetPath.'.v'.$v['version'] |
|
331 | + '/'.$sourceOwner.'/files_versions/'.$sourcePath.'.v'.$v['version'], |
|
332 | + '/'.$targetOwner.'/files_versions/'.$targetPath.'.v'.$v['version'] |
|
333 | 333 | ); |
334 | 334 | } |
335 | 335 | } |
336 | 336 | |
337 | 337 | // if we moved versions directly for a file, schedule expiration check for that file |
338 | - if (!$rootView->is_dir('/' . $targetOwner . '/files/' . $targetPath)) { |
|
338 | + if (!$rootView->is_dir('/'.$targetOwner.'/files/'.$targetPath)) { |
|
339 | 339 | self::scheduleExpire($targetOwner, $targetPath); |
340 | 340 | } |
341 | 341 | } |
@@ -350,14 +350,14 @@ discard block |
||
350 | 350 | public static function rollback(string $file, int $revision, IUser $user) { |
351 | 351 | |
352 | 352 | // add expected leading slash |
353 | - $filename = '/' . ltrim($file, '/'); |
|
353 | + $filename = '/'.ltrim($file, '/'); |
|
354 | 354 | |
355 | 355 | // Fetch the userfolder to trigger view hooks |
356 | 356 | $root = \OC::$server->get(IRootFolder::class); |
357 | 357 | $userFolder = $root->getUserFolder($user->getUID()); |
358 | 358 | |
359 | 359 | $users_view = new View('/'.$user->getUID()); |
360 | - $files_view = new View('/'. $user->getUID().'/files'); |
|
360 | + $files_view = new View('/'.$user->getUID().'/files'); |
|
361 | 361 | |
362 | 362 | $versionCreated = false; |
363 | 363 | |
@@ -375,7 +375,7 @@ discard block |
||
375 | 375 | $versionCreated = true; |
376 | 376 | } |
377 | 377 | |
378 | - $fileToRestore = 'files_versions' . $filename . '.v' . $revision; |
|
378 | + $fileToRestore = 'files_versions'.$filename.'.v'.$revision; |
|
379 | 379 | |
380 | 380 | // Restore encrypted version of the old file for the newly restored file |
381 | 381 | // This has to happen manually here since the file is manually copied below |
@@ -391,7 +391,7 @@ discard block |
||
391 | 391 | ); |
392 | 392 | |
393 | 393 | // rollback |
394 | - if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) { |
|
394 | + if (self::copyFileContents($users_view, $fileToRestore, 'files'.$filename)) { |
|
395 | 395 | $files_view->touch($file, $revision); |
396 | 396 | Storage::scheduleExpire($user->getUID(), $file); |
397 | 397 | |
@@ -463,12 +463,12 @@ discard block |
||
463 | 463 | return $versions; |
464 | 464 | } |
465 | 465 | // fetch for old versions |
466 | - $view = new View('/' . $uid . '/'); |
|
466 | + $view = new View('/'.$uid.'/'); |
|
467 | 467 | |
468 | 468 | $pathinfo = pathinfo($filename); |
469 | 469 | $versionedFile = $pathinfo['basename']; |
470 | 470 | |
471 | - $dir = Filesystem::normalizePath(self::VERSIONS_ROOT . '/' . $pathinfo['dirname']); |
|
471 | + $dir = Filesystem::normalizePath(self::VERSIONS_ROOT.'/'.$pathinfo['dirname']); |
|
472 | 472 | |
473 | 473 | $dirContent = false; |
474 | 474 | if ($view->is_dir($dir)) { |
@@ -488,7 +488,7 @@ discard block |
||
488 | 488 | $pathparts = pathinfo($entryName); |
489 | 489 | $timestamp = substr($pathparts['extension'], 1); |
490 | 490 | $filename = $pathparts['filename']; |
491 | - $key = $timestamp . '#' . $filename; |
|
491 | + $key = $timestamp.'#'.$filename; |
|
492 | 492 | $versions[$key]['version'] = $timestamp; |
493 | 493 | $versions[$key]['humanReadableTimestamp'] = self::getHumanReadableTimestamp($timestamp); |
494 | 494 | if (empty($userFullPath)) { |
@@ -499,9 +499,9 @@ discard block |
||
499 | 499 | $versions[$key]['preview'] = $urlGenerator->linkToRoute('files_version.Preview.getPreview', |
500 | 500 | ['file' => $userFullPath, 'version' => $timestamp]); |
501 | 501 | } |
502 | - $versions[$key]['path'] = Filesystem::normalizePath($pathinfo['dirname'] . '/' . $filename); |
|
502 | + $versions[$key]['path'] = Filesystem::normalizePath($pathinfo['dirname'].'/'.$filename); |
|
503 | 503 | $versions[$key]['name'] = $versionedFile; |
504 | - $versions[$key]['size'] = $view->filesize($dir . '/' . $entryName); |
|
504 | + $versions[$key]['size'] = $view->filesize($dir.'/'.$entryName); |
|
505 | 505 | $versions[$key]['mimetype'] = \OC::$server->get(IMimeTypeDetector::class)->detectPath($versionedFile); |
506 | 506 | } |
507 | 507 | } |
@@ -525,7 +525,7 @@ discard block |
||
525 | 525 | $root = \OC::$server->get(IRootFolder::class); |
526 | 526 | try { |
527 | 527 | /** @var Folder $versionsRoot */ |
528 | - $versionsRoot = $root->get('/' . $uid . '/files_versions'); |
|
528 | + $versionsRoot = $root->get('/'.$uid.'/files_versions'); |
|
529 | 529 | } catch (NotFoundException $e) { |
530 | 530 | return; |
531 | 531 | } |
@@ -546,12 +546,12 @@ discard block |
||
546 | 546 | )); |
547 | 547 | |
548 | 548 | /** @var Node[] $versions */ |
549 | - $versions = array_filter($allVersions, function (Node $info) use ($threshold) { |
|
549 | + $versions = array_filter($allVersions, function(Node $info) use ($threshold) { |
|
550 | 550 | $versionsBegin = strrpos($info->getName(), '.v'); |
551 | 551 | if ($versionsBegin === false) { |
552 | 552 | return false; |
553 | 553 | } |
554 | - $version = (int)substr($info->getName(), $versionsBegin + 2); |
|
554 | + $version = (int) substr($info->getName(), $versionsBegin + 2); |
|
555 | 555 | return $version < $threshold; |
556 | 556 | }); |
557 | 557 | |
@@ -573,19 +573,19 @@ discard block |
||
573 | 573 | $diff = time() - $timestamp; |
574 | 574 | |
575 | 575 | if ($diff < 60) { // first minute |
576 | - return $diff . " seconds ago"; |
|
576 | + return $diff." seconds ago"; |
|
577 | 577 | } elseif ($diff < 3600) { //first hour |
578 | - return round($diff / 60) . " minutes ago"; |
|
578 | + return round($diff / 60)." minutes ago"; |
|
579 | 579 | } elseif ($diff < 86400) { // first day |
580 | - return round($diff / 3600) . " hours ago"; |
|
580 | + return round($diff / 3600)." hours ago"; |
|
581 | 581 | } elseif ($diff < 604800) { //first week |
582 | - return round($diff / 86400) . " days ago"; |
|
582 | + return round($diff / 86400)." days ago"; |
|
583 | 583 | } elseif ($diff < 2419200) { //first month |
584 | - return round($diff / 604800) . " weeks ago"; |
|
584 | + return round($diff / 604800)." weeks ago"; |
|
585 | 585 | } elseif ($diff < 29030400) { // first year |
586 | - return round($diff / 2419200) . " months ago"; |
|
586 | + return round($diff / 2419200)." months ago"; |
|
587 | 587 | } else { |
588 | - return round($diff / 29030400) . " years ago"; |
|
588 | + return round($diff / 29030400)." years ago"; |
|
589 | 589 | } |
590 | 590 | } |
591 | 591 | |
@@ -595,7 +595,7 @@ discard block |
||
595 | 595 | * @return array with contains two arrays 'all' which contains all versions sorted by age and 'by_file' which contains all versions sorted by filename |
596 | 596 | */ |
597 | 597 | private static function getAllVersions($uid) { |
598 | - $view = new View('/' . $uid . '/'); |
|
598 | + $view = new View('/'.$uid.'/'); |
|
599 | 599 | $dirs = [self::VERSIONS_ROOT]; |
600 | 600 | $versions = []; |
601 | 601 | |
@@ -605,7 +605,7 @@ discard block |
||
605 | 605 | |
606 | 606 | foreach ($files as $file) { |
607 | 607 | $fileData = $file->getData(); |
608 | - $filePath = $dir . '/' . $fileData['name']; |
|
608 | + $filePath = $dir.'/'.$fileData['name']; |
|
609 | 609 | if ($file['type'] === 'dir') { |
610 | 610 | $dirs[] = $filePath; |
611 | 611 | } else { |
@@ -613,7 +613,7 @@ discard block |
||
613 | 613 | $relPathStart = strlen(self::VERSIONS_ROOT); |
614 | 614 | $version = substr($filePath, $versionsBegin + 2); |
615 | 615 | $relpath = substr($filePath, $relPathStart, $versionsBegin - $relPathStart); |
616 | - $key = $version . '#' . $relpath; |
|
616 | + $key = $version.'#'.$relpath; |
|
617 | 617 | $versions[$key] = ['path' => $relpath, 'timestamp' => $version]; |
618 | 618 | } |
619 | 619 | } |
@@ -657,13 +657,13 @@ discard block |
||
657 | 657 | [$toDelete, $size] = self::getAutoExpireList($time, $versions); |
658 | 658 | } else { |
659 | 659 | $size = 0; |
660 | - $toDelete = []; // versions we want to delete |
|
660 | + $toDelete = []; // versions we want to delete |
|
661 | 661 | } |
662 | 662 | |
663 | 663 | foreach ($versions as $key => $version) { |
664 | 664 | if ($expiration->isExpired($version['version'], $quotaExceeded) && !isset($toDelete[$key])) { |
665 | 665 | $size += $version['size']; |
666 | - $toDelete[$key] = $version['path'] . '.v' . $version['version']; |
|
666 | + $toDelete[$key] = $version['path'].'.v'.$version['version']; |
|
667 | 667 | } |
668 | 668 | } |
669 | 669 | |
@@ -678,7 +678,7 @@ discard block |
||
678 | 678 | */ |
679 | 679 | protected static function getAutoExpireList($time, $versions) { |
680 | 680 | $size = 0; |
681 | - $toDelete = []; // versions we want to delete |
|
681 | + $toDelete = []; // versions we want to delete |
|
682 | 682 | |
683 | 683 | $interval = 1; |
684 | 684 | $step = Storage::$max_versions_per_interval[$interval]['step']; |
@@ -705,9 +705,9 @@ discard block |
||
705 | 705 | if ($nextInterval === -1 || $prevTimestamp > $nextInterval) { |
706 | 706 | if ($version['version'] > $nextVersion) { |
707 | 707 | //distance between two version too small, mark to delete |
708 | - $toDelete[$key] = $version['path'] . '.v' . $version['version']; |
|
708 | + $toDelete[$key] = $version['path'].'.v'.$version['version']; |
|
709 | 709 | $size += $version['size']; |
710 | - \OC::$server->get(LoggerInterface::class)->info('Mark to expire '. $version['path'] .' next version should be ' . $nextVersion . " or smaller. (prevTimestamp: " . $prevTimestamp . "; step: " . $step, ['app' => 'files_versions']); |
|
710 | + \OC::$server->get(LoggerInterface::class)->info('Mark to expire '.$version['path'].' next version should be '.$nextVersion." or smaller. (prevTimestamp: ".$prevTimestamp."; step: ".$step, ['app' => 'files_versions']); |
|
711 | 711 | } else { |
712 | 712 | $nextVersion = $version['version'] - $step; |
713 | 713 | $prevTimestamp = $version['version']; |
@@ -767,8 +767,8 @@ discard block |
||
767 | 767 | // get available disk space for user |
768 | 768 | $user = \OC::$server->get(IUserManager::class)->get($uid); |
769 | 769 | if (is_null($user)) { |
770 | - $logger->error('Backends provided no user object for ' . $uid, ['app' => 'files_versions']); |
|
771 | - throw new \OC\User\NoUserException('Backends provided no user object for ' . $uid); |
|
770 | + $logger->error('Backends provided no user object for '.$uid, ['app' => 'files_versions']); |
|
771 | + throw new \OC\User\NoUserException('Backends provided no user object for '.$uid); |
|
772 | 772 | } |
773 | 773 | |
774 | 774 | \OC_Util::setupFS($uid); |
@@ -851,13 +851,13 @@ discard block |
||
851 | 851 | self::deleteVersion($versionsFileview, $path); |
852 | 852 | \OC_Hook::emit('\OCP\Versions', 'delete', ['path' => $path, 'trigger' => self::DELETE_TRIGGER_QUOTA_EXCEEDED]); |
853 | 853 | unset($allVersions[$key]); // update array with the versions we keep |
854 | - $logger->info('Expire: ' . $path, ['app' => 'files_versions']); |
|
854 | + $logger->info('Expire: '.$path, ['app' => 'files_versions']); |
|
855 | 855 | } |
856 | 856 | |
857 | 857 | // Check if enough space is available after versions are rearranged. |
858 | 858 | // If not we delete the oldest versions until we meet the size limit for versions, |
859 | 859 | // but always keep the two latest versions |
860 | - $numOfVersions = count($allVersions) - 2 ; |
|
860 | + $numOfVersions = count($allVersions) - 2; |
|
861 | 861 | $i = 0; |
862 | 862 | // sort oldest first and make sure that we start at the first element |
863 | 863 | ksort($allVersions); |
@@ -865,9 +865,9 @@ discard block |
||
865 | 865 | while ($availableSpace < 0 && $i < $numOfVersions) { |
866 | 866 | $version = current($allVersions); |
867 | 867 | \OC_Hook::emit('\OCP\Versions', 'preDelete', ['path' => $version['path'].'.v'.$version['version'], 'trigger' => self::DELETE_TRIGGER_QUOTA_EXCEEDED]); |
868 | - self::deleteVersion($versionsFileview, $version['path'] . '.v' . $version['version']); |
|
868 | + self::deleteVersion($versionsFileview, $version['path'].'.v'.$version['version']); |
|
869 | 869 | \OC_Hook::emit('\OCP\Versions', 'delete', ['path' => $version['path'].'.v'.$version['version'], 'trigger' => self::DELETE_TRIGGER_QUOTA_EXCEEDED]); |
870 | - $logger->info('running out of space! Delete oldest version: ' . $version['path'].'.v'.$version['version'], ['app' => 'files_versions']); |
|
870 | + $logger->info('running out of space! Delete oldest version: '.$version['path'].'.v'.$version['version'], ['app' => 'files_versions']); |
|
871 | 871 | $versionsSize -= $version['size']; |
872 | 872 | $availableSpace += $version['size']; |
873 | 873 | next($allVersions); |
@@ -893,7 +893,7 @@ discard block |
||
893 | 893 | $dirParts = explode('/', $dirname); |
894 | 894 | $dir = "/files_versions"; |
895 | 895 | foreach ($dirParts as $part) { |
896 | - $dir = $dir . '/' . $part; |
|
896 | + $dir = $dir.'/'.$part; |
|
897 | 897 | if (!$view->file_exists($dir)) { |
898 | 898 | $view->mkdir($dir); |
899 | 899 | } |