Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Move remoteId of remote reshares to string
Signed-off-by: Julius Härtl <[email protected]>
  • Loading branch information
juliusknorr committed Dec 8, 2020
commit f68f67f354a163574c56b55245d3473ebba79cea
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
'OCA\\FederatedFileSharing\\FederatedShareProvider' => $baseDir . '/../lib/FederatedShareProvider.php',
'OCA\\FederatedFileSharing\\Listeners\\LoadAdditionalScriptsListener' => $baseDir . '/../lib/Listeners/LoadAdditionalScriptsListener.php',
'OCA\\FederatedFileSharing\\Migration\\Version1010Date20200630191755' => $baseDir . '/../lib/Migration/Version1010Date20200630191755.php',
'OCA\\FederatedFileSharing\\Migration\\Version1011Date20201120125158' => $baseDir . '/../lib/Migration/Version1011Date20201120125158.php',
'OCA\\FederatedFileSharing\\Notifications' => $baseDir . '/../lib/Notifications.php',
'OCA\\FederatedFileSharing\\Notifier' => $baseDir . '/../lib/Notifier.php',
'OCA\\FederatedFileSharing\\OCM\\CloudFederationProviderFiles' => $baseDir . '/../lib/OCM/CloudFederationProviderFiles.php',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class ComposerStaticInitFederatedFileSharing
'OCA\\FederatedFileSharing\\FederatedShareProvider' => __DIR__ . '/..' . '/../lib/FederatedShareProvider.php',
'OCA\\FederatedFileSharing\\Listeners\\LoadAdditionalScriptsListener' => __DIR__ . '/..' . '/../lib/Listeners/LoadAdditionalScriptsListener.php',
'OCA\\FederatedFileSharing\\Migration\\Version1010Date20200630191755' => __DIR__ . '/..' . '/../lib/Migration/Version1010Date20200630191755.php',
'OCA\\FederatedFileSharing\\Migration\\Version1011Date20201120125158' => __DIR__ . '/..' . '/../lib/Migration/Version1011Date20201120125158.php',
'OCA\\FederatedFileSharing\\Notifications' => __DIR__ . '/..' . '/../lib/Notifications.php',
'OCA\\FederatedFileSharing\\Notifier' => __DIR__ . '/..' . '/../lib/Notifier.php',
'OCA\\FederatedFileSharing\\OCM\\CloudFederationProviderFiles' => __DIR__ . '/..' . '/../lib/OCM/CloudFederationProviderFiles.php',
Expand Down
6 changes: 3 additions & 3 deletions apps/federatedfilesharing/lib/FederatedShareProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,7 @@ protected function updateSuccessfulReShare($shareId, $token) {
* @param $shareId
* @param $remoteId
*/
public function storeRemoteId($shareId, $remoteId) {
public function storeRemoteId(int $shareId, string $remoteId): void {
$query = $this->dbConnection->getQueryBuilder();
$query->insert('federated_reshares')
->values(
Expand All @@ -478,10 +478,10 @@ public function storeRemoteId($shareId, $remoteId) {
* get share ID on remote server for federated re-shares
*
* @param IShare $share
* @return int
* @return string
* @throws ShareNotFound
*/
public function getRemoteId(IShare $share) {
public function getRemoteId(IShare $share): string {
$query = $this->dbConnection->getQueryBuilder();
$query->select('remote_id')->from('federated_reshares')
->where($query->expr()->eq('share_id', $query->createNamedParameter((int)$share->getId())));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ public function changeSchema(IOutput $output, Closure $schemaClosure, array $opt
'notnull' => true,
'length' => 4,
]);
$table->addColumn('remote_id', Types::INTEGER, [
$table->addColumn('remote_id', Types::STRING, [
'notnull' => true,
'length' => 4,
'length' => 255,
]);
$table->setPrimaryKey(['share_id'], 'federated_res_pk');
// $table->addUniqueIndex(['share_id'], 'share_id_index');
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php
/*
* @copyright Copyright (c) 2020 Julius Härtl <[email protected]>
*
* @author Julius Härtl <[email protected]>
*
* @license GNU AGPL version 3 or any later version
*
* 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/>.
*
*/

declare(strict_types=1);

namespace OCA\FederatedFileSharing\Migration;

use Closure;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Types\Types;
use OCP\DB\ISchemaWrapper;
use OCP\Migration\IOutput;
use OCP\Migration\SimpleMigrationStep;

class Version1011Date20201120125158 extends SimpleMigrationStep {
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();

if ($schema->hasTable('federated_reshares')) {
$table = $schema->getTable('federated_reshares');
$remoteIdColumn = $table->getColumn('remote_id');
if ($remoteIdColumn && $remoteIdColumn->getType()->getName() !== Types::STRING) {
$remoteIdColumn->setType(Type::getType(Types::STRING));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if our "friend" likes this too much. But the test seems to say yes.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some "friends" actually did a similar migration, this came up as a part of #23044

$remoteIdColumn->setOptions(['length' => 255]);
}
}

return $schema;
}
}
22 changes: 11 additions & 11 deletions apps/federatedfilesharing/lib/Notifications.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public function __construct(
* @param string $token
* @param string $shareWith
* @param string $name
* @param int $remote_id
* @param string $remoteId
* @param string $owner
* @param string $ownerFederatedId
* @param string $sharedBy
Expand All @@ -93,7 +93,7 @@ public function __construct(
* @throws \OC\HintException
* @throws \OC\ServerNotAvailableException
*/
public function sendRemoteShare($token, $shareWith, $name, $remote_id, $owner, $ownerFederatedId, $sharedBy, $sharedByFederatedId, $shareType) {
public function sendRemoteShare($token, $shareWith, $name, $remoteId, $owner, $ownerFederatedId, $sharedBy, $sharedByFederatedId, $shareType) {
list($user, $remote) = $this->addressHandler->splitUserRemote($shareWith);

if ($user && $remote) {
Expand All @@ -103,7 +103,7 @@ public function sendRemoteShare($token, $shareWith, $name, $remote_id, $owner, $
'shareWith' => $user,
'token' => $token,
'name' => $name,
'remoteId' => $remote_id,
'remoteId' => $remoteId,
'owner' => $owner,
'ownerFederatedId' => $ownerFederatedId,
'sharedBy' => $sharedBy,
Expand Down Expand Up @@ -132,13 +132,13 @@ public function sendRemoteShare($token, $shareWith, $name, $remote_id, $owner, $
* ask owner to re-share the file with the given user
*
* @param string $token
* @param int $id remote Id
* @param string $id remote Id
* @param int $shareId internal share Id
* @param string $remote remote address of the owner
* @param string $shareWith
* @param int $permission
* @param string $filename
* @return bool
* @return array
* @throws \OC\HintException
* @throws \OC\ServerNotAvailableException
*/
Expand All @@ -151,7 +151,7 @@ public function requestReShare($token, $id, $shareId, $remote, $shareWith, $perm
];

$ocmFields = $fields;
$ocmFields['remoteId'] = $id;
$ocmFields['remoteId'] = (string)$id;
$ocmFields['localId'] = $shareId;
$ocmFields['name'] = $filename;

Expand All @@ -171,7 +171,7 @@ public function requestReShare($token, $id, $shareId, $remote, $shareWith, $perm
if ($httpRequestSuccessful && $ocsCallSuccessful && $validToken && $validRemoteId) {
return [
$status['ocs']['data']['token'],
(int)$status['ocs']['data']['remoteId']
$status['ocs']['data']['remoteId']
];
}

Expand Down Expand Up @@ -206,7 +206,7 @@ public function sendRevokeShare($remote, $id, $token) {
* send notification to remote server if the permissions was changed
*
* @param string $remote
* @param int $remoteId
* @param string $remoteId
* @param string $token
* @param int $permissions
* @return bool
Expand All @@ -219,7 +219,7 @@ public function sendPermissionChange($remote, $remoteId, $token, $permissions) {
* forward accept reShare to remote server
*
* @param string $remote
* @param int $remoteId
* @param string $remoteId
* @param string $token
*/
public function sendAcceptShare($remote, $remoteId, $token) {
Expand All @@ -230,7 +230,7 @@ public function sendAcceptShare($remote, $remoteId, $token) {
* forward decline reShare to remote server
*
* @param string $remote
* @param int $remoteId
* @param string $remoteId
* @param string $token
*/
public function sendDeclineShare($remote, $remoteId, $token) {
Expand All @@ -242,7 +242,7 @@ public function sendDeclineShare($remote, $remoteId, $token) {
*
* @param string $remote
* @param string $token
* @param int $remoteId Share id on the remote host
* @param string $remoteId Share id on the remote host
* @param string $action possible actions: accept, decline, unshare, revoke, permissions
* @param array $data
* @param int $try
Expand Down
6 changes: 3 additions & 3 deletions apps/files_sharing/lib/External/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ public function __construct(IDBConnection $connection,
* @param int $shareType
* @param boolean $accepted
* @param string $user
* @param int $remoteId
* @param string $remoteId
* @param int $parent
* @return Mount|null
* @throws \Doctrine\DBAL\DBALException
Expand Down Expand Up @@ -347,7 +347,7 @@ public function processNotification($remoteShare) {
*
* @param string $remote
* @param string $token
* @param int $remoteId Share id on the remote host
* @param string $remoteId Share id on the remote host
* @param string $feedback
* @return boolean
*/
Expand Down Expand Up @@ -388,7 +388,7 @@ private function sendFeedbackToRemote($remote, $token, $remoteId, $feedback) {
*
* @param string $remoteDomain
* @param string $token
* @param $remoteId id of the share
* @param string $remoteId id of the share
* @param string $feedback
* @return bool
*/
Expand Down