From f68f67f354a163574c56b55245d3473ebba79cea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Fri, 20 Nov 2020 13:29:36 +0100 Subject: Move remoteId of remote reshares to string MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- .../lib/FederatedShareProvider.php | 6 +-- .../Migration/Version1010Date20200630191755.php | 4 +- .../Migration/Version1011Date20201120125158.php | 51 ++++++++++++++++++++++ apps/federatedfilesharing/lib/Notifications.php | 22 +++++----- 4 files changed, 67 insertions(+), 16 deletions(-) create mode 100644 apps/federatedfilesharing/lib/Migration/Version1011Date20201120125158.php (limited to 'apps/federatedfilesharing/lib') diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php index 395d34cc7e5..ffd76784bc3 100644 --- a/apps/federatedfilesharing/lib/FederatedShareProvider.php +++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php @@ -462,7 +462,7 @@ class FederatedShareProvider implements IShareProvider { * @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( @@ -478,10 +478,10 @@ class FederatedShareProvider implements IShareProvider { * 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()))); diff --git a/apps/federatedfilesharing/lib/Migration/Version1010Date20200630191755.php b/apps/federatedfilesharing/lib/Migration/Version1010Date20200630191755.php index bf0d0f8eecd..b8d498f3228 100644 --- a/apps/federatedfilesharing/lib/Migration/Version1010Date20200630191755.php +++ b/apps/federatedfilesharing/lib/Migration/Version1010Date20200630191755.php @@ -48,9 +48,9 @@ class Version1010Date20200630191755 extends SimpleMigrationStep { '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'); diff --git a/apps/federatedfilesharing/lib/Migration/Version1011Date20201120125158.php b/apps/federatedfilesharing/lib/Migration/Version1011Date20201120125158.php new file mode 100644 index 00000000000..c3fc22db8e4 --- /dev/null +++ b/apps/federatedfilesharing/lib/Migration/Version1011Date20201120125158.php @@ -0,0 +1,51 @@ + + * + * @author Julius Härtl + * + * @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 . + * + */ + +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)); + $remoteIdColumn->setOptions(['length' => 255]); + } + } + + return $schema; + } +} diff --git a/apps/federatedfilesharing/lib/Notifications.php b/apps/federatedfilesharing/lib/Notifications.php index 3dfb5de7230..63acc648d51 100644 --- a/apps/federatedfilesharing/lib/Notifications.php +++ b/apps/federatedfilesharing/lib/Notifications.php @@ -83,7 +83,7 @@ class Notifications { * @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 @@ -93,7 +93,7 @@ class Notifications { * @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) { @@ -103,7 +103,7 @@ class Notifications { 'shareWith' => $user, 'token' => $token, 'name' => $name, - 'remoteId' => $remote_id, + 'remoteId' => $remoteId, 'owner' => $owner, 'ownerFederatedId' => $ownerFederatedId, 'sharedBy' => $sharedBy, @@ -132,13 +132,13 @@ class Notifications { * 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 */ @@ -151,7 +151,7 @@ class Notifications { ]; $ocmFields = $fields; - $ocmFields['remoteId'] = $id; + $ocmFields['remoteId'] = (string)$id; $ocmFields['localId'] = $shareId; $ocmFields['name'] = $filename; @@ -171,7 +171,7 @@ class Notifications { if ($httpRequestSuccessful && $ocsCallSuccessful && $validToken && $validRemoteId) { return [ $status['ocs']['data']['token'], - (int)$status['ocs']['data']['remoteId'] + $status['ocs']['data']['remoteId'] ]; } @@ -206,7 +206,7 @@ class Notifications { * 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 @@ -219,7 +219,7 @@ class Notifications { * forward accept reShare to remote server * * @param string $remote - * @param int $remoteId + * @param string $remoteId * @param string $token */ public function sendAcceptShare($remote, $remoteId, $token) { @@ -230,7 +230,7 @@ class Notifications { * forward decline reShare to remote server * * @param string $remote - * @param int $remoteId + * @param string $remoteId * @param string $token */ public function sendDeclineShare($remote, $remoteId, $token) { @@ -242,7 +242,7 @@ class Notifications { * * @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 -- cgit v1.2.3