mirror of
https://github.com/nextcloud/server.git
synced 2026-02-03 20:41:22 -05:00
fix(OpenAPI): Adjust array syntax to avoid ambiguities
Signed-off-by: provokateurin <kate@provokateurin.de>
This commit is contained in:
parent
1140e41db2
commit
77114fb327
109 changed files with 698 additions and 448 deletions
|
|
@ -31,11 +31,11 @@ class Capabilities implements ICapability {
|
|||
* enabled: bool,
|
||||
* apiVersion: string,
|
||||
* endPoint: string,
|
||||
* resourceTypes: array{
|
||||
* resourceTypes: list<array{
|
||||
* name: string,
|
||||
* shareTypes: string[],
|
||||
* shareTypes: list<string>,
|
||||
* protocols: array<string, string>
|
||||
* }[],
|
||||
* }>,
|
||||
* },
|
||||
* }
|
||||
* @throws OCMArgumentException
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ class RequestHandlerController extends Controller {
|
|||
* @param string|null $ownerDisplayName Display name of the user who shared the item
|
||||
* @param string|null $sharedBy Provider specific UID of the user who shared the resource
|
||||
* @param string|null $sharedByDisplayName Display name of the user who shared the resource
|
||||
* @param array{name: string[], options: array<string, mixed>} $protocol e,.g. ['name' => 'webdav', 'options' => ['username' => 'john', 'permissions' => 31]]
|
||||
* @param array{name: list<string>, options: array<string, mixed>} $protocol e,.g. ['name' => 'webdav', 'options' => ['username' => 'john', 'permissions' => 31]]
|
||||
* @param string $shareType 'group' or 'user' share
|
||||
* @param string $resourceType 'file', 'calendar',...
|
||||
*
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@ namespace OCA\CloudFederationAPI;
|
|||
* }
|
||||
*
|
||||
* @psalm-type CloudFederationAPIValidationError = CloudFederationAPIError&array{
|
||||
* validationErrors: array{
|
||||
* validationErrors: list<array{
|
||||
* name: string,
|
||||
* message: string|null,
|
||||
* }[],
|
||||
* }>,
|
||||
* }
|
||||
*/
|
||||
class ResponseDefinitions {
|
||||
|
|
|
|||
|
|
@ -74,8 +74,8 @@ class DashboardApiController extends OCSController {
|
|||
* @param array<string, string> $sinceIds Array indexed by widget Ids, contains date/id from which we want the new items
|
||||
* @param int $limit Limit number of result items per widget
|
||||
* @psalm-param int<1, 30> $limit
|
||||
* @param string[] $widgets Limit results to specific widgets
|
||||
* @return DataResponse<Http::STATUS_OK, array<string, DashboardWidgetItem[]>, array{}>
|
||||
* @param list<string> $widgets Limit results to specific widgets
|
||||
* @return DataResponse<Http::STATUS_OK, array<string, list<DashboardWidgetItem>>, array{}>
|
||||
*
|
||||
* 200: Widget items returned
|
||||
*/
|
||||
|
|
@ -102,7 +102,7 @@ class DashboardApiController extends OCSController {
|
|||
* @param array<string, string> $sinceIds Array indexed by widget Ids, contains date/id from which we want the new items
|
||||
* @param int $limit Limit number of result items per widget, not more than 30 are allowed
|
||||
* @psalm-param int<1, 30> $limit
|
||||
* @param string[] $widgets Limit results to specific widgets
|
||||
* @param list<string> $widgets Limit results to specific widgets
|
||||
* @return DataResponse<Http::STATUS_OK, array<string, DashboardWidgetItems>, array{}>
|
||||
*
|
||||
* 200: Widget items returned
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@ namespace OCA\Dashboard;
|
|||
* icon_url: string,
|
||||
* widget_url: ?string,
|
||||
* item_icons_round: bool,
|
||||
* item_api_versions: int[],
|
||||
* item_api_versions: list<int>,
|
||||
* reload_interval: int,
|
||||
* buttons?: array{
|
||||
* buttons?: list<array{
|
||||
* type: string,
|
||||
* text: string,
|
||||
* link: string,
|
||||
* }[],
|
||||
* }>,
|
||||
* }
|
||||
*
|
||||
* @psalm-type DashboardWidgetItem = array{
|
||||
|
|
@ -37,7 +37,7 @@ namespace OCA\Dashboard;
|
|||
* }
|
||||
*
|
||||
* @psalm-type DashboardWidgetItems = array{
|
||||
* items: DashboardWidgetItem[],
|
||||
* items: list<DashboardWidgetItem>,
|
||||
* emptyContentMessage: string,
|
||||
* halfEmptyContentMessage: string,
|
||||
* }
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ class UpcomingEventsController extends OCSController {
|
|||
* Get information about upcoming events
|
||||
*
|
||||
* @param string|null $location location/URL to filter by
|
||||
* @return DataResponse<Http::STATUS_OK, array{events: DAVUpcomingEvent[]}, array{}>|DataResponse<Http::STATUS_UNAUTHORIZED, null, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{events: list<DAVUpcomingEvent>}, array{}>|DataResponse<Http::STATUS_UNAUTHORIZED, null, array{}>
|
||||
*
|
||||
* 200: Upcoming events
|
||||
* 401: When not authenticated
|
||||
|
|
@ -47,10 +47,10 @@ class UpcomingEventsController extends OCSController {
|
|||
}
|
||||
|
||||
return new DataResponse([
|
||||
'events' => array_map(fn (UpcomingEvent $e) => $e->jsonSerialize(), $this->service->getEvents(
|
||||
'events' => array_values(array_map(fn (UpcomingEvent $e) => $e->jsonSerialize(), $this->service->getEvents(
|
||||
$this->userId,
|
||||
$location,
|
||||
)),
|
||||
))),
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ class RequestHandlerController extends OCSController {
|
|||
* @param int|null $remoteId ID of the remote
|
||||
* @param string|null $sharedByFederatedId Federated ID of the sender
|
||||
* @param string|null $ownerFederatedId Federated ID of the receiver
|
||||
* @return Http\DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return Http\DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Share created successfully
|
||||
|
|
@ -186,7 +186,7 @@ class RequestHandlerController extends OCSController {
|
|||
*
|
||||
* @param int $id ID of the remote share
|
||||
* @param string|null $token Shared secret between servers
|
||||
* @return Http\DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return Http\DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
* @throws ShareNotFound
|
||||
* @throws HintException
|
||||
|
|
@ -221,7 +221,7 @@ class RequestHandlerController extends OCSController {
|
|||
*
|
||||
* @param int $id ID of the remote share
|
||||
* @param string|null $token Shared secret between servers
|
||||
* @return Http\DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return Http\DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Share declined successfully
|
||||
|
|
@ -254,7 +254,7 @@ class RequestHandlerController extends OCSController {
|
|||
*
|
||||
* @param int $id ID of the share
|
||||
* @param string|null $token Shared secret between servers
|
||||
* @return Http\DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return Http\DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Share unshared successfully
|
||||
|
|
@ -290,7 +290,7 @@ class RequestHandlerController extends OCSController {
|
|||
*
|
||||
* @param int $id ID of the share
|
||||
* @param string|null $token Shared secret between servers
|
||||
* @return Http\DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return Http\DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSBadRequestException Revoking the share is not possible
|
||||
*
|
||||
* 200: Share revoked successfully
|
||||
|
|
@ -332,7 +332,7 @@ class RequestHandlerController extends OCSController {
|
|||
* @param int $id ID of the share
|
||||
* @param string|null $token Shared secret between servers
|
||||
* @param int|null $permissions New permissions
|
||||
* @return Http\DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return Http\DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSBadRequestException Updating permissions is not possible
|
||||
*
|
||||
* 200: Permissions updated successfully
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class OCSAuthAPIController extends OCSController {
|
|||
*
|
||||
* @param string $url URL of the server
|
||||
* @param string $token Token of the server
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSForbiddenException Requesting shared secret is not allowed
|
||||
*
|
||||
* 200: Shared secret requested successfully
|
||||
|
|
@ -87,7 +87,7 @@ class OCSAuthAPIController extends OCSController {
|
|||
*
|
||||
* @param string $url URL of the server
|
||||
* @param string $token Token of the server
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSForbiddenException Requesting shared secret is not allowed
|
||||
*
|
||||
* 200: Shared secret requested successfully
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class Capabilities implements ICapability {
|
|||
/**
|
||||
* Return this classes capabilities
|
||||
*
|
||||
* @return array{files: array{'$comment': ?string, bigfilechunking: bool, blacklisted_files: array<mixed>, forbidden_filenames: list<string>, forbidden_filename_basenames: list<string>, forbidden_filename_characters: list<string>, forbidden_filename_extensions: list<string>, chunked_upload: array{max_size: int, max_parallel_count: int}}}
|
||||
* @return array{files: array{'$comment': ?string, bigfilechunking: bool, blacklisted_files: list<mixed>, forbidden_filenames: list<string>, forbidden_filename_basenames: list<string>, forbidden_filename_characters: list<string>, forbidden_filename_extensions: list<string>, chunked_upload: array{max_size: int, max_parallel_count: int}}}
|
||||
*/
|
||||
public function getCapabilities(): array {
|
||||
return [
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class DirectEditingController extends OCSController {
|
|||
|
||||
/**
|
||||
* Get the direct editing capabilities
|
||||
* @return DataResponse<Http::STATUS_OK, array{editors: array<string, array{id: string, name: string, mimetypes: string[], optionalMimetypes: string[], secure: bool}>, creators: array<string, array{id: string, editor: string, name: string, extension: string, templates: bool, mimetypes: string[]}>}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{editors: array<string, array{id: string, name: string, mimetypes: list<string>, optionalMimetypes: list<string>, secure: bool}>, creators: array<string, array{id: string, editor: string, name: string, extension: string, templates: bool, mimetypes: list<string>}>}, array{}>
|
||||
*
|
||||
* 200: Direct editing capabilities returned
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class OpenLocalEditorController extends OCSController {
|
|||
*
|
||||
* @param string $path Path of the file
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{userId: ?string, pathHash: string, expirationTime: int, token: string}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{userId: ?string, pathHash: string, expirationTime: int, token: string}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, list<empty>, array{}>
|
||||
*
|
||||
* 200: Local editor returned
|
||||
*/
|
||||
|
|
@ -91,7 +91,7 @@ class OpenLocalEditorController extends OCSController {
|
|||
* @param string $path Path of the file
|
||||
* @param string $token Token of the local editor
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{userId: string, pathHash: string, expirationTime: int, token: string}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{userId: string, pathHash: string, expirationTime: int, token: string}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Local editor validated successfully
|
||||
* 404: Local editor not found
|
||||
|
|
|
|||
|
|
@ -16,13 +16,16 @@ use OCP\AppFramework\OCS\OCSForbiddenException;
|
|||
use OCP\AppFramework\OCSController;
|
||||
use OCP\Files\GenericFileException;
|
||||
use OCP\Files\Template\ITemplateManager;
|
||||
use OCP\Files\Template\Template;
|
||||
use OCP\Files\Template\TemplateFileCreator;
|
||||
use OCP\IRequest;
|
||||
|
||||
/**
|
||||
* @psalm-import-type FilesTemplateFile from ResponseDefinitions
|
||||
* @psalm-import-type FilesTemplateFileCreator from ResponseDefinitions
|
||||
* @psalm-import-type FilesTemplateFileCreatorWithTemplates from ResponseDefinitions
|
||||
* @psalm-import-type FilesTemplateField from ResponseDefinitions
|
||||
* @psalm-import-type FilesTemplate from ResponseDefinitions
|
||||
*/
|
||||
class TemplateController extends OCSController {
|
||||
public function __construct(
|
||||
|
|
@ -36,13 +39,17 @@ class TemplateController extends OCSController {
|
|||
/**
|
||||
* List the available templates
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array<FilesTemplateFileCreator>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<FilesTemplateFileCreatorWithTemplates>, array{}>
|
||||
*
|
||||
* 200: Available templates returned
|
||||
*/
|
||||
#[NoAdminRequired]
|
||||
public function list(): DataResponse {
|
||||
return new DataResponse($this->templateManager->listTemplates());
|
||||
/* Convert embedded Template instances to arrays to match return type */
|
||||
return new DataResponse(array_map(static function (array $templateFileCreator) {
|
||||
$templateFileCreator['templates'] = array_map(static fn (Template $template) => $template->jsonSerialize(), $templateFileCreator['templates']);
|
||||
return $templateFileCreator;
|
||||
}, $this->templateManager->listTemplates()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -51,7 +58,7 @@ class TemplateController extends OCSController {
|
|||
* @param string $filePath Path of the file
|
||||
* @param string $templatePath Name of the template
|
||||
* @param string $templateType Type of the template
|
||||
* @param FilesTemplateField[] $templateFields Fields of the template
|
||||
* @param list<FilesTemplateField> $templateFields Fields of the template
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, FilesTemplateFile, array{}>
|
||||
* @throws OCSForbiddenException Creating template is not allowed
|
||||
|
|
@ -82,7 +89,7 @@ class TemplateController extends OCSController {
|
|||
* @param string $templatePath Path of the template directory
|
||||
* @param bool $copySystemTemplates Whether to copy the system templates to the template directory
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{template_path: string, templates: FilesTemplateFileCreator[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{template_path: string, templates: list<FilesTemplateFileCreator>}, array{}>
|
||||
* @throws OCSForbiddenException Initializing the template directory is not allowed
|
||||
*
|
||||
* 200: Template directory initialized successfully
|
||||
|
|
@ -94,7 +101,7 @@ class TemplateController extends OCSController {
|
|||
$templatePath = $this->templateManager->initializeTemplateDirectory($templatePath, null, $copySystemTemplates);
|
||||
return new DataResponse([
|
||||
'template_path' => $templatePath,
|
||||
'templates' => array_map(fn (TemplateFileCreator $creator) => $creator->jsonSerialize(), $this->templateManager->listCreators()),
|
||||
'templates' => array_values(array_map(fn (TemplateFileCreator $creator) => $creator->jsonSerialize(), $this->templateManager->listCreators())),
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
throw new OCSForbiddenException($e->getMessage());
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class TransferOwnershipController extends OCSController {
|
|||
* @param string $recipient Username of the recipient
|
||||
* @param string $path Path of the file
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN, list<empty>, array{}>
|
||||
*
|
||||
* 200: Ownership transferred successfully
|
||||
* 400: Transferring ownership is not possible
|
||||
|
|
@ -101,7 +101,7 @@ class TransferOwnershipController extends OCSController {
|
|||
*
|
||||
* @param int $id ID of the ownership transfer
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Ownership transfer accepted successfully
|
||||
* 403: Accepting ownership transfer is not allowed
|
||||
|
|
@ -136,7 +136,7 @@ class TransferOwnershipController extends OCSController {
|
|||
*
|
||||
* @param int $id ID of the ownership transfer
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Ownership transfer rejected successfully
|
||||
* 403: Rejecting ownership transfer is not allowed
|
||||
|
|
|
|||
|
|
@ -192,37 +192,34 @@ class Helper {
|
|||
/**
|
||||
* Populate the result set with file tags
|
||||
*
|
||||
* @param array $fileList
|
||||
* @param string $fileIdentifier identifier attribute name for values in $fileList
|
||||
* @param ITagManager $tagManager
|
||||
* @return array file list populated with tags
|
||||
* @psalm-template T of array{tags?: list<string>, file_source: int, ...array<string, mixed>}
|
||||
* @param list<T> $fileList
|
||||
* @return list<T> file list populated with tags
|
||||
*/
|
||||
public static function populateTags(array $fileList, $fileIdentifier, ITagManager $tagManager) {
|
||||
$ids = [];
|
||||
foreach ($fileList as $fileData) {
|
||||
$ids[] = $fileData[$fileIdentifier];
|
||||
}
|
||||
public static function populateTags(array $fileList, ITagManager $tagManager) {
|
||||
$tagger = $tagManager->load('files');
|
||||
$tags = $tagger->getTagsForObjects($ids);
|
||||
$tags = $tagger->getTagsForObjects(array_map(static fn (array $fileData) => $fileData['file_source'], $fileList));
|
||||
|
||||
if (!is_array($tags)) {
|
||||
throw new \UnexpectedValueException('$tags must be an array');
|
||||
}
|
||||
|
||||
// Set empty tag array
|
||||
foreach ($fileList as $key => $fileData) {
|
||||
$fileList[$key]['tags'] = [];
|
||||
foreach ($fileList as &$fileData) {
|
||||
$fileData['tags'] = [];
|
||||
}
|
||||
unset($fileData);
|
||||
|
||||
if (!empty($tags)) {
|
||||
foreach ($tags as $fileId => $fileTags) {
|
||||
foreach ($fileList as $key => $fileData) {
|
||||
if ($fileId !== $fileData[$fileIdentifier]) {
|
||||
foreach ($fileList as &$fileData) {
|
||||
if ($fileId !== $fileData['file_source']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$fileList[$key]['tags'] = $fileTags;
|
||||
$fileData['tags'] = $fileTags;
|
||||
}
|
||||
unset($fileData);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,21 +22,45 @@ namespace OCA\Files;
|
|||
* hasPreview: bool,
|
||||
* }
|
||||
*
|
||||
* @psalm-type FilesTemplateField = array{
|
||||
* index: string,
|
||||
* type: string,
|
||||
* alias: ?string,
|
||||
* tag: ?string,
|
||||
* id: ?int,
|
||||
* content?: string,
|
||||
* checked?: bool,
|
||||
* }
|
||||
*
|
||||
* @psalm-type FilesTemplate = array{
|
||||
* templateType: string,
|
||||
* templateId: string,
|
||||
* basename: string,
|
||||
* etag: string,
|
||||
* fileid: int,
|
||||
* filename: string,
|
||||
* lastmod: int,
|
||||
* mime: string,
|
||||
* size: int|float,
|
||||
* type: string,
|
||||
* hasPreview: bool,
|
||||
* previewUrl: ?string,
|
||||
* fields: list<FilesTemplateField>,
|
||||
* }
|
||||
*
|
||||
* @psalm-type FilesTemplateFileCreator = array{
|
||||
* app: string,
|
||||
* label: string,
|
||||
* extension: string,
|
||||
* iconClass: ?string,
|
||||
* iconSvgInline: ?string,
|
||||
* mimetypes: string[],
|
||||
* mimetypes: list<string>,
|
||||
* ratio: ?float,
|
||||
* actionLabel: string,
|
||||
* }
|
||||
*
|
||||
* @psalm-type FilesTemplateField = array{
|
||||
* index: string,
|
||||
* content: string,
|
||||
* type: string,
|
||||
* @psalm-type FilesTemplateFileCreatorWithTemplates = FilesTemplateFileCreator&array{
|
||||
* templates: list<FilesTemplate>,
|
||||
* }
|
||||
*
|
||||
* @psalm-type FilesFolderTree = list<array{
|
||||
|
|
|
|||
|
|
@ -170,22 +170,114 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"Template": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"templateType",
|
||||
"templateId",
|
||||
"basename",
|
||||
"etag",
|
||||
"fileid",
|
||||
"filename",
|
||||
"lastmod",
|
||||
"mime",
|
||||
"size",
|
||||
"type",
|
||||
"hasPreview",
|
||||
"previewUrl",
|
||||
"fields"
|
||||
],
|
||||
"properties": {
|
||||
"templateType": {
|
||||
"type": "string"
|
||||
},
|
||||
"templateId": {
|
||||
"type": "string"
|
||||
},
|
||||
"basename": {
|
||||
"type": "string"
|
||||
},
|
||||
"etag": {
|
||||
"type": "string"
|
||||
},
|
||||
"fileid": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"filename": {
|
||||
"type": "string"
|
||||
},
|
||||
"lastmod": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"mime": {
|
||||
"type": "string"
|
||||
},
|
||||
"size": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"hasPreview": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"previewUrl": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"fields": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/TemplateField"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"TemplateField": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"index",
|
||||
"content",
|
||||
"type"
|
||||
"type",
|
||||
"alias",
|
||||
"tag",
|
||||
"id"
|
||||
],
|
||||
"properties": {
|
||||
"index": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
},
|
||||
"alias": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"tag": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"id": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
},
|
||||
"content": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
"checked": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -281,6 +373,27 @@
|
|||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"TemplateFileCreatorWithTemplates": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/TemplateFileCreator"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"required": [
|
||||
"templates"
|
||||
],
|
||||
"properties": {
|
||||
"templates": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Template"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -1075,7 +1188,7 @@
|
|||
"data": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/TemplateFileCreator"
|
||||
"$ref": "#/components/schemas/TemplateFileCreatorWithTemplates"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,9 +104,9 @@ class HelperTest extends \Test\TestCase {
|
|||
->willReturn($tagger);
|
||||
|
||||
$data = [
|
||||
['id' => 10],
|
||||
['id' => 22, 'foo' => 'bar'],
|
||||
['id' => 42, 'x' => 'y'],
|
||||
['file_source' => 10],
|
||||
['file_source' => 22, 'foo' => 'bar'],
|
||||
['file_source' => 42, 'x' => 'y'],
|
||||
];
|
||||
|
||||
$tags = [
|
||||
|
|
@ -118,12 +118,12 @@ class HelperTest extends \Test\TestCase {
|
|||
->with([10, 22, 42])
|
||||
->willReturn($tags);
|
||||
|
||||
$result = Helper::populateTags($data, 'id', $tagManager);
|
||||
$result = Helper::populateTags($data, $tagManager);
|
||||
|
||||
$this->assertSame([
|
||||
['id' => 10, 'tags' => ['tag3']],
|
||||
['id' => 22, 'foo' => 'bar', 'tags' => []],
|
||||
['id' => 42, 'x' => 'y', 'tags' => ['tag1', 'tag2']],
|
||||
['file_source' => 10, 'tags' => ['tag3']],
|
||||
['file_source' => 22, 'foo' => 'bar', 'tags' => []],
|
||||
['file_source' => 42, 'x' => 'y', 'tags' => ['tag1', 'tag2']],
|
||||
], $result);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ class ApiController extends OCSController {
|
|||
/**
|
||||
* Get the mount points visible for this user
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, Files_ExternalMount[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<Files_ExternalMount>, array{}>
|
||||
*
|
||||
* 200: User mounts returned
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -82,14 +82,14 @@ class StorageConfig implements \JsonSerializable {
|
|||
/**
|
||||
* List of users who have access to this storage
|
||||
*
|
||||
* @var string[]
|
||||
* @var list<string>
|
||||
*/
|
||||
private $applicableUsers = [];
|
||||
|
||||
/**
|
||||
* List of groups that have access to this storage
|
||||
*
|
||||
* @var string[]
|
||||
* @var list<string>
|
||||
*/
|
||||
private $applicableGroups = [];
|
||||
|
||||
|
|
@ -256,7 +256,7 @@ class StorageConfig implements \JsonSerializable {
|
|||
/**
|
||||
* Returns the users for which to mount this storage
|
||||
*
|
||||
* @return string[] applicable users
|
||||
* @return list<string> applicable users
|
||||
*/
|
||||
public function getApplicableUsers() {
|
||||
return $this->applicableUsers;
|
||||
|
|
@ -265,7 +265,7 @@ class StorageConfig implements \JsonSerializable {
|
|||
/**
|
||||
* Sets the users for which to mount this storage
|
||||
*
|
||||
* @param string[]|null $applicableUsers applicable users
|
||||
* @param list<string>|null $applicableUsers applicable users
|
||||
*/
|
||||
public function setApplicableUsers($applicableUsers) {
|
||||
if (is_null($applicableUsers)) {
|
||||
|
|
@ -277,7 +277,7 @@ class StorageConfig implements \JsonSerializable {
|
|||
/**
|
||||
* Returns the groups for which to mount this storage
|
||||
*
|
||||
* @return string[] applicable groups
|
||||
* @return list<string> applicable groups
|
||||
*/
|
||||
public function getApplicableGroups() {
|
||||
return $this->applicableGroups;
|
||||
|
|
@ -286,7 +286,7 @@ class StorageConfig implements \JsonSerializable {
|
|||
/**
|
||||
* Sets the groups for which to mount this storage
|
||||
*
|
||||
* @param string[]|null $applicableGroups applicable groups
|
||||
* @param list<string>|null $applicableGroups applicable groups
|
||||
*/
|
||||
public function setApplicableGroups($applicableGroups) {
|
||||
if (is_null($applicableGroups)) {
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ namespace OCA\Files_External;
|
|||
|
||||
/**
|
||||
* @psalm-type Files_ExternalStorageConfig = array{
|
||||
* applicableGroups?: string[],
|
||||
* applicableUsers?: string[],
|
||||
* applicableGroups?: list<string>,
|
||||
* applicableUsers?: list<string>,
|
||||
* authMechanism: string,
|
||||
* backend: string,
|
||||
* backendOptions: array<string, mixed>,
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ class ApiController extends OCSController {
|
|||
* Get a reminder
|
||||
*
|
||||
* @param int $fileId ID of the file
|
||||
* @return DataResponse<Http::STATUS_OK, array{dueDate: ?string}, array{}>|DataResponse<Http::STATUS_UNAUTHORIZED, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{dueDate: ?string}, array{}>|DataResponse<Http::STATUS_UNAUTHORIZED, list<empty>, array{}>
|
||||
*
|
||||
* 200: Reminder returned
|
||||
* 401: Account not found
|
||||
|
|
@ -71,7 +71,7 @@ class ApiController extends OCSController {
|
|||
* @param int $fileId ID of the file
|
||||
* @param string $dueDate ISO 8601 formatted date time string
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_CREATED|Http::STATUS_BAD_REQUEST|Http::STATUS_UNAUTHORIZED|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_CREATED|Http::STATUS_BAD_REQUEST|Http::STATUS_UNAUTHORIZED|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Reminder updated
|
||||
* 201: Reminder created successfully
|
||||
|
|
@ -109,7 +109,7 @@ class ApiController extends OCSController {
|
|||
*
|
||||
* @param int $fileId ID of the file
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_UNAUTHORIZED|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_UNAUTHORIZED|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Reminder deleted successfully
|
||||
* 401: Account not found
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ class DeletedShareAPIController extends OCSController {
|
|||
/**
|
||||
* Get a list of all deleted shares
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, Files_SharingDeletedShare[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<Files_SharingDeletedShare>, array{}>
|
||||
*
|
||||
* 200: Deleted shares returned
|
||||
*/
|
||||
|
|
@ -148,9 +148,9 @@ class DeletedShareAPIController extends OCSController {
|
|||
|
||||
$shares = array_merge($groupShares, $roomShares, $deckShares, $sciencemeshShares);
|
||||
|
||||
$shares = array_map(function (IShare $share) {
|
||||
$shares = array_values(array_map(function (IShare $share) {
|
||||
return $this->formatShare($share);
|
||||
}, $shares);
|
||||
}, $shares));
|
||||
|
||||
return new DataResponse($shares);
|
||||
}
|
||||
|
|
@ -159,7 +159,7 @@ class DeletedShareAPIController extends OCSController {
|
|||
* Undelete a deleted share
|
||||
*
|
||||
* @param string $id ID of the share
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
* @throws OCSNotFoundException Share not found
|
||||
*
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ class PublicPreviewController extends PublicShareController {
|
|||
* @param int $x Width of the preview
|
||||
* @param int $y Height of the preview
|
||||
* @param bool $a Whether to not crop the preview
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Preview returned
|
||||
* 400: Getting preview is not possible
|
||||
|
|
@ -134,7 +134,7 @@ class PublicPreviewController extends PublicShareController {
|
|||
* Get a direct link preview for a shared file
|
||||
*
|
||||
* @param string $token Token of the share
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Preview returned
|
||||
* 400: Getting preview is not possible
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class RemoteController extends OCSController {
|
|||
/**
|
||||
* Get list of pending remote shares
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, Files_SharingRemoteShare[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<Files_SharingRemoteShare>, array{}>
|
||||
*
|
||||
* 200: Pending remote shares returned
|
||||
*/
|
||||
|
|
@ -54,7 +54,7 @@ class RemoteController extends OCSController {
|
|||
* Accept a remote share
|
||||
*
|
||||
* @param int $id ID of the share
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSNotFoundException Share not found
|
||||
*
|
||||
* 200: Share accepted successfully
|
||||
|
|
@ -75,7 +75,7 @@ class RemoteController extends OCSController {
|
|||
* Decline a remote share
|
||||
*
|
||||
* @param int $id ID of the share
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSNotFoundException Share not found
|
||||
*
|
||||
* 200: Share declined successfully
|
||||
|
|
@ -116,14 +116,14 @@ class RemoteController extends OCSController {
|
|||
/**
|
||||
* Get a list of accepted remote shares
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, Files_SharingRemoteShare[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<Files_SharingRemoteShare>, array{}>
|
||||
*
|
||||
* 200: Accepted remote shares returned
|
||||
*/
|
||||
#[NoAdminRequired]
|
||||
public function getShares() {
|
||||
$shares = $this->externalManager->getAcceptedShares();
|
||||
$shares = array_map('self::extendShareInfo', $shares);
|
||||
$shares = array_map(self::extendShareInfo(...), $shares);
|
||||
|
||||
return new DataResponse($shares);
|
||||
}
|
||||
|
|
@ -153,7 +153,7 @@ class RemoteController extends OCSController {
|
|||
* Unshare a remote share
|
||||
*
|
||||
* @param int $id ID of the share
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSNotFoundException Share not found
|
||||
* @throws OCSForbiddenException Unsharing is not possible
|
||||
*
|
||||
|
|
|
|||
|
|
@ -351,10 +351,10 @@ class ShareAPIController extends OCSController {
|
|||
|
||||
|
||||
/**
|
||||
* @param array $shares
|
||||
* @param array|null $updatedDisplayName
|
||||
* @param list<Files_SharingShare> $shares
|
||||
* @param array<string, string>|null $updatedDisplayName
|
||||
*
|
||||
* @return array
|
||||
* @return list<Files_SharingShare>
|
||||
*/
|
||||
private function fixMissingDisplayName(array $shares, ?array $updatedDisplayName = null): array {
|
||||
$userIds = $updated = [];
|
||||
|
|
@ -450,7 +450,7 @@ class ShareAPIController extends OCSController {
|
|||
*
|
||||
* @param string $id ID of the share
|
||||
* @param bool $include_tags Include tags in the share
|
||||
* @return DataResponse<Http::STATUS_OK, Files_SharingShare, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<Files_SharingShare>, array{}>
|
||||
* @throws OCSNotFoundException Share not found
|
||||
*
|
||||
* 200: Share returned
|
||||
|
|
@ -468,7 +468,7 @@ class ShareAPIController extends OCSController {
|
|||
$share = $this->formatShare($share);
|
||||
|
||||
if ($include_tags) {
|
||||
$share = Helper::populateTags([$share], 'file_source', \OC::$server->getTagManager());
|
||||
$share = Helper::populateTags([$share], \OC::$server->getTagManager());
|
||||
} else {
|
||||
$share = [$share];
|
||||
}
|
||||
|
|
@ -486,7 +486,7 @@ class ShareAPIController extends OCSController {
|
|||
* Delete a share
|
||||
*
|
||||
* @param string $id ID of the share
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSNotFoundException Share not found
|
||||
* @throws OCSForbiddenException Missing permissions to delete the share
|
||||
*
|
||||
|
|
@ -828,7 +828,7 @@ class ShareAPIController extends OCSController {
|
|||
* @param null|Node $node
|
||||
* @param boolean $includeTags
|
||||
*
|
||||
* @return Files_SharingShare[]
|
||||
* @return list<Files_SharingShare>
|
||||
*/
|
||||
private function getSharedWithMe($node, bool $includeTags): array {
|
||||
$userShares = $this->shareManager->getSharedWith($this->userId, IShare::TYPE_USER, $node, -1, 0);
|
||||
|
|
@ -856,7 +856,7 @@ class ShareAPIController extends OCSController {
|
|||
}
|
||||
|
||||
if ($includeTags) {
|
||||
$formatted = Helper::populateTags($formatted, 'file_source', \OC::$server->getTagManager());
|
||||
$formatted = Helper::populateTags($formatted, \OC::$server->getTagManager());
|
||||
}
|
||||
|
||||
return $formatted;
|
||||
|
|
@ -865,7 +865,7 @@ class ShareAPIController extends OCSController {
|
|||
/**
|
||||
* @param Node $folder
|
||||
*
|
||||
* @return Files_SharingShare[]
|
||||
* @return list<Files_SharingShare>
|
||||
* @throws OCSBadRequestException
|
||||
* @throws NotFoundException
|
||||
*/
|
||||
|
|
@ -925,7 +925,7 @@ class ShareAPIController extends OCSController {
|
|||
* @param string $path Get shares for a specific path
|
||||
* @param string $include_tags Include tags in the share
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, Files_SharingShare[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<Files_SharingShare>, array{}>
|
||||
* @throws OCSNotFoundException The folder was not found or is inaccessible
|
||||
*
|
||||
* 200: Shares returned
|
||||
|
|
@ -974,7 +974,7 @@ class ShareAPIController extends OCSController {
|
|||
* @param bool $subFiles
|
||||
* @param bool $includeTags
|
||||
*
|
||||
* @return Files_SharingShare[]
|
||||
* @return list<Files_SharingShare>
|
||||
* @throws NotFoundException
|
||||
* @throws OCSBadRequestException
|
||||
*/
|
||||
|
|
@ -1045,7 +1045,7 @@ class ShareAPIController extends OCSController {
|
|||
|
||||
if ($includeTags) {
|
||||
$formatted =
|
||||
Helper::populateTags($formatted, 'file_source', \OC::$server->getTagManager());
|
||||
Helper::populateTags($formatted, \OC::$server->getTagManager());
|
||||
}
|
||||
|
||||
return $formatted;
|
||||
|
|
@ -1057,7 +1057,7 @@ class ShareAPIController extends OCSController {
|
|||
*
|
||||
* @param string $path Path all shares will be relative to
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, Files_SharingShare[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<Files_SharingShare>, array{}>
|
||||
* @throws InvalidPathException
|
||||
* @throws NotFoundException
|
||||
* @throws OCSNotFoundException The given path is invalid
|
||||
|
|
@ -1371,7 +1371,7 @@ class ShareAPIController extends OCSController {
|
|||
/**
|
||||
* Get all shares that are still pending
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, Files_SharingShare[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<Files_SharingShare>, array{}>
|
||||
*
|
||||
* 200: Pending shares returned
|
||||
*/
|
||||
|
|
@ -1394,7 +1394,7 @@ class ShareAPIController extends OCSController {
|
|||
}
|
||||
}
|
||||
|
||||
$result = array_filter(array_map(function (IShare $share) {
|
||||
$result = array_values(array_filter(array_map(function (IShare $share) {
|
||||
$userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
|
||||
$node = $userFolder->getFirstNodeById($share->getNodeId());
|
||||
if (!$node) {
|
||||
|
|
@ -1415,7 +1415,7 @@ class ShareAPIController extends OCSController {
|
|||
}
|
||||
}, $pendingShares), function ($entry) {
|
||||
return $entry !== null;
|
||||
});
|
||||
}));
|
||||
|
||||
return new DataResponse($result);
|
||||
}
|
||||
|
|
@ -1424,7 +1424,7 @@ class ShareAPIController extends OCSController {
|
|||
* Accept a share
|
||||
*
|
||||
* @param string $id ID of the share
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSNotFoundException Share not found
|
||||
* @throws OCSException
|
||||
* @throws OCSBadRequestException Share could not be accepted
|
||||
|
|
@ -2095,7 +2095,7 @@ class ShareAPIController extends OCSController {
|
|||
* @throws OCSForbiddenException You are not allowed to send mail notifications
|
||||
* @throws OCSBadRequestException Invalid request or wrong password
|
||||
* @throws OCSException Error while sending mail notification
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
*
|
||||
* 200: The email notification was sent successfully
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class ShareInfoController extends ApiController {
|
|||
* @param string|null $password Password of the share
|
||||
* @param string|null $dir Subdirectory to get info about
|
||||
* @param int $depth Maximum depth to get info about
|
||||
* @return JSONResponse<Http::STATUS_OK, Files_SharingShareInfo, array{}>|JSONResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return JSONResponse<Http::STATUS_OK, Files_SharingShareInfo, array{}>|JSONResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Share info returned
|
||||
* 403: Getting share info is not allowed
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ class ShareesAPIController extends OCSController {
|
|||
* @param string|null $itemType Limit to specific item types
|
||||
* @param int $page Page offset for searching
|
||||
* @param int $perPage Limit amount of search results per page
|
||||
* @param int|int[]|null $shareType Limit to specific share types
|
||||
* @param int|list<int>|null $shareType Limit to specific share types
|
||||
* @param bool $lookup If a global lookup should be performed too
|
||||
* @return DataResponse<Http::STATUS_OK, Files_SharingShareesSearchResult, array{Link?: string}>
|
||||
* @throws OCSBadRequestException Invalid search parameters
|
||||
|
|
@ -300,7 +300,7 @@ class ShareesAPIController extends OCSController {
|
|||
* Find recommended sharees
|
||||
*
|
||||
* @param string $itemType Limit to specific item types
|
||||
* @param int|int[]|null $shareType Limit to specific share types
|
||||
* @param int|list<int>|null $shareType Limit to specific share types
|
||||
* @return DataResponse<Http::STATUS_OK, Files_SharingShareesRecommendedResult, array{}>
|
||||
*
|
||||
* 200: Recommended sharees returned
|
||||
|
|
|
|||
10
apps/files_sharing/lib/External/Manager.php
vendored
10
apps/files_sharing/lib/External/Manager.php
vendored
|
|
@ -11,6 +11,7 @@ use Doctrine\DBAL\Driver\Exception;
|
|||
use OC\Files\Filesystem;
|
||||
use OCA\FederatedFileSharing\Events\FederatedShareAddedEvent;
|
||||
use OCA\Files_Sharing\Helper;
|
||||
use OCA\Files_Sharing\ResponseDefinitions;
|
||||
use OCP\DB\QueryBuilder\IQueryBuilder;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Federation\ICloudFederationFactory;
|
||||
|
|
@ -30,6 +31,9 @@ use OCP\Share;
|
|||
use OCP\Share\IShare;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* @psalm-import-type Files_SharingRemoteShare from ResponseDefinitions
|
||||
*/
|
||||
class Manager {
|
||||
public const STORAGE = '\OCA\Files_Sharing\External\Storage';
|
||||
|
||||
|
|
@ -686,7 +690,7 @@ class Manager {
|
|||
/**
|
||||
* return a list of shares which are not yet accepted by the user
|
||||
*
|
||||
* @return array list of open server-to-server shares
|
||||
* @return list<Files_SharingRemoteShare> list of open server-to-server shares
|
||||
*/
|
||||
public function getOpenShares() {
|
||||
return $this->getShares(false);
|
||||
|
|
@ -695,7 +699,7 @@ class Manager {
|
|||
/**
|
||||
* return a list of shares which are accepted by the user
|
||||
*
|
||||
* @return array list of accepted server-to-server shares
|
||||
* @return list<Files_SharingRemoteShare> list of accepted server-to-server shares
|
||||
*/
|
||||
public function getAcceptedShares() {
|
||||
return $this->getShares(true);
|
||||
|
|
@ -707,7 +711,7 @@ class Manager {
|
|||
* @param bool|null $accepted True for accepted only,
|
||||
* false for not accepted,
|
||||
* null for all shares of the user
|
||||
* @return array list of open server-to-server shares
|
||||
* @return list<Files_SharingRemoteShare> list of open server-to-server shares
|
||||
*/
|
||||
private function getShares($accepted) {
|
||||
$user = $this->userManager->get($this->uid);
|
||||
|
|
|
|||
|
|
@ -178,38 +178,38 @@ namespace OCA\Files_Sharing;
|
|||
*
|
||||
* @psalm-type Files_SharingShareesSearchResult = array{
|
||||
* exact: array{
|
||||
* circles: Files_SharingShareeCircle[],
|
||||
* emails: Files_SharingShareeEmail[],
|
||||
* groups: Files_SharingSharee[],
|
||||
* remote_groups: Files_SharingShareeRemoteGroup[],
|
||||
* remotes: Files_SharingShareeRemote[],
|
||||
* rooms: Files_SharingSharee[],
|
||||
* users: Files_SharingShareeUser[],
|
||||
* circles: list<Files_SharingShareeCircle>,
|
||||
* emails: list<Files_SharingShareeEmail>,
|
||||
* groups: list<Files_SharingSharee>,
|
||||
* remote_groups: list<Files_SharingShareeRemoteGroup>,
|
||||
* remotes: list<Files_SharingShareeRemote>,
|
||||
* rooms: list<Files_SharingSharee>,
|
||||
* users: list<Files_SharingShareeUser>,
|
||||
* },
|
||||
* circles: Files_SharingShareeCircle[],
|
||||
* emails: Files_SharingShareeEmail[],
|
||||
* groups: Files_SharingSharee[],
|
||||
* lookup: Files_SharingShareeLookup[],
|
||||
* remote_groups: Files_SharingShareeRemoteGroup[],
|
||||
* remotes: Files_SharingShareeRemote[],
|
||||
* rooms: Files_SharingSharee[],
|
||||
* users: Files_SharingShareeUser[],
|
||||
* circles: list<Files_SharingShareeCircle>,
|
||||
* emails: list<Files_SharingShareeEmail>,
|
||||
* groups: list<Files_SharingSharee>,
|
||||
* lookup: list<Files_SharingShareeLookup>,
|
||||
* remote_groups: list<Files_SharingShareeRemoteGroup>,
|
||||
* remotes: list<Files_SharingShareeRemote>,
|
||||
* rooms: list<Files_SharingSharee>,
|
||||
* users: list<Files_SharingShareeUser>,
|
||||
* lookupEnabled: bool,
|
||||
* }
|
||||
*
|
||||
* @psalm-type Files_SharingShareesRecommendedResult = array{
|
||||
* exact: array{
|
||||
* emails: Files_SharingShareeEmail[],
|
||||
* groups: Files_SharingSharee[],
|
||||
* remote_groups: Files_SharingShareeRemoteGroup[],
|
||||
* remotes: Files_SharingShareeRemote[],
|
||||
* users: Files_SharingShareeUser[],
|
||||
* emails: list<Files_SharingShareeEmail>,
|
||||
* groups: list<Files_SharingSharee>,
|
||||
* remote_groups: list<Files_SharingShareeRemoteGroup>,
|
||||
* remotes: list<Files_SharingShareeRemote>,
|
||||
* users: list<Files_SharingShareeUser>,
|
||||
* },
|
||||
* emails: Files_SharingShareeEmail[],
|
||||
* groups: Files_SharingSharee[],
|
||||
* remote_groups: Files_SharingShareeRemoteGroup[],
|
||||
* remotes: Files_SharingShareeRemote[],
|
||||
* users: Files_SharingShareeUser[],
|
||||
* emails: list<Files_SharingShareeEmail>,
|
||||
* groups: list<Files_SharingSharee>,
|
||||
* remote_groups: list<Files_SharingShareeRemoteGroup>,
|
||||
* remotes: list<Files_SharingShareeRemote>,
|
||||
* users: list<Files_SharingShareeUser>,
|
||||
* }
|
||||
*
|
||||
* @psalm-type Files_SharingShareInfo = array{
|
||||
|
|
@ -222,7 +222,7 @@ namespace OCA\Files_Sharing;
|
|||
* size: int|float,
|
||||
* type: string,
|
||||
* etag: string,
|
||||
* children?: array<string, mixed>[],
|
||||
* children?: list<array<string, mixed>>,
|
||||
* }
|
||||
*/
|
||||
class ResponseDefinitions {
|
||||
|
|
|
|||
|
|
@ -2170,7 +2170,10 @@
|
|||
"$ref": "#/components/schemas/OCSMeta"
|
||||
},
|
||||
"data": {
|
||||
"$ref": "#/components/schemas/Share"
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Share"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class PreviewController extends Controller {
|
|||
* @param int $y Height of the preview
|
||||
* @param bool $a Whether to not crop the preview
|
||||
*
|
||||
* @return Http\FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return Http\FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Preview returned
|
||||
* 400: Getting preview is not possible
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ class PreviewController extends Controller {
|
|||
* @param int $x Width of the preview
|
||||
* @param int $y Height of the preview
|
||||
* @param string $version Version of the file to get the preview for
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Preview returned
|
||||
* 400: Getting preview is not possible
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ abstract class AUserData extends OCSController {
|
|||
* Get the groups a user is a subadmin of
|
||||
*
|
||||
* @param string $userId
|
||||
* @return string[]
|
||||
* @return list<string>
|
||||
* @throws OCSException
|
||||
*/
|
||||
protected function getUserSubAdminGroupsData(string $userId): array {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ class AppConfigController extends OCSController {
|
|||
/**
|
||||
* Get a list of apps
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{data: string[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{data: list<string>}, array{}>
|
||||
*
|
||||
* 200: Apps returned
|
||||
*/
|
||||
|
|
@ -58,7 +58,7 @@ class AppConfigController extends OCSController {
|
|||
* Get the config keys of an app
|
||||
*
|
||||
* @param string $app ID of the app
|
||||
* @return DataResponse<Http::STATUS_OK, array{data: string[]}, array{}>|DataResponse<Http::STATUS_FORBIDDEN, array{data: array{message: string}}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{data: list<string>}, array{}>|DataResponse<Http::STATUS_FORBIDDEN, array{data: array{message: string}}, array{}>
|
||||
*
|
||||
* 200: Keys returned
|
||||
* 403: App is not allowed
|
||||
|
|
@ -105,7 +105,7 @@ class AppConfigController extends OCSController {
|
|||
* @param string $app ID of the app
|
||||
* @param string $key Key to update
|
||||
* @param string $value New value for the key
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>|DataResponse<Http::STATUS_FORBIDDEN, array{data: array{message: string}}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>|DataResponse<Http::STATUS_FORBIDDEN, array{data: array{message: string}}, array{}>
|
||||
*
|
||||
* 200: Value updated successfully
|
||||
* 403: App or key is not allowed
|
||||
|
|
@ -154,7 +154,7 @@ class AppConfigController extends OCSController {
|
|||
*
|
||||
* @param string $app ID of the app
|
||||
* @param string $key Key to delete
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>|DataResponse<Http::STATUS_FORBIDDEN, array{data: array{message: string}}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>|DataResponse<Http::STATUS_FORBIDDEN, array{data: array{message: string}}, array{}>
|
||||
*
|
||||
* 200: Key deleted successfully
|
||||
* 403: App or key is not allowed
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@ class AppsController extends OCSController {
|
|||
* Get a list of installed apps
|
||||
*
|
||||
* @param ?string $filter Filter for enabled or disabled apps
|
||||
* @return DataResponse<Http::STATUS_OK, array{apps: string[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{apps: list<string>}, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Installed apps returned
|
||||
*/
|
||||
public function getApps(?string $filter = null): DataResponse {
|
||||
$apps = (new OC_App())->listAllApps();
|
||||
/** @var list<string> $list */
|
||||
$list = [];
|
||||
foreach ($apps as $app) {
|
||||
$list[] = $app['id'];
|
||||
}
|
||||
/** @var string[] $list */
|
||||
if ($filter) {
|
||||
switch ($filter) {
|
||||
case 'enabled':
|
||||
|
|
@ -50,7 +50,7 @@ class AppsController extends OCSController {
|
|||
break;
|
||||
case 'disabled':
|
||||
$enabled = OC_App::getEnabledApps();
|
||||
return new DataResponse(['apps' => array_diff($list, $enabled)]);
|
||||
return new DataResponse(['apps' => array_values(array_diff($list, $enabled))]);
|
||||
break;
|
||||
default:
|
||||
// Invalid filter variable
|
||||
|
|
@ -83,7 +83,7 @@ class AppsController extends OCSController {
|
|||
* Enable an app
|
||||
*
|
||||
* @param string $app ID of the app
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: App enabled successfully
|
||||
|
|
@ -102,7 +102,7 @@ class AppsController extends OCSController {
|
|||
* Disable an app
|
||||
*
|
||||
* @param string $app ID of the app
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
*
|
||||
* 200: App disabled successfully
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -68,17 +68,17 @@ class GroupsController extends AUserData {
|
|||
* @param string $search Text to search for
|
||||
* @param ?int $limit Limit the amount of groups returned
|
||||
* @param int $offset Offset for searching for groups
|
||||
* @return DataResponse<Http::STATUS_OK, array{groups: string[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{groups: list<string>}, array{}>
|
||||
*
|
||||
* 200: Groups returned
|
||||
*/
|
||||
#[NoAdminRequired]
|
||||
public function getGroups(string $search = '', ?int $limit = null, int $offset = 0): DataResponse {
|
||||
$groups = $this->groupManager->search($search, $limit, $offset);
|
||||
$groups = array_map(function ($group) {
|
||||
$groups = array_values(array_map(function ($group) {
|
||||
/** @var IGroup $group */
|
||||
return $group->getGID();
|
||||
}, $groups);
|
||||
}, $groups));
|
||||
|
||||
return new DataResponse(['groups' => $groups]);
|
||||
}
|
||||
|
|
@ -89,7 +89,7 @@ class GroupsController extends AUserData {
|
|||
* @param string $search Text to search for
|
||||
* @param ?int $limit Limit the amount of groups returned
|
||||
* @param int $offset Offset for searching for groups
|
||||
* @return DataResponse<Http::STATUS_OK, array{groups: Provisioning_APIGroupDetails[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{groups: list<Provisioning_APIGroupDetails>}, array{}>
|
||||
*
|
||||
* 200: Groups details returned
|
||||
*/
|
||||
|
|
@ -97,7 +97,7 @@ class GroupsController extends AUserData {
|
|||
#[AuthorizedAdminSetting(settings: Sharing::class)]
|
||||
public function getGroupsDetails(string $search = '', ?int $limit = null, int $offset = 0): DataResponse {
|
||||
$groups = $this->groupManager->search($search, $limit, $offset);
|
||||
$groups = array_map(function ($group) {
|
||||
$groups = array_values(array_map(function ($group) {
|
||||
/** @var IGroup $group */
|
||||
return [
|
||||
'id' => $group->getGID(),
|
||||
|
|
@ -107,7 +107,7 @@ class GroupsController extends AUserData {
|
|||
'canAdd' => $group->canAddUser(),
|
||||
'canRemove' => $group->canRemoveUser(),
|
||||
];
|
||||
}, $groups);
|
||||
}, $groups));
|
||||
|
||||
return new DataResponse(['groups' => $groups]);
|
||||
}
|
||||
|
|
@ -116,7 +116,7 @@ class GroupsController extends AUserData {
|
|||
* Get a list of users in the specified group
|
||||
*
|
||||
* @param string $groupId ID of the group
|
||||
* @return DataResponse<Http::STATUS_OK, array{users: string[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{users: list<string>}, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* @deprecated 14 Use getGroupUsers
|
||||
|
|
@ -132,7 +132,7 @@ class GroupsController extends AUserData {
|
|||
* Get a list of users in the specified group
|
||||
*
|
||||
* @param string $groupId ID of the group
|
||||
* @return DataResponse<Http::STATUS_OK, array{users: string[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{users: list<string>}, array{}>
|
||||
* @throws OCSException
|
||||
* @throws OCSNotFoundException Group not found
|
||||
* @throws OCSForbiddenException Missing permissions to get users in the group
|
||||
|
|
@ -163,7 +163,7 @@ class GroupsController extends AUserData {
|
|||
/** @var IUser $user */
|
||||
return $user->getUID();
|
||||
}, $users);
|
||||
/** @var string[] $users */
|
||||
/** @var list<string> $users */
|
||||
$users = array_values($users);
|
||||
return new DataResponse(['users' => $users]);
|
||||
}
|
||||
|
|
@ -233,7 +233,7 @@ class GroupsController extends AUserData {
|
|||
*
|
||||
* @param string $groupid ID of the group
|
||||
* @param string $displayname Display name of the group
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Group created successfully
|
||||
|
|
@ -266,7 +266,7 @@ class GroupsController extends AUserData {
|
|||
* @param string $groupId ID of the group
|
||||
* @param string $key Key to update, only 'displayname'
|
||||
* @param string $value New value for the key
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Group updated successfully
|
||||
|
|
@ -295,7 +295,7 @@ class GroupsController extends AUserData {
|
|||
* Delete a group
|
||||
*
|
||||
* @param string $groupId ID of the group
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Group deleted successfully
|
||||
|
|
@ -320,7 +320,7 @@ class GroupsController extends AUserData {
|
|||
* Get the list of user IDs that are a subadmin of the group
|
||||
*
|
||||
* @param string $groupId ID of the group
|
||||
* @return DataResponse<Http::STATUS_OK, string[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<string>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Sub admins returned
|
||||
|
|
@ -336,7 +336,7 @@ class GroupsController extends AUserData {
|
|||
/** @var IUser[] $subadmins */
|
||||
$subadmins = $this->groupManager->getSubAdmin()->getGroupsSubAdmins($targetGroup);
|
||||
// New class returns IUser[] so convert back
|
||||
/** @var string[] $uids */
|
||||
/** @var list<string> $uids */
|
||||
$uids = [];
|
||||
foreach ($subadmins as $user) {
|
||||
$uids[] = $user->getUID();
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class PreferencesController extends OCSController {
|
|||
* @param string $appId ID of the app
|
||||
* @param array<string, string> $configs Key-value pairs of the preferences
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST, list<empty>, array{}>
|
||||
*
|
||||
* 200: Preferences updated successfully
|
||||
* 400: Preference invalid
|
||||
|
|
@ -85,7 +85,7 @@ class PreferencesController extends OCSController {
|
|||
* @param string $appId ID of the app
|
||||
* @param string $configKey Key of the preference
|
||||
* @param string $configValue New value
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST, list<empty>, array{}>
|
||||
*
|
||||
* 200: Preference updated successfully
|
||||
* 400: Preference invalid
|
||||
|
|
@ -124,9 +124,9 @@ class PreferencesController extends OCSController {
|
|||
* Delete multiple preferences for an app
|
||||
*
|
||||
* @param string $appId ID of the app
|
||||
* @param string[] $configKeys Keys to delete
|
||||
* @param list<string> $configKeys Keys to delete
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST, list<empty>, array{}>
|
||||
*
|
||||
* 200: Preferences deleted successfully
|
||||
* 400: Preference invalid
|
||||
|
|
@ -168,7 +168,7 @@ class PreferencesController extends OCSController {
|
|||
*
|
||||
* @param string $appId ID of the app
|
||||
* @param string $configKey Key to delete
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK|Http::STATUS_BAD_REQUEST, list<empty>, array{}>
|
||||
*
|
||||
* 200: Preference deleted successfully
|
||||
* 400: Preference invalid
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ class UsersController extends AUserData {
|
|||
* @param string $search Text to search for
|
||||
* @param int|null $limit Limit the amount of groups returned
|
||||
* @param int $offset Offset for searching for groups
|
||||
* @return DataResponse<Http::STATUS_OK, array{users: string[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{users: list<string>}, array{}>
|
||||
*
|
||||
* 200: Users returned
|
||||
*/
|
||||
|
|
@ -125,7 +125,7 @@ class UsersController extends AUserData {
|
|||
}
|
||||
}
|
||||
|
||||
/** @var string[] $users */
|
||||
/** @var list<string> $users */
|
||||
$users = array_keys($users);
|
||||
|
||||
return new DataResponse([
|
||||
|
|
@ -341,8 +341,8 @@ class UsersController extends AUserData {
|
|||
* Search users by their phone numbers
|
||||
*
|
||||
* @param string $location Location of the phone number (for country code)
|
||||
* @param array<string, string[]> $search Phone numbers to search for
|
||||
* @return DataResponse<Http::STATUS_OK, array<string, string>, array{}>|DataResponse<Http::STATUS_BAD_REQUEST, array<empty>, array{}>
|
||||
* @param array<string, list<string>> $search Phone numbers to search for
|
||||
* @return DataResponse<Http::STATUS_OK, array<string, string>, array{}>|DataResponse<Http::STATUS_BAD_REQUEST, list<empty>, array{}>
|
||||
*
|
||||
* 200: Users returned
|
||||
* 400: Invalid location
|
||||
|
|
@ -433,8 +433,8 @@ class UsersController extends AUserData {
|
|||
* @param string $password Password of the user
|
||||
* @param string $displayName Display name of the user
|
||||
* @param string $email Email of the user
|
||||
* @param string[] $groups Groups of the user
|
||||
* @param string[] $subadmin Groups where the user is subadmin
|
||||
* @param list<string> $groups Groups of the user
|
||||
* @param list<string> $subadmin Groups where the user is subadmin
|
||||
* @param string $quota Quota of the user
|
||||
* @param string $language Language of the user
|
||||
* @param ?string $manager Manager of the user
|
||||
|
|
@ -689,7 +689,7 @@ class UsersController extends AUserData {
|
|||
*
|
||||
* Get a list of fields that are editable for the current user
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, string[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<string>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Editable fields returned
|
||||
|
|
@ -710,7 +710,7 @@ class UsersController extends AUserData {
|
|||
* Get a list of fields that are editable for a user
|
||||
*
|
||||
* @param string $userId ID of the user
|
||||
* @return DataResponse<Http::STATUS_OK, string[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<string>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Editable fields for user returned
|
||||
|
|
@ -779,7 +779,7 @@ class UsersController extends AUserData {
|
|||
* @param string $collectionName Collection to update
|
||||
* @param string $key Key that will be updated
|
||||
* @param string $value New value for the key
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User values edited successfully
|
||||
|
|
@ -884,7 +884,7 @@ class UsersController extends AUserData {
|
|||
* @param string $userId ID of the user
|
||||
* @param string $key Key that will be updated
|
||||
* @param string $value New value for the key
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User value edited successfully
|
||||
|
|
@ -1222,7 +1222,7 @@ class UsersController extends AUserData {
|
|||
*
|
||||
* @param string $userId ID of the user
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
*
|
||||
* @throws OCSException
|
||||
*
|
||||
|
|
@ -1261,7 +1261,7 @@ class UsersController extends AUserData {
|
|||
* Delete a user
|
||||
*
|
||||
* @param string $userId ID of the user
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User deleted successfully
|
||||
|
|
@ -1301,7 +1301,7 @@ class UsersController extends AUserData {
|
|||
* Disable a user
|
||||
*
|
||||
* @param string $userId ID of the user
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User disabled successfully
|
||||
|
|
@ -1316,7 +1316,7 @@ class UsersController extends AUserData {
|
|||
* Enable a user
|
||||
*
|
||||
* @param string $userId ID of the user
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User enabled successfully
|
||||
|
|
@ -1330,7 +1330,7 @@ class UsersController extends AUserData {
|
|||
/**
|
||||
* @param string $userId
|
||||
* @param bool $value
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*/
|
||||
private function setEnabled(string $userId, bool $value): DataResponse {
|
||||
|
|
@ -1360,7 +1360,7 @@ class UsersController extends AUserData {
|
|||
* Get a list of groups the user belongs to
|
||||
*
|
||||
* @param string $userId ID of the user
|
||||
* @return DataResponse<Http::STATUS_OK, array{groups: string[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{groups: list<string>}, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Users groups returned
|
||||
|
|
@ -1387,16 +1387,10 @@ class UsersController extends AUserData {
|
|||
// Looking up someone else
|
||||
if ($subAdminManager->isUserAccessible($loggedInUser, $targetUser)) {
|
||||
// Return the group that the method caller is subadmin of for the user in question
|
||||
/** @var IGroup[] $getSubAdminsGroups */
|
||||
$getSubAdminsGroups = $subAdminManager->getSubAdminsGroups($loggedInUser);
|
||||
foreach ($getSubAdminsGroups as $key => $group) {
|
||||
$getSubAdminsGroups[$key] = $group->getGID();
|
||||
}
|
||||
/** @var string[] $groups */
|
||||
$groups = array_intersect(
|
||||
$getSubAdminsGroups,
|
||||
$groups = array_values(array_intersect(
|
||||
array_map(static fn (IGroup $group) => $group->getGID(), $subAdminManager->getSubAdminsGroups($loggedInUser)),
|
||||
$this->groupManager->getUserGroupIds($targetUser)
|
||||
);
|
||||
));
|
||||
return new DataResponse(['groups' => $groups]);
|
||||
} else {
|
||||
// Not permitted
|
||||
|
|
@ -1410,7 +1404,7 @@ class UsersController extends AUserData {
|
|||
*
|
||||
* @param string $userId ID of the user
|
||||
* @param string $groupid ID of the group
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User added to group successfully
|
||||
|
|
@ -1450,7 +1444,7 @@ class UsersController extends AUserData {
|
|||
*
|
||||
* @param string $userId ID of the user
|
||||
* @param string $groupid ID of the group
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User removed from group successfully
|
||||
|
|
@ -1517,7 +1511,7 @@ class UsersController extends AUserData {
|
|||
*
|
||||
* @param string $userId ID of the user
|
||||
* @param string $groupid ID of the group
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User added as group subadmin successfully
|
||||
|
|
@ -1557,7 +1551,7 @@ class UsersController extends AUserData {
|
|||
*
|
||||
* @param string $userId ID of the user
|
||||
* @param string $groupid ID of the group
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User removed as group subadmin successfully
|
||||
|
|
@ -1591,7 +1585,7 @@ class UsersController extends AUserData {
|
|||
* Get the groups a user is a subadmin of
|
||||
*
|
||||
* @param string $userId ID if the user
|
||||
* @return DataResponse<Http::STATUS_OK, string[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<string>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: User subadmin groups returned
|
||||
|
|
@ -1606,7 +1600,7 @@ class UsersController extends AUserData {
|
|||
* Resend the welcome message
|
||||
*
|
||||
* @param string $userId ID if the user
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
*
|
||||
* 200: Resent welcome message successfully
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ namespace OCA\Provisioning_API;
|
|||
* @psalm-type Provisioning_APIUserDetailsScope = 'v2-private'|'v2-local'|'v2-federated'|'v2-published'|'private'|'contacts'|'public'
|
||||
*
|
||||
* @psalm-type Provisioning_APIUserDetails = array{
|
||||
* additional_mail: string[],
|
||||
* additional_mailScope?: Provisioning_APIUserDetailsScope[],
|
||||
* additional_mail: list<string>,
|
||||
* additional_mailScope?: list<Provisioning_APIUserDetailsScope>,
|
||||
* address: string,
|
||||
* addressScope?: Provisioning_APIUserDetailsScope,
|
||||
* avatarScope?: Provisioning_APIUserDetailsScope,
|
||||
|
|
@ -41,7 +41,7 @@ namespace OCA\Provisioning_API;
|
|||
* enabled?: bool,
|
||||
* fediverse: string,
|
||||
* fediverseScope?: Provisioning_APIUserDetailsScope,
|
||||
* groups: string[],
|
||||
* groups: list<string>,
|
||||
* headline: string,
|
||||
* headlineScope?: Provisioning_APIUserDetailsScope,
|
||||
* id: string,
|
||||
|
|
@ -62,7 +62,7 @@ namespace OCA\Provisioning_API;
|
|||
* role: string,
|
||||
* roleScope?: Provisioning_APIUserDetailsScope,
|
||||
* storageLocation?: string,
|
||||
* subadmin: string[],
|
||||
* subadmin: list<string>,
|
||||
* twitter: string,
|
||||
* twitterScope?: Provisioning_APIUserDetailsScope,
|
||||
* website: string,
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class Capabilities implements ICapability {
|
|||
|
||||
/**
|
||||
* @return array{
|
||||
* files_sharing: array{
|
||||
* files_sharing?: array{
|
||||
* sharebymail: array{
|
||||
* enabled: bool,
|
||||
* send_password_by_mail: bool,
|
||||
|
|
@ -41,7 +41,7 @@ class Capabilities implements ICapability {
|
|||
* },
|
||||
* }
|
||||
* }
|
||||
* }|array<empty>
|
||||
* }
|
||||
*/
|
||||
public function getCapabilities(): array {
|
||||
if (!$this->appManager->isEnabledForUser('files_sharing')) {
|
||||
|
|
|
|||
|
|
@ -21,87 +21,76 @@
|
|||
},
|
||||
"schemas": {
|
||||
"Capabilities": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"files_sharing": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"files_sharing"
|
||||
"sharebymail"
|
||||
],
|
||||
"properties": {
|
||||
"files_sharing": {
|
||||
"sharebymail": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"sharebymail"
|
||||
"enabled",
|
||||
"send_password_by_mail",
|
||||
"upload_files_drop",
|
||||
"password",
|
||||
"expire_date"
|
||||
],
|
||||
"properties": {
|
||||
"sharebymail": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"send_password_by_mail": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"upload_files_drop": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"enabled"
|
||||
],
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"password": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"enabled",
|
||||
"send_password_by_mail",
|
||||
"upload_files_drop",
|
||||
"password",
|
||||
"expire_date"
|
||||
"enforced"
|
||||
],
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"send_password_by_mail": {
|
||||
"enforced": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"expire_date": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"enabled",
|
||||
"enforced"
|
||||
],
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"upload_files_drop": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"enabled"
|
||||
],
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"password": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"enabled",
|
||||
"enforced"
|
||||
],
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"enforced": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"expire_date": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"enabled",
|
||||
"enforced"
|
||||
],
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"enforced": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
"enforced": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"maxItems": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -417,7 +417,7 @@ class ThemingController extends Controller {
|
|||
*
|
||||
* @param string $app ID of the app
|
||||
* @psalm-suppress LessSpecificReturnStatement The content of the Manifest doesn't need to be described in the return type
|
||||
* @return JSONResponse<Http::STATUS_OK, array{name: string, short_name: string, start_url: string, theme_color: string, background_color: string, description: string, icons: array{src: non-empty-string, type: string, sizes: string}[], display: string}, array{}>|JSONResponse<Http::STATUS_NOT_FOUND, array{}, array{}>
|
||||
* @return JSONResponse<Http::STATUS_OK, array{name: string, short_name: string, start_url: string, theme_color: string, background_color: string, description: string, icons: list<array{src: non-empty-string, type: string, sizes: string}>, display: string}, array{}>|JSONResponse<Http::STATUS_NOT_FOUND, array{}, array{}>
|
||||
*
|
||||
* 200: Manifest returned
|
||||
* 404: App not found
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ class UserThemeController extends OCSController {
|
|||
* Enable theme
|
||||
*
|
||||
* @param string $themeId the theme ID
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSBadRequestException Enabling theme is not possible
|
||||
* @throws PreConditionNotMetException
|
||||
*
|
||||
|
|
@ -77,7 +77,7 @@ class UserThemeController extends OCSController {
|
|||
* Disable theme
|
||||
*
|
||||
* @param string $themeId the theme ID
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSBadRequestException Disabling theme is not possible
|
||||
* @throws PreConditionNotMetException
|
||||
*
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ class APIController extends OCSController {
|
|||
*
|
||||
* @param string $newVersion Server version to check updates for
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{missing: UpdateNotificationApp[], available: UpdateNotificationApp[]}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, array{appstore_disabled: bool, already_on_latest?: bool}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{missing: list<UpdateNotificationApp>, available: list<UpdateNotificationApp>}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, array{appstore_disabled: bool, already_on_latest?: bool}, array{}>
|
||||
*
|
||||
* 200: Apps returned
|
||||
* 404: New versions not found
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ class ConfigAPIController extends OCSController {
|
|||
* Delete a LDAP configuration
|
||||
*
|
||||
* @param string $configID ID of the config
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
* @throws OCSNotFoundException Config not found
|
||||
*
|
||||
|
|
@ -102,7 +102,7 @@ class ConfigAPIController extends OCSController {
|
|||
*
|
||||
* @param string $configID ID of the config
|
||||
* @param array<string, mixed> $configData New config
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSException
|
||||
* @throws OCSBadRequestException Modifying config is not possible
|
||||
* @throws OCSNotFoundException Config not found
|
||||
|
|
|
|||
|
|
@ -638,6 +638,10 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $uid
|
||||
* @return list<string>
|
||||
*/
|
||||
protected function getCachedGroupsForUserId(string $uid): array {
|
||||
$groupStr = $this->config->getUserValue($uid, 'user_ldap', 'cached-group-memberships-' . $this->access->connection->getConfigPrefix(), '[]');
|
||||
return json_decode($groupStr, true) ?? [];
|
||||
|
|
@ -650,7 +654,7 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
|
|||
* This function includes groups based on dynamic group membership.
|
||||
*
|
||||
* @param string $uid Name of the user
|
||||
* @return string[] Group names
|
||||
* @return list<string> Group names
|
||||
* @throws Exception
|
||||
* @throws ServerNotAvailableException
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ class Group_Proxy extends Proxy implements GroupInterface, IGroupLDAP, IGetDispl
|
|||
* Get all groups a user belongs to
|
||||
*
|
||||
* @param string $uid Name of the user
|
||||
* @return string[] with group names
|
||||
* @return list<string> with group names
|
||||
*
|
||||
* This function fetches all groups a user belongs to. It does not check
|
||||
* if the user exists at all.
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ class HeartbeatController extends OCSController {
|
|||
*
|
||||
* @param string $status Only online, away
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, UserStatusPrivate, array{}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NO_CONTENT, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, UserStatusPrivate, array{}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_INTERNAL_SERVER_ERROR|Http::STATUS_NO_CONTENT, list<empty>, array{}>
|
||||
*
|
||||
* 200: Status successfully updated
|
||||
* 204: User has no status to keep alive
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ class PredefinedStatusController extends OCSController {
|
|||
/**
|
||||
* Get all predefined messages
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, UserStatusPredefined[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<UserStatusPredefined>, array{}>
|
||||
*
|
||||
* 200: Predefined statuses returned
|
||||
*/
|
||||
|
|
@ -50,8 +50,8 @@ class PredefinedStatusController extends OCSController {
|
|||
#[ApiRoute(verb: 'GET', url: '/api/v1/predefined_statuses/')]
|
||||
public function findAll():DataResponse {
|
||||
// Filtering out the invisible one, that should only be set by API
|
||||
return new DataResponse(array_filter($this->predefinedStatusService->getDefaultStatuses(), function (array $status) {
|
||||
return new DataResponse(array_values(array_filter($this->predefinedStatusService->getDefaultStatuses(), function (array $status) {
|
||||
return !array_key_exists('visible', $status) || $status['visible'] === true;
|
||||
}));
|
||||
})));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class StatusesController extends OCSController {
|
|||
*
|
||||
* @param int|null $limit Maximum number of statuses to find
|
||||
* @param int|null $offset Offset for finding statuses
|
||||
* @return DataResponse<Http::STATUS_OK, UserStatusPublic[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<UserStatusPublic>, array{}>
|
||||
*
|
||||
* 200: Statuses returned
|
||||
*/
|
||||
|
|
@ -56,9 +56,9 @@ class StatusesController extends OCSController {
|
|||
public function findAll(?int $limit = null, ?int $offset = null): DataResponse {
|
||||
$allStatuses = $this->service->findAll($limit, $offset);
|
||||
|
||||
return new DataResponse(array_map(function ($userStatus) {
|
||||
return new DataResponse(array_values(array_map(function ($userStatus) {
|
||||
return $this->formatStatus($userStatus);
|
||||
}, $allStatuses));
|
||||
}, $allStatuses)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ class UserStatusController extends OCSController {
|
|||
/**
|
||||
* Clear the message of the current user
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
*
|
||||
* 200: Message cleared successfully
|
||||
*/
|
||||
|
|
@ -171,7 +171,7 @@ class UserStatusController extends OCSController {
|
|||
*
|
||||
* @param string $messageId ID of the message to delete
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, UserStatusPrivate|array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, UserStatusPrivate|list<empty>, array{}>
|
||||
*
|
||||
* 200: Status reverted
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ class UserStatusWidget implements IAPIWidget, IAPIWidgetV2, IIconWidget, IOption
|
|||
public function getItems(string $userId, ?string $since = null, int $limit = 7): array {
|
||||
$widgetItemsData = $this->getWidgetData($userId, $since, $limit);
|
||||
|
||||
return array_map(function (array $widgetData) {
|
||||
return array_values(array_map(function (array $widgetData) {
|
||||
$formattedDate = $this->dateTimeFormatter->formatTimeSpan($widgetData['timestamp']);
|
||||
return new WidgetItem(
|
||||
$widgetData['displayName'],
|
||||
|
|
@ -157,7 +157,7 @@ class UserStatusWidget implements IAPIWidget, IAPIWidgetV2, IIconWidget, IOption
|
|||
),
|
||||
(string)$widgetData['timestamp']
|
||||
);
|
||||
}, $widgetItemsData);
|
||||
}, $widgetItemsData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ class WeatherStatusController extends OCSController {
|
|||
/**
|
||||
* Get forecast for current location
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, WeatherStatusForecast[]|array{error: string}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, WeatherStatusSuccess, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<WeatherStatusForecast>|array{error: string}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, WeatherStatusSuccess, array{}>
|
||||
*
|
||||
* 200: Forecast returned
|
||||
* 404: Forecast not found
|
||||
|
|
@ -111,7 +111,7 @@ class WeatherStatusController extends OCSController {
|
|||
/**
|
||||
* Get favorites list
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, string[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<string>, array{}>
|
||||
*
|
||||
* 200: Favorites returned
|
||||
*/
|
||||
|
|
@ -123,7 +123,7 @@ class WeatherStatusController extends OCSController {
|
|||
/**
|
||||
* Set favorites list
|
||||
*
|
||||
* @param string[] $favorites Favorite addresses
|
||||
* @param list<string> $favorites Favorite addresses
|
||||
* @return DataResponse<Http::STATUS_OK, WeatherStatusSuccess, array{}>
|
||||
*
|
||||
* 200: Favorites updated
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ class WeatherStatusService {
|
|||
|
||||
/**
|
||||
* Get favorites list
|
||||
* @return string[]
|
||||
* @return list<string>
|
||||
*/
|
||||
public function getFavorites(): array {
|
||||
$favoritesJson = $this->config->getUserValue($this->userId, Application::APP_ID, 'favorites', '');
|
||||
|
|
@ -79,7 +79,7 @@ class WeatherStatusService {
|
|||
|
||||
/**
|
||||
* Set favorites list
|
||||
* @param string[] $favorites
|
||||
* @param list<string> $favorites
|
||||
* @return WeatherStatusSuccess success state
|
||||
*/
|
||||
public function setFavorites(array $favorites): array {
|
||||
|
|
@ -287,7 +287,7 @@ class WeatherStatusService {
|
|||
/**
|
||||
* Get forecast for current location
|
||||
*
|
||||
* @return WeatherStatusForecast[]|array{error: string}|WeatherStatusSuccess which contains success state and filtered forecast data
|
||||
* @return list<WeatherStatusForecast>|array{error: string}|WeatherStatusSuccess which contains success state and filtered forecast data
|
||||
*/
|
||||
public function getForecast(): array {
|
||||
$lat = $this->config->getUserValue($this->userId, Application::APP_ID, 'lat', '');
|
||||
|
|
@ -310,7 +310,7 @@ class WeatherStatusService {
|
|||
* @param float $lon Longitude of requested forecast, in decimal degree format
|
||||
* @param float $altitude Altitude of requested forecast, in meter
|
||||
* @param int $nbValues Number of forecast values (hours)
|
||||
* @return WeatherStatusForecast[]|array{error: string} Filtered forecast data
|
||||
* @return list<WeatherStatusForecast>|array{error: string} Filtered forecast data
|
||||
*/
|
||||
private function forecastRequest(float $lat, float $lon, float $altitude, int $nbValues = 10): array {
|
||||
$params = [
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ class WebhooksController extends OCSController {
|
|||
* List registered webhooks
|
||||
*
|
||||
* @param string|null $uri The callback URI to filter by
|
||||
* @return DataResponse<Http::STATUS_OK, WebhookListenersWebhookInfo[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<WebhookListenersWebhookInfo>, array{}>
|
||||
* @throws OCSException Other internal error
|
||||
*
|
||||
* 200: Webhook registrations returned
|
||||
|
|
@ -66,12 +66,10 @@ class WebhooksController extends OCSController {
|
|||
$webhookListeners = $this->mapper->getAll();
|
||||
}
|
||||
|
||||
return new DataResponse(
|
||||
array_map(
|
||||
fn (WebhookListener $listener): array => $listener->jsonSerialize(),
|
||||
$webhookListeners
|
||||
)
|
||||
);
|
||||
return new DataResponse(array_values(array_map(
|
||||
fn (WebhookListener $listener): array => $listener->jsonSerialize(),
|
||||
$webhookListeners
|
||||
)));
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->error('Error when listing webhooks', ['exception' => $e]);
|
||||
throw new OCSException('An internal error occurred', Http::STATUS_INTERNAL_SERVER_ERROR, $e);
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ class AppPasswordController extends \OCP\AppFramework\OCSController {
|
|||
/**
|
||||
* Delete app password
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSForbiddenException Deleting app password is not allowed
|
||||
*
|
||||
* 200: App password deleted successfully
|
||||
|
|
@ -162,7 +162,7 @@ class AppPasswordController extends \OCP\AppFramework\OCSController {
|
|||
*
|
||||
* @param string $password The password of the user
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{lastLogin: int}, array{}>|DataResponse<Http::STATUS_FORBIDDEN, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{lastLogin: int}, array{}>|DataResponse<Http::STATUS_FORBIDDEN, list<empty>, array{}>
|
||||
*
|
||||
* 200: Password confirmation succeeded
|
||||
* 403: Password confirmation failed
|
||||
|
|
|
|||
|
|
@ -43,10 +43,10 @@ class AutoCompleteController extends OCSController {
|
|||
* @param string|null $itemType Type of the items to search for
|
||||
* @param string|null $itemId ID of the items to search for
|
||||
* @param string|null $sorter can be piped, top prio first, e.g.: "commenters|share-recipients"
|
||||
* @param int[] $shareTypes Types of shares to search for
|
||||
* @param list<int> $shareTypes Types of shares to search for
|
||||
* @param int $limit Maximum number of results to return
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, CoreAutocompleteResult[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<CoreAutocompleteResult>, array{}>
|
||||
*
|
||||
* 200: Autocomplete results returned
|
||||
*/
|
||||
|
|
@ -100,7 +100,7 @@ class AutoCompleteController extends OCSController {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return CoreAutocompleteResult[]
|
||||
* @return list<CoreAutocompleteResult>
|
||||
*/
|
||||
protected function prepareResultArray(array $results): array {
|
||||
$output = [];
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class AvatarController extends Controller {
|
|||
* @param string $userId ID of the user
|
||||
* @param 64|512 $size Size of the avatar
|
||||
* @param bool $guestFallback Fallback to guest avatar if not found
|
||||
* @return FileDisplayResponse<Http::STATUS_OK|Http::STATUS_CREATED, array{Content-Type: string, X-NC-IsCustomAvatar: int}>|JSONResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>|Response<Http::STATUS_INTERNAL_SERVER_ERROR, array{}>
|
||||
* @return FileDisplayResponse<Http::STATUS_OK|Http::STATUS_CREATED, array{Content-Type: string, X-NC-IsCustomAvatar: int}>|JSONResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>|Response<Http::STATUS_INTERNAL_SERVER_ERROR, array{}>
|
||||
*
|
||||
* 200: Avatar returned
|
||||
* 201: Avatar returned
|
||||
|
|
@ -108,7 +108,7 @@ class AvatarController extends Controller {
|
|||
* @param string $userId ID of the user
|
||||
* @param 64|512 $size Size of the avatar
|
||||
* @param bool $guestFallback Fallback to guest avatar if not found
|
||||
* @return FileDisplayResponse<Http::STATUS_OK|Http::STATUS_CREATED, array{Content-Type: string, X-NC-IsCustomAvatar: int}>|JSONResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>|Response<Http::STATUS_INTERNAL_SERVER_ERROR, array{}>
|
||||
* @return FileDisplayResponse<Http::STATUS_OK|Http::STATUS_CREATED, array{Content-Type: string, X-NC-IsCustomAvatar: int}>|JSONResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>|Response<Http::STATUS_INTERNAL_SERVER_ERROR, array{}>
|
||||
*
|
||||
* 200: Avatar returned
|
||||
* 201: Avatar returned
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class CSRFTokenController extends Controller {
|
|||
/**
|
||||
* Returns a new CSRF token.
|
||||
*
|
||||
* @return JSONResponse<Http::STATUS_OK, array{token: string}, array{}>|JSONResponse<Http::STATUS_FORBIDDEN, array<empty>, array{}>
|
||||
* @return JSONResponse<Http::STATUS_OK, array{token: string}, array{}>|JSONResponse<Http::STATUS_FORBIDDEN, list<empty>, array{}>
|
||||
*
|
||||
* 200: CSRF token returned
|
||||
* 403: Strict cookie check failed
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ class ClientFlowLoginV2Controller extends Controller {
|
|||
* Poll the login flow credentials
|
||||
*
|
||||
* @param string $token Token of the flow
|
||||
* @return JSONResponse<Http::STATUS_OK, CoreLoginFlowV2Credentials, array{}>|JSONResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return JSONResponse<Http::STATUS_OK, CoreLoginFlowV2Credentials, array{}>|JSONResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Login flow credentials returned
|
||||
* 404: Login flow not found or completed
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
* Get a collection
|
||||
*
|
||||
* @param int $collectionId ID of the collection
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, list<empty>, array{}>
|
||||
*
|
||||
* 200: Collection returned
|
||||
* 404: Collection not found
|
||||
|
|
@ -80,7 +80,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
* Search for collections
|
||||
*
|
||||
* @param string $filter Filter collections
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection[], array{}>|DataResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<CoreCollection>, array{}>|DataResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Collections returned
|
||||
* 404: Collection not found
|
||||
|
|
@ -103,7 +103,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
* @param int $collectionId ID of the collection
|
||||
* @param string $resourceType Name of the resource
|
||||
* @param string $resourceId ID of the resource
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, list<empty>, array{}>
|
||||
*
|
||||
* 200: Collection returned
|
||||
* 404: Collection not found or resource inaccessible
|
||||
|
|
@ -137,7 +137,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
* @param int $collectionId ID of the collection
|
||||
* @param string $resourceType Name of the resource
|
||||
* @param string $resourceId ID of the resource
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, list<empty>, array{}>
|
||||
*
|
||||
* 200: Collection returned
|
||||
* 404: Collection or resource not found
|
||||
|
|
@ -167,7 +167,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
*
|
||||
* @param string $resourceType Type of the resource
|
||||
* @param string $resourceId ID of the resource
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection[], array{}>|DataResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<CoreCollection>, array{}>|DataResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Collections returned
|
||||
* 404: Resource not accessible
|
||||
|
|
@ -194,7 +194,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
* @param string $baseResourceType Type of the base resource
|
||||
* @param string $baseResourceId ID of the base resource
|
||||
* @param string $name Name of the collection
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, list<empty>, array{}>
|
||||
*
|
||||
* 200: Collection returned
|
||||
* 400: Creating collection is not possible
|
||||
|
|
@ -228,7 +228,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
*
|
||||
* @param int $collectionId ID of the collection
|
||||
* @param string $collectionName New name
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, list<empty>, array{}>
|
||||
*
|
||||
* 200: Collection returned
|
||||
* 404: Collection not found
|
||||
|
|
@ -248,7 +248,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, CoreCollection, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, list<empty>, array{}>
|
||||
*/
|
||||
protected function respondCollection(ICollection $collection): DataResponse {
|
||||
try {
|
||||
|
|
@ -262,7 +262,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return CoreCollection[]
|
||||
* @return list<CoreCollection>
|
||||
*/
|
||||
protected function prepareCollections(array $collections): array {
|
||||
$result = [];
|
||||
|
|
@ -295,7 +295,7 @@ class CollaborationResourcesController extends OCSController {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return CoreResource[]
|
||||
* @return list<CoreResource>
|
||||
*/
|
||||
protected function prepareResources(array $resources): array {
|
||||
$result = [];
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class HoverCardController extends \OCP\AppFramework\OCSController {
|
|||
* Get the account details for a hovercard
|
||||
*
|
||||
* @param string $userId ID of the user
|
||||
* @return DataResponse<Http::STATUS_OK, array{userId: string, displayName: string, actions: CoreContactsAction[]}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{userId: string, displayName: string, actions: list<CoreContactsAction>}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Account details returned
|
||||
* 404: Account not found
|
||||
|
|
@ -54,7 +54,7 @@ class HoverCardController extends \OCP\AppFramework\OCSController {
|
|||
array_unshift($actions, $data['topAction']);
|
||||
}
|
||||
|
||||
/** @var CoreContactsAction[] $actions */
|
||||
/** @var list<CoreContactsAction> $actions */
|
||||
return new DataResponse([
|
||||
'userId' => $userId,
|
||||
'displayName' => $contact->getFullName(),
|
||||
|
|
|
|||
|
|
@ -381,7 +381,7 @@ class LoginController extends Controller {
|
|||
*
|
||||
* @param string $password The password of the user
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{lastLogin: int}, array{}>|DataResponse<Http::STATUS_FORBIDDEN, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{lastLogin: int}, array{}>|DataResponse<Http::STATUS_FORBIDDEN, list<empty>, array{}>
|
||||
*
|
||||
* 200: Password confirmation succeeded
|
||||
* 403: Password confirmation failed
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class NavigationController extends OCSController {
|
|||
* Get the apps navigation
|
||||
*
|
||||
* @param bool $absolute Rewrite URLs to absolute ones
|
||||
* @return DataResponse<Http::STATUS_OK, CoreNavigationEntry[], array{}>|DataResponse<Http::STATUS_NOT_MODIFIED, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<CoreNavigationEntry>, array{}>|DataResponse<Http::STATUS_NOT_MODIFIED, list<empty>, array{}>
|
||||
*
|
||||
* 200: Apps navigation returned
|
||||
* 304: No apps navigation changed
|
||||
|
|
@ -60,7 +60,7 @@ class NavigationController extends OCSController {
|
|||
* Get the settings navigation
|
||||
*
|
||||
* @param bool $absolute Rewrite URLs to absolute ones
|
||||
* @return DataResponse<Http::STATUS_OK, CoreNavigationEntry[], array{}>|DataResponse<Http::STATUS_NOT_MODIFIED, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<CoreNavigationEntry>, array{}>|DataResponse<Http::STATUS_NOT_MODIFIED, list<empty>, array{}>
|
||||
*
|
||||
* 200: Apps navigation returned
|
||||
* 304: No apps navigation changed
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class OCMController extends Controller {
|
|||
*
|
||||
* @psalm-suppress MoreSpecificReturnType
|
||||
* @psalm-suppress LessSpecificReturnStatement
|
||||
* @return DataResponse<Http::STATUS_OK, array{enabled: bool, apiVersion: string, endPoint: string, resourceTypes: array{name: string, shareTypes: string[], protocols: array{webdav: string}}[]}, array{X-NEXTCLOUD-OCM-PROVIDERS: true, Content-Type: 'application/json'}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{enabled: bool, apiVersion: string, endPoint: string, resourceTypes: list<array{name: string, shareTypes: list<string>, protocols: array{webdav: string}}>}, array{X-NEXTCLOUD-OCM-PROVIDERS: true, Content-Type: 'application/json'}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
*
|
||||
* 200: OCM Provider details returned
|
||||
* 500: OCM not supported
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class PreviewController extends Controller {
|
|||
* @param bool $forceIcon Force returning an icon
|
||||
* @param 'fill'|'cover' $mode How to crop the image
|
||||
* @param bool $mimeFallback Whether to fallback to the mime icon if no preview is available
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}>|RedirectResponse<Http::STATUS_SEE_OTHER, array{}>
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}>|RedirectResponse<Http::STATUS_SEE_OTHER, array{}>
|
||||
*
|
||||
* 200: Preview returned
|
||||
* 303: Redirect to the mime icon url if mimeFallback is true
|
||||
|
|
@ -90,7 +90,7 @@ class PreviewController extends Controller {
|
|||
* @param bool $forceIcon Force returning an icon
|
||||
* @param 'fill'|'cover' $mode How to crop the image
|
||||
* @param bool $mimeFallback Whether to fallback to the mime icon if no preview is available
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}>|RedirectResponse<Http::STATUS_SEE_OTHER, array{}>
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}>|RedirectResponse<Http::STATUS_SEE_OTHER, array{}>
|
||||
*
|
||||
* 200: Preview returned
|
||||
* 303: Redirect to the mime icon url if mimeFallback is true
|
||||
|
|
@ -124,7 +124,7 @@ class PreviewController extends Controller {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}>|RedirectResponse<Http::STATUS_SEE_OTHER, array{}>
|
||||
* @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}>|RedirectResponse<Http::STATUS_SEE_OTHER, array{}>
|
||||
*/
|
||||
private function fetchPreview(
|
||||
Node $node,
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ class ProfileApiController extends OCSController {
|
|||
* @param string $targetUserId ID of the user
|
||||
* @param string $paramId ID of the parameter
|
||||
* @param string $visibility New visibility
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws OCSBadRequestException Updating visibility is not possible
|
||||
* @throws OCSForbiddenException Not allowed to edit other users visibility
|
||||
* @throws OCSNotFoundException Account not found
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ class ReferenceApiController extends \OCP\AppFramework\OCSController {
|
|||
/**
|
||||
* Resolve multiple references
|
||||
*
|
||||
* @param string[] $references References to resolve
|
||||
* @param list<string> $references References to resolve
|
||||
* @param int $limit Maximum amount of references to resolve
|
||||
* @return DataResponse<Http::STATUS_OK, array{references: array<string, CoreReference|null>}, array{}>
|
||||
*
|
||||
|
|
@ -168,7 +168,7 @@ class ReferenceApiController extends \OCP\AppFramework\OCSController {
|
|||
/**
|
||||
* Resolve multiple references from a public page
|
||||
*
|
||||
* @param string[] $references References to resolve
|
||||
* @param list<string> $references References to resolve
|
||||
* @param string $sharingToken Token of the public share
|
||||
* @param int $limit Maximum amount of references to resolve, limited to 15
|
||||
* @return DataResponse<Http::STATUS_OK, array{references: array<string, CoreReference|null>}, array{}>
|
||||
|
|
@ -197,7 +197,7 @@ class ReferenceApiController extends \OCP\AppFramework\OCSController {
|
|||
/**
|
||||
* Get the providers
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, CoreReferenceProvider[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<CoreReferenceProvider>, array{}>
|
||||
*
|
||||
* 200: Providers returned
|
||||
*/
|
||||
|
|
@ -205,9 +205,9 @@ class ReferenceApiController extends \OCP\AppFramework\OCSController {
|
|||
#[ApiRoute(verb: 'GET', url: '/providers', root: '/references')]
|
||||
public function getProvidersInfo(): DataResponse {
|
||||
$providers = $this->referenceManager->getDiscoverableProviders();
|
||||
$jsonProviders = array_map(static function (IDiscoverableReferenceProvider $provider) {
|
||||
$jsonProviders = array_values(array_map(static function (IDiscoverableReferenceProvider $provider) {
|
||||
return $provider->jsonSerialize();
|
||||
}, $providers);
|
||||
}, $providers));
|
||||
return new DataResponse($jsonProviders);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,30 +68,30 @@ class TaskProcessingApiController extends \OCP\AppFramework\OCSController {
|
|||
#[ApiRoute(verb: 'GET', url: '/tasktypes', root: '/taskprocessing')]
|
||||
public function taskTypes(): DataResponse {
|
||||
$taskTypes = array_map(function (array $tt) {
|
||||
$tt['inputShape'] = array_map(function ($descriptor) {
|
||||
$tt['inputShape'] = array_values(array_map(function ($descriptor) {
|
||||
return $descriptor->jsonSerialize();
|
||||
}, $tt['inputShape']);
|
||||
$tt['outputShape'] = array_map(function ($descriptor) {
|
||||
}, $tt['inputShape']));
|
||||
$tt['outputShape'] = array_values(array_map(function ($descriptor) {
|
||||
return $descriptor->jsonSerialize();
|
||||
}, $tt['outputShape']);
|
||||
$tt['optionalInputShape'] = array_map(function ($descriptor) {
|
||||
}, $tt['outputShape']));
|
||||
$tt['optionalInputShape'] = array_values(array_map(function ($descriptor) {
|
||||
return $descriptor->jsonSerialize();
|
||||
}, $tt['optionalInputShape']);
|
||||
$tt['optionalOutputShape'] = array_map(function ($descriptor) {
|
||||
}, $tt['optionalInputShape']));
|
||||
$tt['optionalOutputShape'] = array_values(array_map(function ($descriptor) {
|
||||
return $descriptor->jsonSerialize();
|
||||
}, $tt['optionalOutputShape']);
|
||||
$tt['inputShapeEnumValues'] = array_map(function (array $enumValues) {
|
||||
return array_map(fn (ShapeEnumValue $enumValue) => $enumValue->jsonSerialize(), $enumValues);
|
||||
}, $tt['inputShapeEnumValues']);
|
||||
$tt['optionalInputShapeEnumValues'] = array_map(function (array $enumValues) {
|
||||
return array_map(fn (ShapeEnumValue $enumValue) => $enumValue->jsonSerialize(), $enumValues);
|
||||
}, $tt['optionalInputShapeEnumValues']);
|
||||
$tt['outputShapeEnumValues'] = array_map(function (array $enumValues) {
|
||||
return array_map(fn (ShapeEnumValue $enumValue) => $enumValue->jsonSerialize(), $enumValues);
|
||||
}, $tt['outputShapeEnumValues']);
|
||||
$tt['optionalOutputShapeEnumValues'] = array_map(function (array $enumValues) {
|
||||
return array_map(fn (ShapeEnumValue $enumValue) => $enumValue->jsonSerialize(), $enumValues);
|
||||
}, $tt['optionalOutputShapeEnumValues']);
|
||||
}, $tt['optionalOutputShape']));
|
||||
$tt['inputShapeEnumValues'] = array_values(array_map(function (array $enumValues) {
|
||||
return array_values(array_map(fn (ShapeEnumValue $enumValue) => $enumValue->jsonSerialize(), $enumValues));
|
||||
}, $tt['inputShapeEnumValues']));
|
||||
$tt['optionalInputShapeEnumValues'] = array_values(array_map(function (array $enumValues) {
|
||||
return array_values(array_map(fn (ShapeEnumValue $enumValue) => $enumValue->jsonSerialize(), $enumValues));
|
||||
}, $tt['optionalInputShapeEnumValues']));
|
||||
$tt['outputShapeEnumValues'] = array_values(array_map(function (array $enumValues) {
|
||||
return array_values(array_map(fn (ShapeEnumValue $enumValue) => $enumValue->jsonSerialize(), $enumValues));
|
||||
}, $tt['outputShapeEnumValues']));
|
||||
$tt['optionalOutputShapeEnumValues'] = array_values(array_map(function (array $enumValues) {
|
||||
return array_values(array_map(fn (ShapeEnumValue $enumValue) => $enumValue->jsonSerialize(), $enumValues));
|
||||
}, $tt['optionalOutputShapeEnumValues']));
|
||||
return $tt;
|
||||
}, $this->taskProcessingManager->getAvailableTaskTypes());
|
||||
return new DataResponse([
|
||||
|
|
@ -208,7 +208,7 @@ class TaskProcessingApiController extends \OCP\AppFramework\OCSController {
|
|||
*
|
||||
* @param string $appId ID of the app
|
||||
* @param string|null $customId An arbitrary identifier for the task
|
||||
* @return DataResponse<Http::STATUS_OK, array{tasks: CoreTaskProcessingTask[]}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{tasks: list<CoreTaskProcessingTask>}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
*
|
||||
* 200: Tasks returned
|
||||
*/
|
||||
|
|
@ -217,7 +217,6 @@ class TaskProcessingApiController extends \OCP\AppFramework\OCSController {
|
|||
public function listTasksByApp(string $appId, ?string $customId = null): DataResponse {
|
||||
try {
|
||||
$tasks = $this->taskProcessingManager->getUserTasksByApp($this->userId, $appId, $customId);
|
||||
/** @var CoreTaskProcessingTask[] $json */
|
||||
$json = array_map(static function (Task $task) {
|
||||
return $task->jsonSerialize();
|
||||
}, $tasks);
|
||||
|
|
@ -235,7 +234,7 @@ class TaskProcessingApiController extends \OCP\AppFramework\OCSController {
|
|||
*
|
||||
* @param string|null $taskType The task type to filter by
|
||||
* @param string|null $customId An arbitrary identifier for the task
|
||||
* @return DataResponse<Http::STATUS_OK, array{tasks: CoreTaskProcessingTask[]}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{tasks: list<CoreTaskProcessingTask>}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
*
|
||||
* 200: Tasks returned
|
||||
*/
|
||||
|
|
@ -244,7 +243,6 @@ class TaskProcessingApiController extends \OCP\AppFramework\OCSController {
|
|||
public function listTasks(?string $taskType, ?string $customId = null): DataResponse {
|
||||
try {
|
||||
$tasks = $this->taskProcessingManager->getUserTasks($this->userId, $taskType, $customId);
|
||||
/** @var CoreTaskProcessingTask[] $json */
|
||||
$json = array_map(static function (Task $task) {
|
||||
return $task->jsonSerialize();
|
||||
}, $tasks);
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class TeamsApiController extends \OCP\AppFramework\OCSController {
|
|||
* Get all resources of a team
|
||||
*
|
||||
* @param string $teamId Unique id of the team
|
||||
* @return DataResponse<Http::STATUS_OK, array{resources: CoreTeamResource[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{resources: list<CoreTeamResource>}, array{}>
|
||||
*
|
||||
* 200: Resources returned
|
||||
*/
|
||||
|
|
@ -44,7 +44,7 @@ class TeamsApiController extends \OCP\AppFramework\OCSController {
|
|||
#[ApiRoute(verb: 'GET', url: '/{teamId}/resources', root: '/teams')]
|
||||
public function resolveOne(string $teamId): DataResponse {
|
||||
/**
|
||||
* @var CoreTeamResource[] $resolvedResources
|
||||
* @var list<CoreTeamResource> $resolvedResources
|
||||
* @psalm-suppress PossiblyNullArgument The route is limited to logged-in users
|
||||
*/
|
||||
$resolvedResources = $this->teamManager->getSharedWith($teamId, $this->userId);
|
||||
|
|
@ -57,7 +57,7 @@ class TeamsApiController extends \OCP\AppFramework\OCSController {
|
|||
*
|
||||
* @param string $providerId Identifier of the provider (e.g. deck, talk, collectives)
|
||||
* @param string $resourceId Unique id of the resource to list teams for (e.g. deck board id)
|
||||
* @return DataResponse<Http::STATUS_OK, array{teams: CoreTeam[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{teams: list<CoreTeam>}, array{}>
|
||||
*
|
||||
* 200: Teams returned
|
||||
*/
|
||||
|
|
@ -66,13 +66,13 @@ class TeamsApiController extends \OCP\AppFramework\OCSController {
|
|||
public function listTeams(string $providerId, string $resourceId): DataResponse {
|
||||
/** @psalm-suppress PossiblyNullArgument The route is limited to logged-in users */
|
||||
$teams = $this->teamManager->getTeamsForResource($providerId, $resourceId, $this->userId);
|
||||
/** @var CoreTeam[] $teams */
|
||||
$teams = array_map(function (Team $team) {
|
||||
/** @var list<CoreTeam> $teams */
|
||||
$teams = array_values(array_map(function (Team $team) {
|
||||
$response = $team->jsonSerialize();
|
||||
/** @psalm-suppress PossiblyNullArgument The route is limited to logged in users */
|
||||
$response['resources'] = $this->teamManager->getSharedWith($team->getId(), $this->userId);
|
||||
return $response;
|
||||
}, $teams);
|
||||
}, $teams));
|
||||
|
||||
return new DataResponse([
|
||||
'teams' => $teams,
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class TextProcessingApiController extends \OCP\AppFramework\OCSController {
|
|||
/**
|
||||
* This endpoint returns all available LanguageModel task types
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{types: array{id: string, name: string, description: string}[]}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{types: list<array{id: string, name: string, description: string}>}, array{}>
|
||||
*
|
||||
* 200: Task types returned
|
||||
*/
|
||||
|
|
@ -191,7 +191,7 @@ class TextProcessingApiController extends \OCP\AppFramework\OCSController {
|
|||
*
|
||||
* @param string $appId ID of the app
|
||||
* @param string|null $identifier An arbitrary identifier for the task
|
||||
* @return DataResponse<Http::STATUS_OK, array{tasks: CoreTextProcessingTask[]}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{tasks: list<CoreTextProcessingTask>}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
*
|
||||
* 200: Task list returned
|
||||
*/
|
||||
|
|
@ -200,10 +200,9 @@ class TextProcessingApiController extends \OCP\AppFramework\OCSController {
|
|||
public function listTasksByApp(string $appId, ?string $identifier = null): DataResponse {
|
||||
try {
|
||||
$tasks = $this->textProcessingManager->getUserTasksByApp($this->userId, $appId, $identifier);
|
||||
/** @var CoreTextProcessingTask[] $json */
|
||||
$json = array_map(static function (Task $task) {
|
||||
$json = array_values(array_map(static function (Task $task) {
|
||||
return $task->jsonSerialize();
|
||||
}, $tasks);
|
||||
}, $tasks));
|
||||
|
||||
return new DataResponse([
|
||||
'tasks' => $json,
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ class TextToImageApiController extends \OCP\AppFramework\OCSController {
|
|||
*
|
||||
* @param string $appId ID of the app
|
||||
* @param string|null $identifier An arbitrary identifier for the task
|
||||
* @return DataResponse<Http::STATUS_OK, array{tasks: CoreTextToImageTask[]}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{tasks: list<CoreTextToImageTask>}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
*
|
||||
* 200: Task list returned
|
||||
*/
|
||||
|
|
@ -222,10 +222,9 @@ class TextToImageApiController extends \OCP\AppFramework\OCSController {
|
|||
public function listTasksByApp(string $appId, ?string $identifier = null): DataResponse {
|
||||
try {
|
||||
$tasks = $this->textToImageManager->getUserTasksByApp($this->userId, $appId, $identifier);
|
||||
/** @var CoreTextToImageTask[] $json */
|
||||
$json = array_map(static function (Task $task) {
|
||||
$json = array_values(array_map(static function (Task $task) {
|
||||
return $task->jsonSerialize();
|
||||
}, $tasks);
|
||||
}, $tasks));
|
||||
|
||||
return new DataResponse([
|
||||
'tasks' => $json,
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class TranslationApiController extends \OCP\AppFramework\OCSController {
|
|||
/**
|
||||
* Get the list of supported languages
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{languages: array{from: string, fromLabel: string, to: string, toLabel: string}[], languageDetection: bool}, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{languages: list<array{from: string, fromLabel: string, to: string, toLabel: string}>, languageDetection: bool}, array{}>
|
||||
*
|
||||
* 200: Supported languages returned
|
||||
*/
|
||||
|
|
@ -44,7 +44,7 @@ class TranslationApiController extends \OCP\AppFramework\OCSController {
|
|||
#[ApiRoute(verb: 'GET', url: '/languages', root: '/translation')]
|
||||
public function languages(): DataResponse {
|
||||
return new DataResponse([
|
||||
'languages' => array_map(fn ($lang) => $lang->jsonSerialize(), $this->translationManager->getLanguages()),
|
||||
'languages' => array_values(array_map(fn ($lang) => $lang->jsonSerialize(), $this->translationManager->getLanguages())),
|
||||
'languageDetection' => $this->translationManager->canDetectLanguage(),
|
||||
]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ class UnifiedSearchController extends OCSController {
|
|||
* Get the providers for unified search
|
||||
*
|
||||
* @param string $from the url the user is currently at
|
||||
* @return DataResponse<Http::STATUS_OK, CoreUnifiedSearchProvider[], array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<CoreUnifiedSearchProvider>, array{}>
|
||||
*
|
||||
* 200: Providers returned
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class WhatsNewController extends OCSController {
|
|||
/**
|
||||
* Get the changes
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{changelogURL: string, product: string, version: string, whatsNew?: array{regular: string[], admin: string[]}}, array{}>|DataResponse<Http::STATUS_NO_CONTENT, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, array{changelogURL: string, product: string, version: string, whatsNew?: array{regular: list<string>, admin: list<string>}}, array{}>|DataResponse<Http::STATUS_NO_CONTENT, list<empty>, array{}>
|
||||
*
|
||||
* 200: Changes returned
|
||||
* 204: No changes
|
||||
|
|
@ -87,7 +87,7 @@ class WhatsNewController extends OCSController {
|
|||
*
|
||||
* @param string $version Version to dismiss the changes for
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
|
||||
* @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
|
||||
* @throws \OCP\PreConditionNotMetException
|
||||
* @throws DoesNotExistException
|
||||
*
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class WipeController extends Controller {
|
|||
*
|
||||
* @param string $token App password
|
||||
*
|
||||
* @return JSONResponse<Http::STATUS_OK, array{wipe: bool}, array{}>|JSONResponse<Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return JSONResponse<Http::STATUS_OK, array{wipe: bool}, array{}>|JSONResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Device should be wiped
|
||||
* 404: Device should not be wiped
|
||||
|
|
@ -62,7 +62,7 @@ class WipeController extends Controller {
|
|||
*
|
||||
* @param string $token App password
|
||||
*
|
||||
* @return JSONResponse<Http::STATUS_OK|Http::STATUS_NOT_FOUND, array<empty>, array{}>
|
||||
* @return JSONResponse<Http::STATUS_OK|Http::STATUS_NOT_FOUND, list<empty>, array{}>
|
||||
*
|
||||
* 200: Wipe finished successfully
|
||||
* 404: Device should not be wiped
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ namespace OC\Core;
|
|||
* @psalm-type CoreCollection = array{
|
||||
* id: int,
|
||||
* name: string,
|
||||
* resources: CoreResource[],
|
||||
* resources: list<CoreResource>,
|
||||
* }
|
||||
*
|
||||
* @psalm-type CoreReference = array{
|
||||
|
|
@ -78,7 +78,7 @@ namespace OC\Core;
|
|||
* title: string,
|
||||
* icon_url: string,
|
||||
* order: int,
|
||||
* search_providers_ids: ?string[]
|
||||
* search_providers_ids: ?list<string>,
|
||||
* }
|
||||
*
|
||||
* @psalm-type CoreUnifiedSearchProvider = array{
|
||||
|
|
@ -87,7 +87,7 @@ namespace OC\Core;
|
|||
* name: string,
|
||||
* icon: string,
|
||||
* order: int,
|
||||
* triggers: string[],
|
||||
* triggers: list<string>,
|
||||
* filters: array<string, string>,
|
||||
* inAppSearch: bool,
|
||||
* }
|
||||
|
|
@ -99,13 +99,13 @@ namespace OC\Core;
|
|||
* resourceUrl: string,
|
||||
* icon: string,
|
||||
* rounded: bool,
|
||||
* attributes: string[],
|
||||
* attributes: list<string>,
|
||||
* }
|
||||
*
|
||||
* @psalm-type CoreUnifiedSearchResult = array{
|
||||
* name: string,
|
||||
* isPaginated: bool,
|
||||
* entries: CoreUnifiedSearchResultEntry[],
|
||||
* entries: list<CoreUnifiedSearchResultEntry>,
|
||||
* cursor: int|string|null,
|
||||
* }
|
||||
*
|
||||
|
|
@ -171,16 +171,16 @@ namespace OC\Core;
|
|||
* @psalm-type CoreTaskProcessingTaskType = array{
|
||||
* name: string,
|
||||
* description: string,
|
||||
* inputShape: CoreTaskProcessingShape[],
|
||||
* inputShapeEnumValues: array{name: string, value: string}[][],
|
||||
* inputShape: list<CoreTaskProcessingShape>,
|
||||
* inputShapeEnumValues: list<list<array{name: string, value: string}>>,
|
||||
* inputShapeDefaults: array<string, numeric|string>,
|
||||
* optionalInputShape: CoreTaskProcessingShape[],
|
||||
* optionalInputShapeEnumValues: array{name: string, value: string}[][],
|
||||
* optionalInputShape: list<CoreTaskProcessingShape>,
|
||||
* optionalInputShapeEnumValues: list<list<array{name: string, value: string}>>,
|
||||
* optionalInputShapeDefaults: array<string, numeric|string>,
|
||||
* outputShape: CoreTaskProcessingShape[],
|
||||
* outputShapeEnumValues: array{name: string, value: string}[][],
|
||||
* optionalOutputShape: CoreTaskProcessingShape[],
|
||||
* optionalOutputShapeEnumValues: array{name: string, value: string}[][]}
|
||||
* outputShape: list<CoreTaskProcessingShape>,
|
||||
* outputShapeEnumValues: list<list<array{name: string, value: string}>>,
|
||||
* optionalOutputShape: list<CoreTaskProcessingShape>,
|
||||
* optionalOutputShapeEnumValues: list<list<array{name: string, value: string}>>,
|
||||
* }
|
||||
*
|
||||
* @psalm-type CoreTaskProcessingIO = array<string, numeric|list<numeric>|string|list<string>>
|
||||
|
|
@ -196,7 +196,10 @@ namespace OC\Core;
|
|||
* output: null|CoreTaskProcessingIO,
|
||||
* customId: ?string,
|
||||
* completionExpectedAt: ?int,
|
||||
* progress: ?float
|
||||
* progress: ?float,
|
||||
* scheduledAt: ?int,
|
||||
* startedAt: ?int,
|
||||
* endedAt: ?int,
|
||||
* }
|
||||
*
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -142,7 +142,10 @@
|
|||
"output",
|
||||
"customId",
|
||||
"completionExpectedAt",
|
||||
"progress"
|
||||
"progress",
|
||||
"scheduledAt",
|
||||
"startedAt",
|
||||
"endedAt"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
|
|
@ -194,6 +197,21 @@
|
|||
"type": "number",
|
||||
"format": "double",
|
||||
"nullable": true
|
||||
},
|
||||
"scheduledAt": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
},
|
||||
"startedAt": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
},
|
||||
"endedAt": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -538,7 +538,10 @@
|
|||
"output",
|
||||
"customId",
|
||||
"completionExpectedAt",
|
||||
"progress"
|
||||
"progress",
|
||||
"scheduledAt",
|
||||
"startedAt",
|
||||
"endedAt"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
|
|
@ -590,6 +593,21 @@
|
|||
"type": "number",
|
||||
"format": "double",
|
||||
"nullable": true
|
||||
},
|
||||
"scheduledAt": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
},
|
||||
"startedAt": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
},
|
||||
"endedAt": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -538,7 +538,10 @@
|
|||
"output",
|
||||
"customId",
|
||||
"completionExpectedAt",
|
||||
"progress"
|
||||
"progress",
|
||||
"scheduledAt",
|
||||
"startedAt",
|
||||
"endedAt"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
|
|
@ -590,6 +593,21 @@
|
|||
"type": "number",
|
||||
"format": "double",
|
||||
"nullable": true
|
||||
},
|
||||
"scheduledAt": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
},
|
||||
"startedAt": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
},
|
||||
"endedAt": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ class AppConfig implements IAppConfig {
|
|||
/**
|
||||
* @inheritDoc
|
||||
*
|
||||
* @return string[] list of app ids
|
||||
* @return list<string> list of app ids
|
||||
* @since 7.0.0
|
||||
*/
|
||||
public function getApps(): array {
|
||||
|
|
@ -92,7 +92,7 @@ class AppConfig implements IAppConfig {
|
|||
*
|
||||
* @param string $app id of the app
|
||||
*
|
||||
* @return string[] list of stored config keys
|
||||
* @return list<string> list of stored config keys
|
||||
* @since 29.0.0
|
||||
*/
|
||||
public function getKeys(string $app): array {
|
||||
|
|
|
|||
|
|
@ -118,11 +118,11 @@ class TemplateManager implements ITemplateManager {
|
|||
}
|
||||
|
||||
public function listTemplates(): array {
|
||||
return array_map(function (TemplateFileCreator $entry) {
|
||||
return array_values(array_map(function (TemplateFileCreator $entry) {
|
||||
return array_merge($entry->jsonSerialize(), [
|
||||
'templates' => $this->getTemplateFiles($entry)
|
||||
]);
|
||||
}, $this->listCreators());
|
||||
}, $this->listCreators()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -180,6 +180,9 @@ class TemplateManager implements ITemplateManager {
|
|||
throw new NotFoundException();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<Template>
|
||||
*/
|
||||
private function getTemplateFiles(TemplateFileCreator $type): array {
|
||||
$templates = [];
|
||||
foreach ($this->getRegisteredProviders() as $provider) {
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ abstract class Backend implements \OCP\GroupInterface {
|
|||
/**
|
||||
* Get all groups a user belongs to
|
||||
* @param string $uid Name of the user
|
||||
* @return array an array of group names
|
||||
* @return list<string> an array of group names
|
||||
*
|
||||
* This function fetches all groups a user belongs to. It does not check
|
||||
* if the user exists at all.
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ class Database extends ABackend implements
|
|||
/**
|
||||
* Get all groups a user belongs to
|
||||
* @param string $uid Name of the user
|
||||
* @return array an array of group names
|
||||
* @return list<string> an array of group names
|
||||
*
|
||||
* This function fetches all groups a user belongs to. It does not check
|
||||
* if the user exists at all.
|
||||
|
|
|
|||
|
|
@ -361,7 +361,7 @@ class Manager extends PublicEmitter implements IGroupManager {
|
|||
* get a list of group ids for a user
|
||||
*
|
||||
* @param IUser $user
|
||||
* @return string[] with group ids
|
||||
* @return list<string> with group ids
|
||||
*/
|
||||
public function getUserGroupIds(IUser $user): array {
|
||||
return $this->getUserIdGroupIds($user->getUID());
|
||||
|
|
@ -369,7 +369,7 @@ class Manager extends PublicEmitter implements IGroupManager {
|
|||
|
||||
/**
|
||||
* @param string $uid the user id
|
||||
* @return string[]
|
||||
* @return list<string>
|
||||
*/
|
||||
private function getUserIdGroupIds(string $uid): array {
|
||||
if (!isset($this->cachedUserGroups[$uid])) {
|
||||
|
|
|
|||
|
|
@ -194,12 +194,12 @@ class OCMProvider implements IOCMProvider {
|
|||
* enabled: bool,
|
||||
* apiVersion: string,
|
||||
* endPoint: string,
|
||||
* resourceTypes: array{
|
||||
* name: string,
|
||||
* shareTypes: string[],
|
||||
* protocols: array<string, string>
|
||||
* }[]
|
||||
* }
|
||||
* resourceTypes: list<array{
|
||||
* name: string,
|
||||
* shareTypes: list<string>,
|
||||
* protocols: array<string, string>
|
||||
* }>,
|
||||
* }
|
||||
*/
|
||||
public function jsonSerialize(): array {
|
||||
$resourceTypes = [];
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ use OCP\OCM\IOCMResource;
|
|||
*/
|
||||
class OCMResource implements IOCMResource {
|
||||
private string $name = '';
|
||||
/** @var string[] */
|
||||
/** @var list<string> */
|
||||
private array $shareTypes = [];
|
||||
/** @var array<string, string> */
|
||||
private array $protocols = [];
|
||||
|
|
@ -40,7 +40,7 @@ class OCMResource implements IOCMResource {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param string[] $shareTypes
|
||||
* @param list<string> $shareTypes
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
|
|
@ -51,7 +51,7 @@ class OCMResource implements IOCMResource {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
* @return list<string>
|
||||
*/
|
||||
public function getShareTypes(): array {
|
||||
return $this->shareTypes;
|
||||
|
|
@ -92,7 +92,7 @@ class OCMResource implements IOCMResource {
|
|||
/**
|
||||
* @return array{
|
||||
* name: string,
|
||||
* shareTypes: string[],
|
||||
* shareTypes: list<string>,
|
||||
* protocols: array<string, string>
|
||||
* }
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ namespace OC\Search;
|
|||
|
||||
use InvalidArgumentException;
|
||||
use OC\AppFramework\Bootstrap\Coordinator;
|
||||
use OC\Core\ResponseDefinitions;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\IUser;
|
||||
use OCP\Search\FilterDefinition;
|
||||
|
|
@ -43,6 +44,7 @@ use function array_map;
|
|||
* results are awaited or shown as they come in.
|
||||
*
|
||||
* @see IProvider::search() for the arguments of the individual search requests
|
||||
* @psalm-import-type CoreUnifiedSearchProvider from ResponseDefinitions
|
||||
*/
|
||||
class SearchComposer {
|
||||
/**
|
||||
|
|
@ -156,7 +158,7 @@ class SearchComposer {
|
|||
* @param string $route the route the user is currently at
|
||||
* @param array $routeParameters the parameters of the route the user is currently at
|
||||
*
|
||||
* @return array
|
||||
* @return list<CoreUnifiedSearchProvider>
|
||||
*/
|
||||
public function getProviders(string $route, array $routeParameters): array {
|
||||
$this->loadLazyProviders();
|
||||
|
|
@ -183,7 +185,7 @@ class SearchComposer {
|
|||
'name' => $provider->getName(),
|
||||
'icon' => $this->fetchIcon($appId, $provider->getId()),
|
||||
'order' => $order,
|
||||
'triggers' => $triggers,
|
||||
'triggers' => array_values($triggers),
|
||||
'filters' => $this->getFiltersType($filters, $provider->getId()),
|
||||
'inAppSearch' => $provider instanceof IInAppSearch,
|
||||
];
|
||||
|
|
|
|||
|
|
@ -147,9 +147,9 @@ class Tags implements ITags {
|
|||
/**
|
||||
* Get the list of tags for the given ids.
|
||||
*
|
||||
* @param array $objIds array of object ids
|
||||
* @return array|false of tags id as key to array of tag names
|
||||
* or false if an error occurred
|
||||
* @param list<int> $objIds array of object ids
|
||||
* @return array<int, list<string>>|false of tags id as key to array of tag names
|
||||
* or false if an error occurred
|
||||
*/
|
||||
public function getTagsForObjects(array $objIds) {
|
||||
$entries = [];
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ class TeamManager implements ITeamManager {
|
|||
array_push($resources, ...$provider->getSharedWith($teamId));
|
||||
}
|
||||
|
||||
return $resources;
|
||||
return array_values($resources);
|
||||
}
|
||||
|
||||
public function getTeamsForResource(string $providerId, string $resourceId, string $userId): array {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ class ChangesCheck {
|
|||
|
||||
/**
|
||||
* @throws DoesNotExistException
|
||||
* @return array{changelogURL: string, whatsNew: array<string, array{admin: string[], regular: string[]}>}
|
||||
* @return array{changelogURL: string, whatsNew: array<string, array{admin: list<string>, regular: list<string>}>}
|
||||
*/
|
||||
public function getChangesForVersion(string $version): array {
|
||||
$version = $this->normalizeVersion($version);
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ class OC_App {
|
|||
* @param bool $forceRefresh whether to refresh the cache
|
||||
* @param bool $all whether to return apps for all users, not only the
|
||||
* currently logged in one
|
||||
* @return string[]
|
||||
* @return list<string>
|
||||
*/
|
||||
public static function getEnabledApps(bool $forceRefresh = false, bool $all = false): array {
|
||||
if (!\OC::$server->getSystemConfig()->getValue('installed', false)) {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ declare(strict_types=1);
|
|||
|
||||
namespace OCP\Dashboard;
|
||||
|
||||
use OCP\Dashboard\Model\WidgetItem;
|
||||
|
||||
/**
|
||||
* interface IAPIWidget
|
||||
*
|
||||
|
|
@ -16,7 +18,7 @@ namespace OCP\Dashboard;
|
|||
*/
|
||||
interface IAPIWidget extends IWidget {
|
||||
/**
|
||||
* @return \OCP\Dashboard\Model\WidgetItem[] The widget items
|
||||
* @return list<WidgetItem> The widget items
|
||||
* @since 22.0.0
|
||||
*/
|
||||
public function getItems(string $userId, ?string $since = null, int $limit = 7): array;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ interface IButtonWidget extends IWidget {
|
|||
* Get the buttons to show on the widget
|
||||
*
|
||||
* @param string $userId
|
||||
* @return WidgetButton[]
|
||||
* @return list<WidgetButton>
|
||||
* @since 25.0.0
|
||||
*/
|
||||
public function getWidgetButtons(string $userId): array;
|
||||
|
|
|
|||
|
|
@ -134,8 +134,14 @@ final class WidgetItem implements JsonSerializable {
|
|||
|
||||
/**
|
||||
* @since 22.0.0
|
||||
*
|
||||
* @return array
|
||||
* @return array{
|
||||
* subtitle: string,
|
||||
* title: string,
|
||||
* link: string,
|
||||
* iconUrl: string,
|
||||
* overlayIconUrl: string,
|
||||
* sinceId: string,
|
||||
* }
|
||||
*/
|
||||
public function jsonSerialize(): array {
|
||||
return [
|
||||
|
|
|
|||
|
|
@ -32,6 +32,15 @@ abstract class Field implements \JsonSerializable {
|
|||
abstract public function setValue(mixed $value): void;
|
||||
|
||||
/**
|
||||
* @return array{
|
||||
* index: string,
|
||||
* type: string,
|
||||
* alias: ?string,
|
||||
* tag: ?string,
|
||||
* id: ?int,
|
||||
* content?: string,
|
||||
* checked?: bool,
|
||||
* }
|
||||
* @since 30.0.0
|
||||
*/
|
||||
public function jsonSerialize(): array {
|
||||
|
|
|
|||
|
|
@ -37,6 +37,15 @@ class CheckBoxField extends Field {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return array{
|
||||
* index: string,
|
||||
* type: string,
|
||||
* alias: ?string,
|
||||
* tag: ?string,
|
||||
* id: ?int,
|
||||
* content?: string,
|
||||
* checked?: bool,
|
||||
* }
|
||||
* @since 30.0.0
|
||||
*/
|
||||
public function jsonSerialize(): array {
|
||||
|
|
|
|||
|
|
@ -37,6 +37,15 @@ class RichTextField extends Field {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return array{
|
||||
* index: string,
|
||||
* type: string,
|
||||
* alias: ?string,
|
||||
* tag: ?string,
|
||||
* id: ?int,
|
||||
* content?: string,
|
||||
* checked?: bool,
|
||||
* }
|
||||
* @since 30.0.0
|
||||
*/
|
||||
public function jsonSerialize(): array {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ interface ITemplateManager {
|
|||
/**
|
||||
* Get a list of available file creators and their offered templates
|
||||
*
|
||||
* @return array
|
||||
* @return list<array{app: string, label: string, extension: string, iconClass: ?string, iconSvgInline: ?string, mimetypes: list<string>, ratio: ?float, actionLabel: string, templates: list<Template>}>
|
||||
* @since 21.0.0
|
||||
*/
|
||||
public function listTemplates(): array;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ final class Template implements \JsonSerializable {
|
|||
private $hasPreview = false;
|
||||
/** @var string|null */
|
||||
private $previewUrl = null;
|
||||
/** @var array */
|
||||
/** @var list<Field> */
|
||||
private $fields = [];
|
||||
|
||||
/**
|
||||
|
|
@ -51,6 +51,7 @@ final class Template implements \JsonSerializable {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param list<Field> $fields
|
||||
* @since 30.0.0
|
||||
*/
|
||||
public function setFields(array $fields): void {
|
||||
|
|
@ -58,6 +59,29 @@ final class Template implements \JsonSerializable {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return array{
|
||||
* templateType: string,
|
||||
* templateId: string,
|
||||
* basename: string,
|
||||
* etag: string,
|
||||
* fileid: int,
|
||||
* filename: string,
|
||||
* lastmod: int,
|
||||
* mime: string,
|
||||
* size: int|float,
|
||||
* type: string,
|
||||
* hasPreview: bool,
|
||||
* previewUrl: ?string,
|
||||
* fields: list<array{
|
||||
* index: string,
|
||||
* type: string,
|
||||
* alias: ?string,
|
||||
* tag: ?string,
|
||||
* id: ?int,
|
||||
* content?: string,
|
||||
* checked?: bool,
|
||||
* }>,
|
||||
* }
|
||||
* @since 21.0.0
|
||||
*/
|
||||
public function jsonSerialize(): array {
|
||||
|
|
@ -74,7 +98,7 @@ final class Template implements \JsonSerializable {
|
|||
'type' => $this->file->getType(),
|
||||
'hasPreview' => $this->hasPreview,
|
||||
'previewUrl' => $this->previewUrl,
|
||||
'fields' => $this->fields
|
||||
'fields' => array_map(static fn (Field $field) => $field->jsonSerialize(), $this->fields),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue