Skip to content

Commit cdeed5b

Browse files
committed
chore: get revision for a node
Signed-off-by: Borja Domínguez Vázquez <[email protected]> Signed-off-by: Borja Domínguez Vázquez <[email protected]> wip Signed-off-by: Borja Domínguez Vázquez <[email protected]> Signed-off-by: Borja Domínguez Vázquez <[email protected]> wip Signed-off-by: Borja Domínguez Vázquez <[email protected]> Signed-off-by: Borja Domínguez Vázquez <[email protected]> Update IVersionBackend.php Signed-off-by: Borja Domínguez Vázquez <[email protected]> wip
1 parent f9cdb94 commit cdeed5b

File tree

5 files changed

+25
-3
lines changed

5 files changed

+25
-3
lines changed

apps/files_versions/lib/Listener/FileEventsListener.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,10 @@ public function touch_hook(Node $node): void {
152152

153153
try {
154154
if ($node instanceof File && $this->versionManager instanceof INeedSyncVersionBackend) {
155+
$revision = $this->versionManager->getRevision($previousNode);
156+
155157
// We update the timestamp of the version entity associated with the previousNode.
156-
$this->versionManager->updateVersionEntity($node, $previousNode->getMTime(), ['timestamp' => $node->getMTime()]);
158+
$this->versionManager->updateVersionEntity($node, $revision, ['timestamp' => $node->getMTime()]);
157159
}
158160
} catch (DbalException $ex) {
159161
// Ignore UniqueConstraintViolationException, as we are probably in the middle of a rollback
@@ -252,9 +254,11 @@ public function post_write_hook(Node $node): void {
252254
// If no new version was stored in the FS, no new version should be added in the DB.
253255
// So we simply update the associated version.
254256
if ($node instanceof File && $this->versionManager instanceof INeedSyncVersionBackend) {
257+
$revision = $this->versionManager->getRevision($writeHookInfo['previousNode']);
258+
255259
$this->versionManager->updateVersionEntity(
256260
$node,
257-
$writeHookInfo['previousNode']->getMtime(),
261+
$revision,
258262
[
259263
'timestamp' => $node->getMTime(),
260264
'size' => $node->getSize(),

apps/files_versions/lib/Listener/VersionAuthorListener.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@ public function post_write_hook(Node $node): void {
4848
}
4949
// check if our version manager supports setting the metadata
5050
if ($this->versionManager instanceof IMetadataVersionBackend) {
51+
$revision = $this->versionManager->getRevision($node);
5152
$author = $user->getUID();
52-
$this->versionManager->setMetadataValue($node, $node->getMTime(), Plugin::AUTHOR, $author);
53+
$this->versionManager->setMetadataValue($node, $revision, Plugin::AUTHOR, $author);
5354
}
5455
}
5556
}

apps/files_versions/lib/Versions/IVersionBackend.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99
namespace OCA\Files_Versions\Versions;
1010

11+
use OC\Files\Node\Node;
1112
use OCP\Files\File;
1213
use OCP\Files\FileInfo;
1314
use OCP\Files\NotFoundException;
@@ -78,4 +79,11 @@ public function read(IVersion $version);
7879
* @since 15.0.0
7980
*/
8081
public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): File;
82+
83+
/**
84+
* Get the revision for a node
85+
*
86+
* @since 32.0.0
87+
*/
88+
public function getRevision(Node $node): int;
8189
}

apps/files_versions/lib/Versions/LegacyVersionsBackend.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,10 @@ public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): Fi
212212
return $file;
213213
}
214214

215+
public function getRevision(Node $node): int {
216+
return $node->getMTime();
217+
}
218+
215219
public function deleteVersion(IVersion $version): void {
216220
if (!$this->currentUserHasPermissions($version->getSourceFile(), Constants::PERMISSION_DELETE)) {
217221
throw new Forbidden('You cannot delete this version because you do not have delete permissions on the source file.');

apps/files_versions/lib/Versions/VersionManager.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,11 @@ public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): Fi
110110
return $backend->getVersionFile($user, $sourceFile, $revision);
111111
}
112112

113+
public function getRevision(Node $node): int {
114+
$backend = $this->getBackendForStorage($node->getStorage());
115+
return $backend->getRevision($node);
116+
}
117+
113118
public function useBackendForStorage(IStorage $storage): bool {
114119
return false;
115120
}

0 commit comments

Comments
 (0)