Fix restoring shared versions

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
Roeland Jago Douma 2019-12-04 16:13:14 +01:00 committed by Robin Appelman
parent 3eb3c3f884
commit 78050ec531
No known key found for this signature in database
GPG Key ID: 42B69D8A64526EFB
2 changed files with 8 additions and 11 deletions

View File

@ -50,6 +50,7 @@ use OCA\Files_Versions\Command\Expire;
use OCA\Files_Versions\Events\CreateVersionEvent; use OCA\Files_Versions\Events\CreateVersionEvent;
use OCA\Files_Versions\Versions\IVersionManager; use OCA\Files_Versions\Versions\IVersionManager;
use OCP\Files\NotFoundException; use OCP\Files\NotFoundException;
use OCP\IUser;
use OCP\Lock\ILockingProvider; use OCP\Lock\ILockingProvider;
use OCP\User; use OCP\User;
@ -325,20 +326,16 @@ class Storage {
* @param int $revision revision timestamp * @param int $revision revision timestamp
* @return bool * @return bool
*/ */
public static function rollback($file, $revision) { public static function rollback(string $file, int $revision, IUser $user) {
// add expected leading slash // add expected leading slash
$file = '/' . ltrim($file, '/'); $filename = '/' . ltrim($file, '/');
list($uid, $filename) = self::getUidAndFilename($file);
if ($uid === null || trim($filename, '/') === '') {
return false;
}
// Fetch the userfolder to trigger view hooks // Fetch the userfolder to trigger view hooks
$userFolder = \OC::$server->getUserFolder($uid); $userFolder = \OC::$server->getUserFolder($user->getUID());
$users_view = new View('/'.$uid); $users_view = new View('/'.$user->getUID());
$files_view = new View('/'. User::getUser().'/files'); $files_view = new View('/'. $user->getUID().'/files');
$versionCreated = false; $versionCreated = false;
@ -374,7 +371,7 @@ class Storage {
// rollback // rollback
if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) { if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) {
$files_view->touch($file, $revision); $files_view->touch($file, $revision);
Storage::scheduleExpire($uid, $file); Storage::scheduleExpire($user->getUID(), $file);
$node = $userFolder->get($file); $node = $userFolder->get($file);

View File

@ -91,7 +91,7 @@ class LegacyVersionsBackend implements IVersionBackend {
} }
public function rollback(IVersion $version) { public function rollback(IVersion $version) {
return Storage::rollback($version->getVersionPath(), $version->getRevisionId()); return Storage::rollback($version->getVersionPath(), $version->getRevisionId(), $version->getUser());
} }
private function getVersionFolder(IUser $user): Folder { private function getVersionFolder(IUser $user): Folder {