-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #44049 from nextcloud/feat/show-name-of-user-in-ve…
…rsions feat: show the id of last author in versions metadata
- Loading branch information
Showing
20 changed files
with
274 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/** | ||
* @author Eduardo Morales [email protected]> | ||
* | ||
* @license GNU AGPL-3.0-or-later | ||
* | ||
* This code is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU Affero General Public License, version 3, | ||
* as published by the Free Software Foundation. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU Affero General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU Affero General Public License, version 3, | ||
* along with this program. If not, see <http://www.gnu.org/licenses/> | ||
* | ||
*/ | ||
namespace OCA\Files_Versions\Listener; | ||
|
||
use OC\Files\Node\Folder; | ||
use OCA\Files_Versions\Versions\IMetadataVersionBackend; | ||
use OCA\Files_Versions\Versions\IVersionManager; | ||
use OCP\EventDispatcher\Event; | ||
use OCP\EventDispatcher\IEventListener; | ||
use OCP\Files\Events\Node\NodeWrittenEvent; | ||
use OCP\Files\Node; | ||
use OCP\IUserSession; | ||
|
||
/** @template-implements IEventListener<NodeWrittenEvent> */ | ||
class MetadataFileEvents implements IEventListener { | ||
public function __construct( | ||
private IVersionManager $versionManager, | ||
private IUserSession $userSession, | ||
) { | ||
} | ||
|
||
/** | ||
* @abstract handles events from a nodes version being changed | ||
* @param Event $event the event that triggered this listener to activate | ||
*/ | ||
public function handle(Event $event): void { | ||
if ($event instanceof NodeWrittenEvent) { | ||
$this->post_write_hook($event->getNode()); | ||
} | ||
} | ||
|
||
/** | ||
* @abstract handles the NodeWrittenEvent, and sets the metadata for the associated node | ||
* @param Node $node the node that is currently being written | ||
*/ | ||
public function post_write_hook(Node $node): void { | ||
$user = $this->userSession->getUser(); | ||
// Do not handle folders or users that we cannot get metadata from | ||
if ($node instanceof Folder || is_null($user)) { | ||
return; | ||
} | ||
// check if our version manager supports setting the metadata | ||
if ($this->versionManager instanceof IMetadataVersionBackend) { | ||
$author = $user->getUID(); | ||
$this->versionManager->setMetadataValue($node, 'author', $author); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/** | ||
* @copyright Copyright (c) 2024 Eduardo Morales <[email protected]> | ||
* | ||
* @license GNU AGPL-3.0-or-later | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU Affero General Public License as | ||
* published by the Free Software Foundation, either version 3 of the | ||
* License, or (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU Affero General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU Affero General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
* | ||
*/ | ||
namespace OCA\Files_Versions\Versions; | ||
|
||
/** | ||
* This interface allows for just direct accessing of the metadata column JSON | ||
* @since 29.0.0 | ||
*/ | ||
interface IMetadataVersion { | ||
/** | ||
* retrieves the metadata value from our $key param | ||
* | ||
* @param string $key the key for the json value of the metadata column | ||
* @since 29.0.0 | ||
*/ | ||
public function getMetadataValue(string $key): ?string; | ||
} |
52 changes: 52 additions & 0 deletions
52
apps/files_versions/lib/Versions/IMetadataVersionBackend.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/** | ||
* @copyright Copyright (c) 2024 Eduardo Morales <[email protected]> | ||
* | ||
* @license GNU AGPL-3.0-or-later | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU Affero General Public License as | ||
* published by the Free Software Foundation, either version 3 of the | ||
* License, or (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU Affero General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU Affero General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
* | ||
*/ | ||
namespace OCA\Files_Versions\Versions; | ||
|
||
use OCP\Files\Node; | ||
|
||
/** | ||
* This interface edits the metadata column of a node. | ||
* Each column of the metadata has a key => value mapping. | ||
* @since 29.0.0 | ||
*/ | ||
interface IMetadataVersionBackend { | ||
/** | ||
* Sets a key value pair in the metadata column corresponding to the node's version. | ||
* | ||
* @param Node $node the node that triggered the Metadata event listener, aka, the file version | ||
* @param string $key the key for the json value of the metadata column | ||
* @param string $value the value that corresponds to the key in the metadata column | ||
* @since 29.0.0 | ||
*/ | ||
public function setMetadataValue(Node $node, string $key, string $value): void; | ||
|
||
/** | ||
* Retrieves a corresponding value from the metadata column using the key. | ||
* | ||
* @param Node $node the node that triggered the Metadata event listener, aka, the file version | ||
* @param string $key the key for the json value of the metadata column | ||
* @since 29.0.0 | ||
*/ | ||
public function getMetadataValue(Node $node, string $key): ?string; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.