diff --git a/appinfo/info.xml b/appinfo/info.xml index 9991f37bb..c431d43be 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -46,6 +46,9 @@ Have a good time and manage whatever you want. + + OCA\Tables\Migration\FixContextsDefaults + OCA\Tables\Migration\NewDbStructureRepairStep OCA\Tables\Migration\DbRowSleeveSequence diff --git a/lib/Controller/Api1Controller.php b/lib/Controller/Api1Controller.php index 7a2f33666..a5fabb109 100644 --- a/lib/Controller/Api1Controller.php +++ b/lib/Controller/Api1Controller.php @@ -518,7 +518,8 @@ public function indexTableShares(int $tableId): DataResponse { * @param bool $permissionUpdate Permission if receiver can update data * @param bool $permissionDelete Permission if receiver can delete data * @param bool $permissionManage Permission if receiver can manage node - * @param int $displayMode context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all + * @param int $displayMode context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all (default). Cf. Application::NAV_ENTRY_MODE_*. + * @psalm-param int<0, 2> $displayMode * @return DataResponse|DataResponse * * 200: Share returned @@ -536,10 +537,22 @@ public function createShare( bool $permissionUpdate = false, bool $permissionDelete = false, bool $permissionManage = false, - int $displayMode = 0, + int $displayMode = 2, ): DataResponse { try { - return new DataResponse($this->shareService->create($nodeId, $nodeType, $receiver, $receiverType, $permissionRead, $permissionCreate, $permissionUpdate, $permissionDelete, $permissionManage, $displayMode)->jsonSerialize()); + return new DataResponse( + $this->shareService->create( + $nodeId, + $nodeType, + $receiver, + $receiverType, + $permissionRead, + $permissionCreate, + $permissionUpdate, + $permissionDelete, + $permissionManage, + $displayMode + )->jsonSerialize()); } catch (PermissionError $e) { $this->logger->warning('A permission error occurred: '.$e->getMessage()); $message = ['message' => $e->getMessage()]; @@ -1401,7 +1414,20 @@ public function importInView(int $viewId, string $path, bool $createMissingColum #[RequirePermission(permission: Application::PERMISSION_MANAGE, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')] public function createTableShare(int $tableId, string $receiver, string $receiverType, bool $permissionRead, bool $permissionCreate, bool $permissionUpdate, bool $permissionDelete, bool $permissionManage): DataResponse { try { - return new DataResponse($this->shareService->create($tableId, 'table', $receiver, $receiverType, $permissionRead, $permissionCreate, $permissionUpdate, $permissionDelete, $permissionManage, 0)->jsonSerialize()); + return new DataResponse( + $this->shareService->create( + $tableId, + 'table', + $receiver, + $receiverType, + $permissionRead, + $permissionCreate, + $permissionUpdate, + $permissionDelete, + $permissionManage, + Application::NAV_ENTRY_MODE_ALL + )->jsonSerialize() + ); } catch (PermissionError $e) { $this->logger->warning('A permission error occurred: '.$e->getMessage()); $message = ['message' => $e->getMessage()]; diff --git a/lib/Controller/ShareController.php b/lib/Controller/ShareController.php index 04532090e..bab53ac5d 100644 --- a/lib/Controller/ShareController.php +++ b/lib/Controller/ShareController.php @@ -73,7 +73,7 @@ public function create( bool $permissionUpdate = false, bool $permissionDelete = false, bool $permissionManage = false, - int $displayMode = 0, + int $displayMode = Application::NAV_ENTRY_MODE_ALL, ): DataResponse { return $this->handleError(function () use ($nodeId, $nodeType, $receiver, $receiverType, $permissionRead, $permissionCreate, $permissionUpdate, $permissionDelete, $permissionManage, $displayMode) { return $this->service->create($nodeId, $nodeType, $receiver, $receiverType, $permissionRead, $permissionCreate, $permissionUpdate, $permissionDelete, $permissionManage, $displayMode); diff --git a/lib/Migration/FixContextsDefaults.php b/lib/Migration/FixContextsDefaults.php new file mode 100644 index 000000000..7e652fcab --- /dev/null +++ b/lib/Migration/FixContextsDefaults.php @@ -0,0 +1,46 @@ +config->getAppValue(Application::APP_ID, 'installed_version', '0.0'); + if (\version_compare($appVersion, '0.8.0-beta.1', '>')) { + $output->info('Not applicable, skipping.'); + return; + } + + $qb = $this->dbc->getQueryBuilder(); + $qb->update('tables_contexts_navigation') + ->set('display_mode', $qb->createNamedParameter(Application::NAV_ENTRY_MODE_ALL, IQueryBuilder::PARAM_INT)) + ->where($qb->expr()->eq('display_mode', $qb->createNamedParameter(Application::NAV_ENTRY_MODE_HIDDEN, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->eq('user_id', $qb->createNamedParameter('', IQueryBuilder::PARAM_STR))) + ->executeStatement(); + } +} diff --git a/openapi.json b/openapi.json index 652d6d5cd..42f8df41a 100644 --- a/openapi.json +++ b/openapi.json @@ -2496,8 +2496,10 @@ "displayMode": { "type": "integer", "format": "int64", - "default": 0, - "description": "context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all" + "default": 2, + "description": "context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all (default). Cf. Application::NAV_ENTRY_MODE_*.", + "minimum": 0, + "maximum": 2 } } } diff --git a/src/types/openapi/openapi.ts b/src/types/openapi/openapi.ts index b64696958..f2794ca49 100644 --- a/src/types/openapi/openapi.ts +++ b/src/types/openapi/openapi.ts @@ -1903,8 +1903,8 @@ export interface operations { readonly permissionManage?: boolean; /** * Format: int64 - * @description context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all - * @default 0 + * @description context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all (default). Cf. Application::NAV_ENTRY_MODE_*. + * @default 2 */ readonly displayMode?: number; };