aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public
diff options
context:
space:
mode:
Diffstat (limited to 'lib/public')
-rw-r--r--lib/public/Accounts/PropertyDoesNotExistException.php1
-rw-r--r--lib/public/Activity/IEventMerger.php1
-rw-r--r--lib/public/Activity/IFilter.php1
-rw-r--r--lib/public/Activity/IProvider.php1
-rw-r--r--lib/public/Activity/ISetting.php1
-rw-r--r--lib/public/App/AppPathNotFoundException.php1
-rw-r--r--lib/public/App/Events/AppUpdateEvent.php8
-rw-r--r--lib/public/App/IAppManager.php4
-rw-r--r--lib/public/AppFramework/App.php24
-rw-r--r--lib/public/AppFramework/Controller.php4
-rw-r--r--lib/public/AppFramework/Db/Entity.php8
-rw-r--r--lib/public/AppFramework/Db/QBMapper.php4
-rw-r--r--lib/public/AppFramework/Http/Attribute/RequestHeader.php34
-rw-r--r--lib/public/AppFramework/Http/FileDisplayResponse.php1
-rw-r--r--lib/public/AppFramework/Http/Response.php4
-rw-r--r--lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php1
-rw-r--r--lib/public/AppFramework/Http/Template/IMenuAction.php1
-rw-r--r--lib/public/AppFramework/Http/Template/LinkMenuAction.php1
-rw-r--r--lib/public/AppFramework/Http/Template/PublicTemplateResponse.php2
-rw-r--r--lib/public/AppFramework/Http/Template/SimpleMenuAction.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSBadRequestException.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSException.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSForbiddenException.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSNotFoundException.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSPreconditionFailedException.php1
-rw-r--r--lib/public/AppFramework/PublicShareController.php4
-rw-r--r--lib/public/Authentication/Exceptions/CredentialsUnavailableException.php1
-rw-r--r--lib/public/Authentication/Exceptions/PasswordUnavailableException.php1
-rw-r--r--lib/public/Authentication/IProvideUserSecretBackend.php1
-rw-r--r--lib/public/Authentication/LoginCredentials/ICredentials.php1
-rw-r--r--lib/public/BackgroundJob/TimedJob.php4
-rw-r--r--lib/public/BeforeSabrePubliclyLoadedEvent.php1
-rw-r--r--lib/public/Calendar/BackendTemporarilyUnavailableException.php1
-rw-r--r--lib/public/Calendar/ICalendar.php72
-rw-r--r--lib/public/Calendar/ICalendarExport.php2
-rw-r--r--lib/public/Calendar/ICalendarIsEnabled.php2
-rw-r--r--lib/public/Calendar/ICalendarIsShared.php2
-rw-r--r--lib/public/Calendar/ICalendarIsWritable.php2
-rw-r--r--lib/public/Calendar/IMetadataProvider.php1
-rw-r--r--lib/public/Calendar/Resource/IBackend.php1
-rw-r--r--lib/public/Calendar/Resource/IResource.php1
-rw-r--r--lib/public/Calendar/Resource/IResourceMetadata.php1
-rw-r--r--lib/public/Calendar/Room/IBackend.php1
-rw-r--r--lib/public/Calendar/Room/IRoom.php1
-rw-r--r--lib/public/Calendar/Room/IRoomMetadata.php1
-rw-r--r--lib/public/Capabilities/IPublicCapability.php1
-rw-r--r--lib/public/Collaboration/AutoComplete/IManager.php1
-rw-r--r--lib/public/Collaboration/AutoComplete/ISorter.php1
-rw-r--r--lib/public/Collaboration/Collaborators/ISearch.php1
-rw-r--r--lib/public/Collaboration/Collaborators/ISearchPlugin.php1
-rw-r--r--lib/public/Collaboration/Collaborators/ISearchResult.php1
-rw-r--r--lib/public/Collaboration/Collaborators/SearchResultType.php1
-rw-r--r--lib/public/Color.php1
-rw-r--r--lib/public/Comments/ICommentsEventHandler.php1
-rw-r--r--lib/public/Contacts/ContactsMenu/IAction.php1
-rw-r--r--lib/public/Contacts/ContactsMenu/IActionFactory.php1
-rw-r--r--lib/public/Contacts/ContactsMenu/IContactsStore.php1
-rw-r--r--lib/public/Contacts/ContactsMenu/IEntry.php1
-rw-r--r--lib/public/Contacts/ContactsMenu/ILinkAction.php1
-rw-r--r--lib/public/DB/ISchemaWrapper.php1
-rw-r--r--lib/public/DB/QueryBuilder/IFunctionBuilder.php1
-rw-r--r--lib/public/DirectEditing/ACreateEmpty.php1
-rw-r--r--lib/public/DirectEditing/ACreateFromTemplate.php1
-rw-r--r--lib/public/DirectEditing/ATemplate.php1
-rw-r--r--lib/public/DirectEditing/IToken.php1
-rw-r--r--lib/public/DirectEditing/RegisterDirectEditorEvent.php1
-rw-r--r--lib/public/EventDispatcher/JsonSerializer.php16
-rw-r--r--lib/public/Federation/Exceptions/ActionNotSupportedException.php1
-rw-r--r--lib/public/Federation/Exceptions/AuthenticationFailedException.php1
-rw-r--r--lib/public/Federation/Exceptions/BadRequestException.php1
-rw-r--r--lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php1
-rw-r--r--lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php1
-rw-r--r--lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php1
-rw-r--r--lib/public/Federation/ICloudFederationFactory.php1
-rw-r--r--lib/public/Federation/ICloudFederationNotification.php1
-rw-r--r--lib/public/Federation/ICloudFederationProvider.php1
-rw-r--r--lib/public/Federation/ICloudFederationProviderManager.php1
-rw-r--r--lib/public/Federation/ICloudFederationShare.php1
-rw-r--r--lib/public/Files.php39
-rw-r--r--lib/public/Files/Config/Event/UserMountAddedEvent.php26
-rw-r--r--lib/public/Files/Config/Event/UserMountRemovedEvent.php26
-rw-r--r--lib/public/Files/Config/Event/UserMountUpdatedEvent.php27
-rw-r--r--lib/public/Files/Config/ICachedMountFileInfo.php1
-rw-r--r--lib/public/Files/DavUtil.php1
-rw-r--r--lib/public/Files/EmptyFileNameException.php1
-rw-r--r--lib/public/Files/Folder.php11
-rw-r--r--lib/public/Files/GenericFileException.php1
-rw-r--r--lib/public/Files/IAppData.php1
-rw-r--r--lib/public/Files/IFilenameValidator.php2
-rw-r--r--lib/public/Files/InvalidDirectoryException.php1
-rw-r--r--lib/public/Files/Notify/IChange.php1
-rw-r--r--lib/public/Files/Notify/INotifyHandler.php1
-rw-r--r--lib/public/Files/Notify/IRenameChange.php1
-rw-r--r--lib/public/Files/Search/ISearchBinaryOperator.php1
-rw-r--r--lib/public/Files/Search/ISearchComparison.php3
-rw-r--r--lib/public/Files/Search/ISearchOperator.php1
-rw-r--r--lib/public/Files/Search/ISearchOrder.php1
-rw-r--r--lib/public/Files/Search/ISearchQuery.php1
-rw-r--r--lib/public/Files/SimpleFS/ISimpleFile.php1
-rw-r--r--lib/public/Files/SimpleFS/ISimpleFolder.php1
-rw-r--r--lib/public/Files/SimpleFS/ISimpleRoot.php1
-rw-r--r--lib/public/Files/Storage/IChunkedFileWrite.php1
-rw-r--r--lib/public/Files/Storage/IDisableEncryptionStorage.php1
-rw-r--r--lib/public/Files/Storage/INotifyStorage.php1
-rw-r--r--lib/public/Files/Template/BeforeGetTemplatesEvent.php14
-rw-r--r--lib/public/Files/Template/ITemplateManager.php9
-rw-r--r--lib/public/Files/Template/RegisterTemplateCreatorEvent.php1
-rw-r--r--lib/public/GlobalScale/IConfig.php1
-rw-r--r--lib/public/Group/Backend/INamedBackend.php1
-rw-r--r--lib/public/Http/Client/IResponse.php3
-rw-r--r--lib/public/IAddressBook.php1
-rw-r--r--lib/public/IAppConfig.php2
-rw-r--r--lib/public/IPreview.php4
-rw-r--r--lib/public/IRequest.php10
-rw-r--r--lib/public/IServerContainer.php270
-rw-r--r--lib/public/IUser.php9
-rw-r--r--lib/public/LDAP/IDeletionFlagSupport.php3
-rw-r--r--lib/public/LDAP/ILDAPProvider.php1
-rw-r--r--lib/public/LDAP/ILDAPProviderFactory.php1
-rw-r--r--lib/public/Lockdown/ILockdownManager.php1
-rw-r--r--lib/public/Log/IFileBased.php1
-rw-r--r--lib/public/Log/ILogFactory.php1
-rw-r--r--lib/public/Log/IWriter.php1
-rw-r--r--lib/public/Log/RotationTrait.php1
-rw-r--r--lib/public/Mail/Provider/IAddress.php2
-rw-r--r--lib/public/Mail/Provider/IManager.php2
-rw-r--r--lib/public/Mail/Provider/IMessage.php4
-rw-r--r--lib/public/Migration/Attributes/AddColumn.php4
-rw-r--r--lib/public/Migration/Attributes/DropColumn.php4
-rw-r--r--lib/public/Migration/Attributes/ModifyColumn.php4
-rw-r--r--lib/public/OCM/ICapabilityAwareOCMProvider.php60
-rw-r--r--lib/public/OCM/IOCMProvider.php1
-rw-r--r--lib/public/Remote/Api/IApiCollection.php1
-rw-r--r--lib/public/Remote/Api/IApiFactory.php1
-rw-r--r--lib/public/Remote/Api/ICapabilitiesApi.php1
-rw-r--r--lib/public/Remote/Api/IUserApi.php1
-rw-r--r--lib/public/Remote/ICredentials.php1
-rw-r--r--lib/public/Remote/IInstance.php1
-rw-r--r--lib/public/Remote/IInstanceFactory.php1
-rw-r--r--lib/public/Remote/IUser.php1
-rw-r--r--lib/public/RichObjectStrings/Definitions.php7
-rw-r--r--lib/public/RichObjectStrings/IValidator.php1
-rw-r--r--lib/public/RichObjectStrings/InvalidObjectExeption.php1
-rw-r--r--lib/public/Route/IRoute.php4
-rw-r--r--lib/public/Security/IContentSecurityPolicyManager.php2
-rw-r--r--lib/public/Settings/IDeclarativeSettingsForm.php1
-rw-r--r--lib/public/Settings/IIconSection.php1
-rw-r--r--lib/public/Settings/IManager.php1
-rw-r--r--lib/public/Settings/ISettings.php1
-rw-r--r--lib/public/Share/IAttributes.php1
-rw-r--r--lib/public/Share/IManager.php8
-rw-r--r--lib/public/Share/IProviderFactory.php5
-rw-r--r--lib/public/Share/IShare.php7
-rw-r--r--lib/public/Share/IShareHelper.php1
-rw-r--r--lib/public/TaskProcessing/IManager.php4
-rw-r--r--lib/public/Teams/ITeamManager.php1
-rw-r--r--lib/public/Teams/ITeamResourceProvider.php1
-rw-r--r--lib/public/Teams/Team.php1
-rw-r--r--lib/public/Teams/TeamResource.php1
-rw-r--r--lib/public/Template.php4
-rw-r--r--lib/public/Util.php44
-rw-r--r--lib/public/WorkflowEngine/ICheck.php1
-rw-r--r--lib/public/WorkflowEngine/IManager.php1
-rw-r--r--lib/public/WorkflowEngine/IOperation.php1
164 files changed, 587 insertions, 347 deletions
diff --git a/lib/public/Accounts/PropertyDoesNotExistException.php b/lib/public/Accounts/PropertyDoesNotExistException.php
index d0f10cdf12f..1d27ef1df30 100644
--- a/lib/public/Accounts/PropertyDoesNotExistException.php
+++ b/lib/public/Accounts/PropertyDoesNotExistException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Activity/IEventMerger.php b/lib/public/Activity/IEventMerger.php
index e9355c88004..5d0f691f2d4 100644
--- a/lib/public/Activity/IEventMerger.php
+++ b/lib/public/Activity/IEventMerger.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Activity/IFilter.php b/lib/public/Activity/IFilter.php
index 75d53650127..008de6f5bca 100644
--- a/lib/public/Activity/IFilter.php
+++ b/lib/public/Activity/IFilter.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Activity/IProvider.php b/lib/public/Activity/IProvider.php
index 17fffbb26e2..dec4e7ade64 100644
--- a/lib/public/Activity/IProvider.php
+++ b/lib/public/Activity/IProvider.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Activity/ISetting.php b/lib/public/Activity/ISetting.php
index c5c5c523477..1304ab8c658 100644
--- a/lib/public/Activity/ISetting.php
+++ b/lib/public/Activity/ISetting.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/App/AppPathNotFoundException.php b/lib/public/App/AppPathNotFoundException.php
index 5e3ea7a9919..56d6571ea68 100644
--- a/lib/public/App/AppPathNotFoundException.php
+++ b/lib/public/App/AppPathNotFoundException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/App/Events/AppUpdateEvent.php b/lib/public/App/Events/AppUpdateEvent.php
index 344e7def080..2cf59ff7949 100644
--- a/lib/public/App/Events/AppUpdateEvent.php
+++ b/lib/public/App/Events/AppUpdateEvent.php
@@ -16,15 +16,13 @@ use OCP\EventDispatcher\Event;
* @since 27.0.0
*/
class AppUpdateEvent extends Event {
- private string $appId;
-
/**
* @since 27.0.0
*/
- public function __construct(string $appId) {
+ public function __construct(
+ private readonly string $appId,
+ ) {
parent::__construct();
-
- $this->appId = $appId;
}
/**
diff --git a/lib/public/App/IAppManager.php b/lib/public/App/IAppManager.php
index 67ef2d796be..20019ce1ffd 100644
--- a/lib/public/App/IAppManager.php
+++ b/lib/public/App/IAppManager.php
@@ -57,7 +57,7 @@ interface IAppManager {
* @return array<string, string>
* @since 32.0.0
*/
- public function getAppInstalledVersions(): array;
+ public function getAppInstalledVersions(bool $onlyEnabled = false): array;
/**
* Returns the app icon or null if none is found
@@ -184,7 +184,7 @@ interface IAppManager {
* List all apps enabled for a user
*
* @param \OCP\IUser $user
- * @return string[]
+ * @return list<string>
* @since 8.1.0
*/
public function getEnabledAppsForUser(IUser $user);
diff --git a/lib/public/AppFramework/App.php b/lib/public/AppFramework/App.php
index 6860de7c324..c00fde47418 100644
--- a/lib/public/AppFramework/App.php
+++ b/lib/public/AppFramework/App.php
@@ -9,6 +9,7 @@ declare(strict_types=1);
*/
namespace OCP\AppFramework;
+use OC\AppFramework\Utility\SimpleContainer;
use OC\ServerContainer;
use OCP\IConfig;
use OCP\Server;
@@ -57,16 +58,23 @@ class App {
$classNameParts = explode('\\', trim($applicationClassName, '\\'));
foreach ($e->getTrace() as $step) {
- if (isset($step['class'], $step['function'], $step['args'][0]) &&
- $step['class'] === ServerContainer::class &&
- $step['function'] === 'query' &&
- $step['args'][0] === $applicationClassName) {
+ if (isset($step['class'], $step['function'], $step['args'][0])
+ && $step['class'] === ServerContainer::class
+ && $step['function'] === 'query'
+ && $step['args'][0] === $applicationClassName) {
$setUpViaQuery = true;
break;
- } elseif (isset($step['class'], $step['function'], $step['args'][0]) &&
- $step['class'] === ServerContainer::class &&
- $step['function'] === 'getAppContainer' &&
- $step['args'][1] === $classNameParts[1]) {
+ } elseif (isset($step['class'], $step['function'], $step['args'][0])
+ && $step['class'] === ServerContainer::class
+ && $step['function'] === 'getAppContainer'
+ && $step['args'][1] === $classNameParts[1]) {
+ $setUpViaQuery = true;
+ break;
+ } elseif (isset($step['class'], $step['function'], $step['args'][0])
+ && $step['class'] === SimpleContainer::class
+ && preg_match('/{closure:OC\\\\AppFramework\\\\Utility\\\\SimpleContainer::buildClass\\(\\):\\d+}/', $step['function'])
+ && $step['args'][0] === $this) {
+ /* We are setup through a lazy ghost, fine */
$setUpViaQuery = true;
break;
}
diff --git a/lib/public/AppFramework/Controller.php b/lib/public/AppFramework/Controller.php
index 7c25b3382e7..cdeaac99366 100644
--- a/lib/public/AppFramework/Controller.php
+++ b/lib/public/AppFramework/Controller.php
@@ -135,7 +135,7 @@ abstract class Controller {
return $responder($response);
}
- throw new \DomainException('No responder registered for format ' .
- $format . '!');
+ throw new \DomainException('No responder registered for format '
+ . $format . '!');
}
}
diff --git a/lib/public/AppFramework/Db/Entity.php b/lib/public/AppFramework/Db/Entity.php
index a44a9a8bced..3094070af5f 100644
--- a/lib/public/AppFramework/Db/Entity.php
+++ b/lib/public/AppFramework/Db/Entity.php
@@ -159,8 +159,8 @@ abstract class Entity {
if (property_exists($this, $name)) {
return $this->$name;
} else {
- throw new \BadFunctionCallException($name .
- ' is not a valid attribute');
+ throw new \BadFunctionCallException($name
+ . ' is not a valid attribute');
}
}
@@ -180,8 +180,8 @@ abstract class Entity {
} elseif ($this->isGetterForBoolProperty($methodName)) {
return $this->getter(lcfirst(substr($methodName, 2)));
} else {
- throw new \BadFunctionCallException($methodName .
- ' does not exist');
+ throw new \BadFunctionCallException($methodName
+ . ' does not exist');
}
}
diff --git a/lib/public/AppFramework/Db/QBMapper.php b/lib/public/AppFramework/Db/QBMapper.php
index 4071a4a47a4..7fb5b2a9afd 100644
--- a/lib/public/AppFramework/Db/QBMapper.php
+++ b/lib/public/AppFramework/Db/QBMapper.php
@@ -296,8 +296,8 @@ abstract class QBMapper {
* @since 14.0.0
*/
private function buildDebugMessage(string $msg, IQueryBuilder $sql): string {
- return $msg .
- ': query "' . $sql->getSQL() . '"; ';
+ return $msg
+ . ': query "' . $sql->getSQL() . '"; ';
}
diff --git a/lib/public/AppFramework/Http/Attribute/RequestHeader.php b/lib/public/AppFramework/Http/Attribute/RequestHeader.php
new file mode 100644
index 00000000000..1d0fbbfa0c3
--- /dev/null
+++ b/lib/public/AppFramework/Http/Attribute/RequestHeader.php
@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCP\AppFramework\Http\Attribute;
+
+use Attribute;
+
+/**
+ * This attribute allows documenting request headers and is primarily intended for OpenAPI documentation.
+ * It should be added whenever you use a request header in a controller method, in order to properly describe the header and its functionality.
+ * There are no checks that ensure the header is set, so you will still need to do this yourself in the controller method.
+ *
+ * @since 32.0.0
+ */
+#[Attribute(Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)]
+class RequestHeader {
+ /**
+ * @param lowercase-string $name The name of the request header
+ * @param non-empty-string $description The description of the request header
+ * @param bool $indirect Allow indirect usage of the header for example in a middleware. Enabling this turns off the check which ensures that the header must be referenced in the controller method.
+ */
+ public function __construct(
+ protected string $name,
+ protected string $description,
+ protected bool $indirect = false,
+ ) {
+ }
+}
diff --git a/lib/public/AppFramework/Http/FileDisplayResponse.php b/lib/public/AppFramework/Http/FileDisplayResponse.php
index fda160eafc5..c18404b7d91 100644
--- a/lib/public/AppFramework/Http/FileDisplayResponse.php
+++ b/lib/public/AppFramework/Http/FileDisplayResponse.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/Http/Response.php b/lib/public/AppFramework/Http/Response.php
index 8037243d7a4..bdebb12c00d 100644
--- a/lib/public/AppFramework/Http/Response.php
+++ b/lib/public/AppFramework/Http/Response.php
@@ -96,7 +96,7 @@ class Response {
$time = \OCP\Server::get(ITimeFactory::class);
$expires->setTimestamp($time->getTime());
$expires->add(new \DateInterval('PT' . $cacheSeconds . 'S'));
- $this->addHeader('Expires', $expires->format(\DateTimeInterface::RFC2822));
+ $this->addHeader('Expires', $expires->format(\DateTimeInterface::RFC7231));
} else {
$this->addHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
unset($this->headers['Expires']);
@@ -238,7 +238,7 @@ class Response {
];
if ($this->lastModified) {
- $mergeWith['Last-Modified'] = $this->lastModified->format(\DateTimeInterface::RFC2822);
+ $mergeWith['Last-Modified'] = $this->lastModified->format(\DateTimeInterface::RFC7231);
}
if ($this->ETag) {
diff --git a/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php b/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php
index 4f958a2620c..281bb559a10 100644
--- a/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/Http/Template/IMenuAction.php b/lib/public/AppFramework/Http/Template/IMenuAction.php
index 50b346add86..124e95fe019 100644
--- a/lib/public/AppFramework/Http/Template/IMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/IMenuAction.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/Http/Template/LinkMenuAction.php b/lib/public/AppFramework/Http/Template/LinkMenuAction.php
index 6ae1fcdf13b..391802a1dce 100644
--- a/lib/public/AppFramework/Http/Template/LinkMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/LinkMenuAction.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php b/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php
index ef5d2f67f7e..4c156cdecea 100644
--- a/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php
+++ b/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -44,6 +45,7 @@ class PublicTemplateResponse extends TemplateResponse {
) {
parent::__construct($appName, $templateName, $params, 'public', $status, $headers);
\OCP\Util::addScript('core', 'public-page-menu');
+ \OCP\Util::addScript('core', 'public-page-user-menu');
$state = \OCP\Server::get(IInitialStateService::class);
$state->provideLazyInitialState('core', 'public-page-menu', function () {
diff --git a/lib/public/AppFramework/Http/Template/SimpleMenuAction.php b/lib/public/AppFramework/Http/Template/SimpleMenuAction.php
index 4cbbd5302d7..03cb9b4c7ea 100644
--- a/lib/public/AppFramework/Http/Template/SimpleMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/SimpleMenuAction.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/OCS/OCSBadRequestException.php b/lib/public/AppFramework/OCS/OCSBadRequestException.php
index c229468fb0d..77b8ec6c86d 100644
--- a/lib/public/AppFramework/OCS/OCSBadRequestException.php
+++ b/lib/public/AppFramework/OCS/OCSBadRequestException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/OCS/OCSException.php b/lib/public/AppFramework/OCS/OCSException.php
index 962bad830e7..02901992f8d 100644
--- a/lib/public/AppFramework/OCS/OCSException.php
+++ b/lib/public/AppFramework/OCS/OCSException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/OCS/OCSForbiddenException.php b/lib/public/AppFramework/OCS/OCSForbiddenException.php
index 03b1db6104f..0d001377043 100644
--- a/lib/public/AppFramework/OCS/OCSForbiddenException.php
+++ b/lib/public/AppFramework/OCS/OCSForbiddenException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/OCS/OCSNotFoundException.php b/lib/public/AppFramework/OCS/OCSNotFoundException.php
index 997b0c390f9..67cea9ed759 100644
--- a/lib/public/AppFramework/OCS/OCSNotFoundException.php
+++ b/lib/public/AppFramework/OCS/OCSNotFoundException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/OCS/OCSPreconditionFailedException.php b/lib/public/AppFramework/OCS/OCSPreconditionFailedException.php
index 2e67263bcb9..4fc2820eaec 100644
--- a/lib/public/AppFramework/OCS/OCSPreconditionFailedException.php
+++ b/lib/public/AppFramework/OCS/OCSPreconditionFailedException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/AppFramework/PublicShareController.php b/lib/public/AppFramework/PublicShareController.php
index 458606455d1..999b3827565 100644
--- a/lib/public/AppFramework/PublicShareController.php
+++ b/lib/public/AppFramework/PublicShareController.php
@@ -98,8 +98,8 @@ abstract class PublicShareController extends Controller {
}
// If we are authenticated properly
- if ($this->session->get('public_link_authenticated_token') === $this->getToken() &&
- $this->session->get('public_link_authenticated_password_hash') === $this->getPasswordHash()) {
+ if ($this->session->get('public_link_authenticated_token') === $this->getToken()
+ && $this->session->get('public_link_authenticated_password_hash') === $this->getPasswordHash()) {
return true;
}
diff --git a/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php b/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php
index 835fd1eac9d..6ca8e68ed95 100644
--- a/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php
+++ b/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Authentication/Exceptions/PasswordUnavailableException.php b/lib/public/Authentication/Exceptions/PasswordUnavailableException.php
index 6a425f4ddd9..89e254e8ba1 100644
--- a/lib/public/Authentication/Exceptions/PasswordUnavailableException.php
+++ b/lib/public/Authentication/Exceptions/PasswordUnavailableException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Authentication/IProvideUserSecretBackend.php b/lib/public/Authentication/IProvideUserSecretBackend.php
index c005f6c9d59..dfab35c5f48 100644
--- a/lib/public/Authentication/IProvideUserSecretBackend.php
+++ b/lib/public/Authentication/IProvideUserSecretBackend.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-only
diff --git a/lib/public/Authentication/LoginCredentials/ICredentials.php b/lib/public/Authentication/LoginCredentials/ICredentials.php
index a1c802f73b0..9848bbbe821 100644
--- a/lib/public/Authentication/LoginCredentials/ICredentials.php
+++ b/lib/public/Authentication/LoginCredentials/ICredentials.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/BackgroundJob/TimedJob.php b/lib/public/BackgroundJob/TimedJob.php
index 296bd9e4e32..486c03c5fda 100644
--- a/lib/public/BackgroundJob/TimedJob.php
+++ b/lib/public/BackgroundJob/TimedJob.php
@@ -63,8 +63,8 @@ abstract class TimedJob extends Job {
* @since 24.0.0
*/
public function setTimeSensitivity(int $sensitivity): void {
- if ($sensitivity !== self::TIME_SENSITIVE &&
- $sensitivity !== self::TIME_INSENSITIVE) {
+ if ($sensitivity !== self::TIME_SENSITIVE
+ && $sensitivity !== self::TIME_INSENSITIVE) {
throw new \InvalidArgumentException('Invalid sensitivity');
}
diff --git a/lib/public/BeforeSabrePubliclyLoadedEvent.php b/lib/public/BeforeSabrePubliclyLoadedEvent.php
index c69cf867a43..33f9f8bc378 100644
--- a/lib/public/BeforeSabrePubliclyLoadedEvent.php
+++ b/lib/public/BeforeSabrePubliclyLoadedEvent.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Calendar/BackendTemporarilyUnavailableException.php b/lib/public/Calendar/BackendTemporarilyUnavailableException.php
index e02ef1a84fd..c2bbb1417ee 100644
--- a/lib/public/Calendar/BackendTemporarilyUnavailableException.php
+++ b/lib/public/Calendar/BackendTemporarilyUnavailableException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Calendar/ICalendar.php b/lib/public/Calendar/ICalendar.php
index 2dfc1ca632f..50152d1240b 100644
--- a/lib/public/Calendar/ICalendar.php
+++ b/lib/public/Calendar/ICalendar.php
@@ -8,10 +8,18 @@ declare(strict_types=1);
*/
namespace OCP\Calendar;
+use DateTimeInterface;
+
/**
* Interface ICalendar
*
* @since 13.0.0
+ *
+ * @psalm-type CalendarSearchOptions = array{
+ * timerange?: array{start?: DateTimeInterface, end?: DateTimeInterface},
+ * uid?: string,
+ * types?: string[],
+ * }
*/
interface ICalendar {
/**
@@ -41,13 +49,63 @@ interface ICalendar {
public function getDisplayColor(): ?string;
/**
- * @param string $pattern which should match within the $searchProperties
- * @param array $searchProperties defines the properties within the query pattern should match
- * @param array $options - optional parameters:
- * ['timerange' => ['start' => new DateTime(...), 'end' => new DateTime(...)]]
- * @param int|null $limit - limit number of search results
- * @param int|null $offset - offset for paging of search results
- * @return array an array of events/journals/todos which are arrays of key-value-pairs. the events are sorted by start date (closest first, furthest last)
+ * Search the current calendar for matching events.
+ *
+ * This method searches for events in the calendar that match a given pattern within specified properties.
+ * The search is case-insensitive. It supports optional parameters such as a time range, limit, and offset.
+ * The results are sorted by start date, with the closest events appearing first.
+ *
+ * @param string $pattern A string to search for within the events. The search is done case-insensitive.
+ * @param array $searchProperties Defines the properties within which the pattern should match.
+ * @param array $options Optional parameters for the search:
+ * - 'timerange' element that can have 'start' (DateTimeInterface), 'end' (DateTimeInterface), or both.
+ * - 'uid' element to look for events with a given uid.
+ * - 'types' element to only return events for a given type (e.g. VEVENT or VTODO)
+ * @psalm-param CalendarSearchOptions $options
+ * @param int|null $limit Limit the number of search results.
+ * @param int|null $offset For paging of search results.
+ * @return array An array of events/journals/todos which are arrays of key-value-pairs. The events are sorted by start date (closest first, furthest last).
+ *
+ * Implementation Details:
+ *
+ * An event can consist of many sub-events, typically the case for events with recurrence rules. On a database level,
+ * there's only one event stored (with a matching first occurrence and last occurrence timestamp). Expanding an event
+ * into sub-events is done on the backend level. Using limit, offset, and timerange comes with some drawbacks.
+ * When asking the database for events, the result is ordered by the primary key to guarantee a stable order.
+ * After expanding the events into sub-events, they are sorted by the date (closest to furthest).
+ *
+ * Usage Examples:
+ *
+ * 1) Find 7 events within the next two weeks:
+ *
+ * $dateTime = (new DateTimeImmutable())->setTimestamp($this->timeFactory->getTime());
+ * $inTwoWeeks = $dateTime->add(new DateInterval('P14D'));
+ *
+ * $calendar->search(
+ * '',
+ * [],
+ * ['timerange' => ['start' => $dateTime, 'end' => $inTwoWeeks]],
+ * 7
+ * );
+ *
+ * Note: When combining timerange and limit, it's possible that the expected outcome is not in the order you would expect.
+ *
+ * Example: Create 7 events for tomorrow, starting from 11:00, 30 minutes each. Then create an 8th event for tomorrow at 10:00.
+ * The above code will list the event at 11:00 first, missing the event at 10:00. The reason is the ordering by the primary key
+ * and expanding on the backend level. This is a technical limitation. The easiest workaround is to fetch more events
+ * than you actually need, with the downside of needing more resources.
+ *
+ * Related:
+ * - https://github.com/nextcloud/server/pull/45222
+ * - https://github.com/nextcloud/server/issues/53002
+ *
+ * 2) Find all events where the location property contains the string 'Berlin':
+ *
+ * $calendar->search(
+ * 'Berlin',
+ * ['LOCATION']
+ * );
+ *
* @since 13.0.0
*/
public function search(string $pattern, array $searchProperties = [], array $options = [], ?int $limit = null, ?int $offset = null): array;
diff --git a/lib/public/Calendar/ICalendarExport.php b/lib/public/Calendar/ICalendarExport.php
index 61b286e1668..d884c104a4a 100644
--- a/lib/public/Calendar/ICalendarExport.php
+++ b/lib/public/Calendar/ICalendarExport.php
@@ -16,7 +16,7 @@ use Generator;
* @since 32.0.0
*/
interface ICalendarExport {
-
+
/**
* Export objects
*
diff --git a/lib/public/Calendar/ICalendarIsEnabled.php b/lib/public/Calendar/ICalendarIsEnabled.php
index 868159d208f..6bcb487e3dc 100644
--- a/lib/public/Calendar/ICalendarIsEnabled.php
+++ b/lib/public/Calendar/ICalendarIsEnabled.php
@@ -13,7 +13,7 @@ namespace OCP\Calendar;
* @since 32.0.0
*/
interface ICalendarIsEnabled {
-
+
/**
* Indicates whether the calendar is enabled
*
diff --git a/lib/public/Calendar/ICalendarIsShared.php b/lib/public/Calendar/ICalendarIsShared.php
index 8121c826f4e..6f63c6eefd0 100644
--- a/lib/public/Calendar/ICalendarIsShared.php
+++ b/lib/public/Calendar/ICalendarIsShared.php
@@ -14,7 +14,7 @@ namespace OCP\Calendar;
* @since 31.0.0
*/
interface ICalendarIsShared {
-
+
/**
* Indicates whether the calendar is shared with the current user
*
diff --git a/lib/public/Calendar/ICalendarIsWritable.php b/lib/public/Calendar/ICalendarIsWritable.php
index f80769e9033..5bf08a25cdc 100644
--- a/lib/public/Calendar/ICalendarIsWritable.php
+++ b/lib/public/Calendar/ICalendarIsWritable.php
@@ -14,7 +14,7 @@ namespace OCP\Calendar;
* @since 31.0.0
*/
interface ICalendarIsWritable {
-
+
/**
* Indicates whether the calendar can be modified
*
diff --git a/lib/public/Calendar/IMetadataProvider.php b/lib/public/Calendar/IMetadataProvider.php
index bee840c955f..acacf7efdaf 100644
--- a/lib/public/Calendar/IMetadataProvider.php
+++ b/lib/public/Calendar/IMetadataProvider.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Calendar/Resource/IBackend.php b/lib/public/Calendar/Resource/IBackend.php
index b43d79e3618..23d37c102f2 100644
--- a/lib/public/Calendar/Resource/IBackend.php
+++ b/lib/public/Calendar/Resource/IBackend.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Calendar/Resource/IResource.php b/lib/public/Calendar/Resource/IResource.php
index f284eee955f..15abe4e2d0f 100644
--- a/lib/public/Calendar/Resource/IResource.php
+++ b/lib/public/Calendar/Resource/IResource.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Calendar/Resource/IResourceMetadata.php b/lib/public/Calendar/Resource/IResourceMetadata.php
index acf02bc3609..29f628d6f7f 100644
--- a/lib/public/Calendar/Resource/IResourceMetadata.php
+++ b/lib/public/Calendar/Resource/IResourceMetadata.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Calendar/Room/IBackend.php b/lib/public/Calendar/Room/IBackend.php
index 52ec2fa5948..c99f5fbdb72 100644
--- a/lib/public/Calendar/Room/IBackend.php
+++ b/lib/public/Calendar/Room/IBackend.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Calendar/Room/IRoom.php b/lib/public/Calendar/Room/IRoom.php
index 580c676331f..526e65b8f5f 100644
--- a/lib/public/Calendar/Room/IRoom.php
+++ b/lib/public/Calendar/Room/IRoom.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Calendar/Room/IRoomMetadata.php b/lib/public/Calendar/Room/IRoomMetadata.php
index 3fb4089b6a7..15d4b501e12 100644
--- a/lib/public/Calendar/Room/IRoomMetadata.php
+++ b/lib/public/Calendar/Room/IRoomMetadata.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Capabilities/IPublicCapability.php b/lib/public/Capabilities/IPublicCapability.php
index 3936d6032af..1a9dd965b16 100644
--- a/lib/public/Capabilities/IPublicCapability.php
+++ b/lib/public/Capabilities/IPublicCapability.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Collaboration/AutoComplete/IManager.php b/lib/public/Collaboration/AutoComplete/IManager.php
index 976bbfb7f18..2d5443b921d 100644
--- a/lib/public/Collaboration/AutoComplete/IManager.php
+++ b/lib/public/Collaboration/AutoComplete/IManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Collaboration/AutoComplete/ISorter.php b/lib/public/Collaboration/AutoComplete/ISorter.php
index 4b9f2b72e7c..1009092af6a 100644
--- a/lib/public/Collaboration/AutoComplete/ISorter.php
+++ b/lib/public/Collaboration/AutoComplete/ISorter.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Collaboration/Collaborators/ISearch.php b/lib/public/Collaboration/Collaborators/ISearch.php
index 95151d49a86..d2c5c85c07f 100644
--- a/lib/public/Collaboration/Collaborators/ISearch.php
+++ b/lib/public/Collaboration/Collaborators/ISearch.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Collaboration/Collaborators/ISearchPlugin.php b/lib/public/Collaboration/Collaborators/ISearchPlugin.php
index ec875d7d017..e55a095e2b6 100644
--- a/lib/public/Collaboration/Collaborators/ISearchPlugin.php
+++ b/lib/public/Collaboration/Collaborators/ISearchPlugin.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Collaboration/Collaborators/ISearchResult.php b/lib/public/Collaboration/Collaborators/ISearchResult.php
index 8e693caa677..bcc5a91ce99 100644
--- a/lib/public/Collaboration/Collaborators/ISearchResult.php
+++ b/lib/public/Collaboration/Collaborators/ISearchResult.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Collaboration/Collaborators/SearchResultType.php b/lib/public/Collaboration/Collaborators/SearchResultType.php
index c5a8b4e303a..3fdbefdcf1f 100644
--- a/lib/public/Collaboration/Collaborators/SearchResultType.php
+++ b/lib/public/Collaboration/Collaborators/SearchResultType.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Color.php b/lib/public/Color.php
index 5523dbd94cb..ed955b8f056 100644
--- a/lib/public/Color.php
+++ b/lib/public/Color.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Comments/ICommentsEventHandler.php b/lib/public/Comments/ICommentsEventHandler.php
index dc0a554ff11..148ead2c367 100644
--- a/lib/public/Comments/ICommentsEventHandler.php
+++ b/lib/public/Comments/ICommentsEventHandler.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Contacts/ContactsMenu/IAction.php b/lib/public/Contacts/ContactsMenu/IAction.php
index 4a7133a999b..00fe8ba35c4 100644
--- a/lib/public/Contacts/ContactsMenu/IAction.php
+++ b/lib/public/Contacts/ContactsMenu/IAction.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Contacts/ContactsMenu/IActionFactory.php b/lib/public/Contacts/ContactsMenu/IActionFactory.php
index a4785d1c70c..69e6030e95b 100644
--- a/lib/public/Contacts/ContactsMenu/IActionFactory.php
+++ b/lib/public/Contacts/ContactsMenu/IActionFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Contacts/ContactsMenu/IContactsStore.php b/lib/public/Contacts/ContactsMenu/IContactsStore.php
index ceb68d99849..67913a2d919 100644
--- a/lib/public/Contacts/ContactsMenu/IContactsStore.php
+++ b/lib/public/Contacts/ContactsMenu/IContactsStore.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Contacts/ContactsMenu/IEntry.php b/lib/public/Contacts/ContactsMenu/IEntry.php
index c361b71bb7c..9ae8a207297 100644
--- a/lib/public/Contacts/ContactsMenu/IEntry.php
+++ b/lib/public/Contacts/ContactsMenu/IEntry.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Contacts/ContactsMenu/ILinkAction.php b/lib/public/Contacts/ContactsMenu/ILinkAction.php
index 92bccfd8dda..559e04885c5 100644
--- a/lib/public/Contacts/ContactsMenu/ILinkAction.php
+++ b/lib/public/Contacts/ContactsMenu/ILinkAction.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/DB/ISchemaWrapper.php b/lib/public/DB/ISchemaWrapper.php
index 16b776c05b9..dcf22b52d3d 100644
--- a/lib/public/DB/ISchemaWrapper.php
+++ b/lib/public/DB/ISchemaWrapper.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/DB/QueryBuilder/IFunctionBuilder.php b/lib/public/DB/QueryBuilder/IFunctionBuilder.php
index 84c3780dbce..480ec1cb1ac 100644
--- a/lib/public/DB/QueryBuilder/IFunctionBuilder.php
+++ b/lib/public/DB/QueryBuilder/IFunctionBuilder.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/DirectEditing/ACreateEmpty.php b/lib/public/DirectEditing/ACreateEmpty.php
index f30cc2465f9..6ad499ec760 100644
--- a/lib/public/DirectEditing/ACreateEmpty.php
+++ b/lib/public/DirectEditing/ACreateEmpty.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/DirectEditing/ACreateFromTemplate.php b/lib/public/DirectEditing/ACreateFromTemplate.php
index 6348b5d3545..e56e9c09cbb 100644
--- a/lib/public/DirectEditing/ACreateFromTemplate.php
+++ b/lib/public/DirectEditing/ACreateFromTemplate.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/DirectEditing/ATemplate.php b/lib/public/DirectEditing/ATemplate.php
index cc0ed24336b..a70488d8e89 100644
--- a/lib/public/DirectEditing/ATemplate.php
+++ b/lib/public/DirectEditing/ATemplate.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/DirectEditing/IToken.php b/lib/public/DirectEditing/IToken.php
index 53a67883f54..64abbf939f4 100644
--- a/lib/public/DirectEditing/IToken.php
+++ b/lib/public/DirectEditing/IToken.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/DirectEditing/RegisterDirectEditorEvent.php b/lib/public/DirectEditing/RegisterDirectEditorEvent.php
index 72d5ea39fe8..cbf9b07185d 100644
--- a/lib/public/DirectEditing/RegisterDirectEditorEvent.php
+++ b/lib/public/DirectEditing/RegisterDirectEditorEvent.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/EventDispatcher/JsonSerializer.php b/lib/public/EventDispatcher/JsonSerializer.php
index 1eb75ed7527..d05367b746d 100644
--- a/lib/public/EventDispatcher/JsonSerializer.php
+++ b/lib/public/EventDispatcher/JsonSerializer.php
@@ -9,6 +9,8 @@ declare(strict_types=1);
namespace OCP\EventDispatcher;
+use OC\Files\Node\NonExistingFile;
+use OC\Files\Node\NonExistingFolder;
use OCP\Files\FileInfo;
use OCP\IUser;
@@ -24,10 +26,16 @@ final class JsonSerializer {
* @since 30.0.0
*/
public static function serializeFileInfo(FileInfo $node): array {
- return [
- 'id' => $node->getId(),
- 'path' => $node->getPath(),
- ];
+ if ($node instanceof NonExistingFile || $node instanceof NonExistingFolder) {
+ return [
+ 'path' => $node->getPath(),
+ ];
+ } else {
+ return [
+ 'id' => $node->getId(),
+ 'path' => $node->getPath(),
+ ];
+ }
}
/**
diff --git a/lib/public/Federation/Exceptions/ActionNotSupportedException.php b/lib/public/Federation/Exceptions/ActionNotSupportedException.php
index 690e7a554c7..7f0e0f46907 100644
--- a/lib/public/Federation/Exceptions/ActionNotSupportedException.php
+++ b/lib/public/Federation/Exceptions/ActionNotSupportedException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/Exceptions/AuthenticationFailedException.php b/lib/public/Federation/Exceptions/AuthenticationFailedException.php
index f9482c3a19c..6ce5314844e 100644
--- a/lib/public/Federation/Exceptions/AuthenticationFailedException.php
+++ b/lib/public/Federation/Exceptions/AuthenticationFailedException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/Exceptions/BadRequestException.php b/lib/public/Federation/Exceptions/BadRequestException.php
index 52e3b0e0db4..0210437a8d5 100644
--- a/lib/public/Federation/Exceptions/BadRequestException.php
+++ b/lib/public/Federation/Exceptions/BadRequestException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php b/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php
index 606fb08d0fc..f753f5f3326 100644
--- a/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php
+++ b/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php b/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php
index 7f1218c349e..168eb2b8aeb 100644
--- a/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php
+++ b/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php b/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php
index 4b3d0341fe9..64dfcf0f856 100644
--- a/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php
+++ b/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/ICloudFederationFactory.php b/lib/public/Federation/ICloudFederationFactory.php
index a25e4ee30f7..5238188b4fa 100644
--- a/lib/public/Federation/ICloudFederationFactory.php
+++ b/lib/public/Federation/ICloudFederationFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/ICloudFederationNotification.php b/lib/public/Federation/ICloudFederationNotification.php
index 8545c9d51f2..c550a936927 100644
--- a/lib/public/Federation/ICloudFederationNotification.php
+++ b/lib/public/Federation/ICloudFederationNotification.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/ICloudFederationProvider.php b/lib/public/Federation/ICloudFederationProvider.php
index 067ceba160e..b30041f81d6 100644
--- a/lib/public/Federation/ICloudFederationProvider.php
+++ b/lib/public/Federation/ICloudFederationProvider.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/ICloudFederationProviderManager.php b/lib/public/Federation/ICloudFederationProviderManager.php
index 9f5258721ab..68adb4b4da7 100644
--- a/lib/public/Federation/ICloudFederationProviderManager.php
+++ b/lib/public/Federation/ICloudFederationProviderManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Federation/ICloudFederationShare.php b/lib/public/Federation/ICloudFederationShare.php
index 197ebf1af9a..0b67bbfadee 100644
--- a/lib/public/Federation/ICloudFederationShare.php
+++ b/lib/public/Federation/ICloudFederationShare.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files.php b/lib/public/Files.php
index b12aa463f1a..b169032e16c 100644
--- a/lib/public/Files.php
+++ b/lib/public/Files.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -85,15 +86,45 @@ class Files {
/**
* Copy the contents of one stream to another
+ *
+ * @template T of null|true
* @param resource $source
* @param resource $target
- * @return int the number of bytes copied
+ * @param T $includeResult
+ * @return int|array
+ * @psalm-return (T is true ? array{0: int, 1: bool} : int)
* @since 5.0.0
+ * @since 32.0.0 added $includeResult parameter
* @deprecated 14.0.0
*/
- public static function streamCopy($source, $target) {
- [$count, ] = \OC_Helper::streamCopy($source, $target);
- return $count;
+ public static function streamCopy($source, $target, ?bool $includeResult = null) {
+ if (!$source or !$target) {
+ return $includeResult ? [0, false] : 0;
+ }
+
+ $bufSize = 8192;
+ $count = 0;
+ $result = true;
+ while (!feof($source)) {
+ $buf = fread($source, $bufSize);
+ if ($buf === false) {
+ $result = false;
+ break;
+ }
+
+ $bytesWritten = fwrite($target, $buf);
+ if ($bytesWritten !== false) {
+ $count += $bytesWritten;
+ }
+
+ if ($bytesWritten === false
+ || ($bytesWritten < $bufSize && $bytesWritten < strlen($buf))
+ ) {
+ $result = false;
+ break;
+ }
+ }
+ return $includeResult ? [$count, $result] : $count;
}
/**
diff --git a/lib/public/Files/Config/Event/UserMountAddedEvent.php b/lib/public/Files/Config/Event/UserMountAddedEvent.php
new file mode 100644
index 00000000000..8abd7512188
--- /dev/null
+++ b/lib/public/Files/Config/Event/UserMountAddedEvent.php
@@ -0,0 +1,26 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCP\Files\Config\Event;
+
+use OCP\EventDispatcher\Event;
+use OCP\Files\Config\ICachedMountInfo;
+
+/**
+ * Event emitted when a user mount was added.
+ *
+ * @since 32.0.0
+ */
+class UserMountAddedEvent extends Event {
+ public function __construct(
+ public readonly ICachedMountInfo $mountPoint,
+ ) {
+ parent::__construct();
+ }
+}
diff --git a/lib/public/Files/Config/Event/UserMountRemovedEvent.php b/lib/public/Files/Config/Event/UserMountRemovedEvent.php
new file mode 100644
index 00000000000..0de7cfc4a99
--- /dev/null
+++ b/lib/public/Files/Config/Event/UserMountRemovedEvent.php
@@ -0,0 +1,26 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCP\Files\Config\Event;
+
+use OCP\EventDispatcher\Event;
+use OCP\Files\Config\ICachedMountInfo;
+
+/**
+ * Event emitted when a user mount was removed.
+ *
+ * @since 32.0.0
+ */
+class UserMountRemovedEvent extends Event {
+ public function __construct(
+ public readonly ICachedMountInfo $mountPoint,
+ ) {
+ parent::__construct();
+ }
+}
diff --git a/lib/public/Files/Config/Event/UserMountUpdatedEvent.php b/lib/public/Files/Config/Event/UserMountUpdatedEvent.php
new file mode 100644
index 00000000000..f797bef134e
--- /dev/null
+++ b/lib/public/Files/Config/Event/UserMountUpdatedEvent.php
@@ -0,0 +1,27 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCP\Files\Config\Event;
+
+use OCP\EventDispatcher\Event;
+use OCP\Files\Config\ICachedMountInfo;
+
+/**
+ * Event emitted when a user mount was moved.
+ *
+ * @since 32.0.0
+ */
+class UserMountUpdatedEvent extends Event {
+ public function __construct(
+ public readonly ICachedMountInfo $oldMountPoint,
+ public readonly ICachedMountInfo $newMountPoint,
+ ) {
+ parent::__construct();
+ }
+}
diff --git a/lib/public/Files/Config/ICachedMountFileInfo.php b/lib/public/Files/Config/ICachedMountFileInfo.php
index 7b331059645..a9b30d8ba6d 100644
--- a/lib/public/Files/Config/ICachedMountFileInfo.php
+++ b/lib/public/Files/Config/ICachedMountFileInfo.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/DavUtil.php b/lib/public/Files/DavUtil.php
index 40d17c77c88..6dde3179bb8 100644
--- a/lib/public/Files/DavUtil.php
+++ b/lib/public/Files/DavUtil.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-only
diff --git a/lib/public/Files/EmptyFileNameException.php b/lib/public/Files/EmptyFileNameException.php
index ec13a9fc2be..1630ce63ea2 100644
--- a/lib/public/Files/EmptyFileNameException.php
+++ b/lib/public/Files/EmptyFileNameException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Folder.php b/lib/public/Files/Folder.php
index 3128a17c10c..a35d2d78bc9 100644
--- a/lib/public/Files/Folder.php
+++ b/lib/public/Files/Folder.php
@@ -199,4 +199,15 @@ interface Folder extends Node {
* @since 9.1.0
*/
public function getRecent($limit, $offset = 0);
+
+ /**
+ * Verify if the given path is valid and allowed from this folder.
+ *
+ * @param string $path the path from this folder
+ * @param string $fileName
+ * @param bool $readonly Check only if the path is allowed for read-only access
+ * @throws InvalidPathException
+ * @since 32.0.0
+ */
+ public function verifyPath($fileName, $readonly = false): void;
}
diff --git a/lib/public/Files/GenericFileException.php b/lib/public/Files/GenericFileException.php
index 288d668e3e7..66a3b5e5ac4 100644
--- a/lib/public/Files/GenericFileException.php
+++ b/lib/public/Files/GenericFileException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/IAppData.php b/lib/public/Files/IAppData.php
index e5a5c2b7143..4d0c4da6a8a 100644
--- a/lib/public/Files/IAppData.php
+++ b/lib/public/Files/IAppData.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/IFilenameValidator.php b/lib/public/Files/IFilenameValidator.php
index d8bd06d179d..9b7fa1e2e2e 100644
--- a/lib/public/Files/IFilenameValidator.php
+++ b/lib/public/Files/IFilenameValidator.php
@@ -43,7 +43,7 @@ interface IFilenameValidator {
* If no sanitizing is needed the same name is returned.
*
* @param string $name The filename to sanitize
- * @param null|string $charReplacement Character to use for replacing forbidden ones - by default space, dash or underscore is used if allowed.
+ * @param null|string $charReplacement Character to use for replacing forbidden ones - by default underscore, dash or space is used if allowed.
* @throws \InvalidArgumentException if no character replacement was given (and the default could not be applied) or the replacement is not valid.
* @since 32.0.0
*/
diff --git a/lib/public/Files/InvalidDirectoryException.php b/lib/public/Files/InvalidDirectoryException.php
index 7f87eed1a17..b9640209cbf 100644
--- a/lib/public/Files/InvalidDirectoryException.php
+++ b/lib/public/Files/InvalidDirectoryException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Notify/IChange.php b/lib/public/Files/Notify/IChange.php
index 8f252411a5a..c7c758eec11 100644
--- a/lib/public/Files/Notify/IChange.php
+++ b/lib/public/Files/Notify/IChange.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Notify/INotifyHandler.php b/lib/public/Files/Notify/INotifyHandler.php
index 8777779ca4a..09b3dbca919 100644
--- a/lib/public/Files/Notify/INotifyHandler.php
+++ b/lib/public/Files/Notify/INotifyHandler.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Notify/IRenameChange.php b/lib/public/Files/Notify/IRenameChange.php
index 3e1ae7ed447..b1bfae5fc00 100644
--- a/lib/public/Files/Notify/IRenameChange.php
+++ b/lib/public/Files/Notify/IRenameChange.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Search/ISearchBinaryOperator.php b/lib/public/Files/Search/ISearchBinaryOperator.php
index 661be44596d..fa7ef4d1bb3 100644
--- a/lib/public/Files/Search/ISearchBinaryOperator.php
+++ b/lib/public/Files/Search/ISearchBinaryOperator.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Search/ISearchComparison.php b/lib/public/Files/Search/ISearchComparison.php
index 01b69f5d24c..ab298fa0a57 100644
--- a/lib/public/Files/Search/ISearchComparison.php
+++ b/lib/public/Files/Search/ISearchComparison.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -51,7 +52,7 @@ interface ISearchComparison extends ISearchOperator {
* @since 28.0.0
*/
public const COMPARE_DEFINED = 'is-defined';
-
+
/**
* @since 29.0.0
*/
diff --git a/lib/public/Files/Search/ISearchOperator.php b/lib/public/Files/Search/ISearchOperator.php
index a604bd96b9d..f6ae8edcbb1 100644
--- a/lib/public/Files/Search/ISearchOperator.php
+++ b/lib/public/Files/Search/ISearchOperator.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Search/ISearchOrder.php b/lib/public/Files/Search/ISearchOrder.php
index 23f71e2133e..e6e68849443 100644
--- a/lib/public/Files/Search/ISearchOrder.php
+++ b/lib/public/Files/Search/ISearchOrder.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Search/ISearchQuery.php b/lib/public/Files/Search/ISearchQuery.php
index 109998aee65..1b400c56e5b 100644
--- a/lib/public/Files/Search/ISearchQuery.php
+++ b/lib/public/Files/Search/ISearchQuery.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/SimpleFS/ISimpleFile.php b/lib/public/Files/SimpleFS/ISimpleFile.php
index 10cdc0a919d..4e77299ab00 100644
--- a/lib/public/Files/SimpleFS/ISimpleFile.php
+++ b/lib/public/Files/SimpleFS/ISimpleFile.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/SimpleFS/ISimpleFolder.php b/lib/public/Files/SimpleFS/ISimpleFolder.php
index 79b9fca1dac..95efc676688 100644
--- a/lib/public/Files/SimpleFS/ISimpleFolder.php
+++ b/lib/public/Files/SimpleFS/ISimpleFolder.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/SimpleFS/ISimpleRoot.php b/lib/public/Files/SimpleFS/ISimpleRoot.php
index 5c01c6a2a2e..6be8a1d47c9 100644
--- a/lib/public/Files/SimpleFS/ISimpleRoot.php
+++ b/lib/public/Files/SimpleFS/ISimpleRoot.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Storage/IChunkedFileWrite.php b/lib/public/Files/Storage/IChunkedFileWrite.php
index e166a7f3b1f..0cf27814f0e 100644
--- a/lib/public/Files/Storage/IChunkedFileWrite.php
+++ b/lib/public/Files/Storage/IChunkedFileWrite.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Storage/IDisableEncryptionStorage.php b/lib/public/Files/Storage/IDisableEncryptionStorage.php
index 98a4b4897da..19951da2015 100644
--- a/lib/public/Files/Storage/IDisableEncryptionStorage.php
+++ b/lib/public/Files/Storage/IDisableEncryptionStorage.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Storage/INotifyStorage.php b/lib/public/Files/Storage/INotifyStorage.php
index 0e5cf53af21..063ff815581 100644
--- a/lib/public/Files/Storage/INotifyStorage.php
+++ b/lib/public/Files/Storage/INotifyStorage.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Files/Template/BeforeGetTemplatesEvent.php b/lib/public/Files/Template/BeforeGetTemplatesEvent.php
index 006163c5f7f..9fb7453a50c 100644
--- a/lib/public/Files/Template/BeforeGetTemplatesEvent.php
+++ b/lib/public/Files/Template/BeforeGetTemplatesEvent.php
@@ -17,16 +17,19 @@ use OCP\EventDispatcher\Event;
class BeforeGetTemplatesEvent extends Event {
/** @var array<Template> */
private array $templates;
+ /** @var bool */
+ private bool $withFields;
/**
* @param array<Template> $templates
*
* @since 30.0.0
*/
- public function __construct(array $templates) {
+ public function __construct(array $templates, bool $withFields = false) {
parent::__construct();
$this->templates = $templates;
+ $this->withFields = $withFields;
}
/**
@@ -37,4 +40,13 @@ class BeforeGetTemplatesEvent extends Event {
public function getTemplates(): array {
return $this->templates;
}
+
+ /**
+ * @return bool
+ *
+ * @since 32.0.0
+ */
+ public function shouldGetFields(): bool {
+ return $this->withFields;
+ }
}
diff --git a/lib/public/Files/Template/ITemplateManager.php b/lib/public/Files/Template/ITemplateManager.php
index 9a81aa51ceb..df81bc5604e 100644
--- a/lib/public/Files/Template/ITemplateManager.php
+++ b/lib/public/Files/Template/ITemplateManager.php
@@ -39,6 +39,15 @@ interface ITemplateManager {
public function listTemplates(): array;
/**
+ * Get the fields for a given template
+ *
+ * @param int $fileId
+ * @return array
+ * @since 32.0.0
+ */
+ public function listTemplateFields(int $fileId): array;
+
+ /**
* @return bool
* @since 21.0.0
*/
diff --git a/lib/public/Files/Template/RegisterTemplateCreatorEvent.php b/lib/public/Files/Template/RegisterTemplateCreatorEvent.php
index c931f3e2a78..a9e7fa01252 100644
--- a/lib/public/Files/Template/RegisterTemplateCreatorEvent.php
+++ b/lib/public/Files/Template/RegisterTemplateCreatorEvent.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/GlobalScale/IConfig.php b/lib/public/GlobalScale/IConfig.php
index 31df152f644..bae5dd7aa66 100644
--- a/lib/public/GlobalScale/IConfig.php
+++ b/lib/public/GlobalScale/IConfig.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Group/Backend/INamedBackend.php b/lib/public/Group/Backend/INamedBackend.php
index 8b9ef9ffbba..d98cc8cdb83 100644
--- a/lib/public/Group/Backend/INamedBackend.php
+++ b/lib/public/Group/Backend/INamedBackend.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Http/Client/IResponse.php b/lib/public/Http/Client/IResponse.php
index deec2cf97b1..53032ef2a37 100644
--- a/lib/public/Http/Client/IResponse.php
+++ b/lib/public/Http/Client/IResponse.php
@@ -15,8 +15,9 @@ namespace OCP\Http\Client;
*/
interface IResponse {
/**
- * @return string|resource
+ * @return null|resource|string
* @since 8.1.0
+ * @sicne 8.2.0 with stream enabled, the function returns null or a resource
*/
public function getBody();
diff --git a/lib/public/IAddressBook.php b/lib/public/IAddressBook.php
index 780b005fe8d..5a5cc487cee 100644
--- a/lib/public/IAddressBook.php
+++ b/lib/public/IAddressBook.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
diff --git a/lib/public/IAppConfig.php b/lib/public/IAppConfig.php
index f4210793476..fcc528fe11f 100644
--- a/lib/public/IAppConfig.php
+++ b/lib/public/IAppConfig.php
@@ -514,5 +514,5 @@ interface IAppConfig {
* @return array<string, string>
* @since 32.0.0
*/
- public function getAppInstalledVersions(): array;
+ public function getAppInstalledVersions(bool $onlyEnabled = false): array;
}
diff --git a/lib/public/IPreview.php b/lib/public/IPreview.php
index 5a2bcde69f1..3c9eadd4577 100644
--- a/lib/public/IPreview.php
+++ b/lib/public/IPreview.php
@@ -92,10 +92,12 @@ interface IPreview {
* Check if a preview can be generated for a file
*
* @param \OCP\Files\FileInfo $file
+ * @param string|null $mimeType To force a given mimetype for the file
* @return bool
* @since 8.0.0
+ * @since 32.0.0 - isAvailable($mimeType) added the $mimeType argument to the signature
*/
- public function isAvailable(\OCP\Files\FileInfo $file);
+ public function isAvailable(\OCP\Files\FileInfo $file, ?string $mimeType = null);
/**
* Generates previews of a file
diff --git a/lib/public/IRequest.php b/lib/public/IRequest.php
index 2639a234ad5..cbac143d775 100644
--- a/lib/public/IRequest.php
+++ b/lib/public/IRequest.php
@@ -305,4 +305,14 @@ interface IRequest {
* @since 8.1.0
*/
public function getServerHost(): string;
+
+ /**
+ * If decoding the request content failed, throw an exception.
+ * Currently only \JsonException for json decoding errors,
+ * but in the future may throw other exceptions for other decoding issues.
+ *
+ * @throws \Exception
+ * @since 32.0.0
+ */
+ public function throwDecodingExceptionIfAny(): void;
}
diff --git a/lib/public/IServerContainer.php b/lib/public/IServerContainer.php
index 82da8779a66..6d5095c92da 100644
--- a/lib/public/IServerContainer.php
+++ b/lib/public/IServerContainer.php
@@ -8,10 +8,6 @@ declare(strict_types=1);
*/
namespace OCP;
-use OCP\Federation\ICloudFederationFactory;
-use OCP\Federation\ICloudFederationProviderManager;
-use OCP\Log\ILogFactory;
-use OCP\Security\IContentSecurityPolicyManager;
use Psr\Container\ContainerInterface;
/**
@@ -26,35 +22,6 @@ use Psr\Container\ContainerInterface;
* @since 6.0.0
*/
interface IServerContainer extends ContainerInterface, IContainer {
- /**
- * The calendar manager will act as a broker between consumers for calendar information and
- * providers which actual deliver the calendar information.
- *
- * @return \OCP\Calendar\IManager
- * @since 13.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getCalendarManager();
-
- /**
- * The calendar resource backend manager will act as a broker between consumers
- * for calendar resource information an providers which actual deliver the room information.
- *
- * @return \OCP\Calendar\Resource\IBackend
- * @since 14.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getCalendarResourceBackendManager();
-
- /**
- * The calendar room backend manager will act as a broker between consumers
- * for calendar room information an providers which actual deliver the room information.
- *
- * @return \OCP\Calendar\Room\IBackend
- * @since 14.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getCalendarRoomBackendManager();
/**
* The contacts manager will act as a broker between consumers for contacts information and
@@ -78,25 +45,6 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getRequest();
/**
- * Returns the preview manager which can create preview images for a given file
- *
- * @return \OCP\IPreview
- * @since 6.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getPreviewManager();
-
- /**
- * Returns the tag manager which can get and set tags for different object types
- *
- * @see \OCP\ITagManager::load()
- * @return \OCP\ITagManager
- * @since 6.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getTagManager();
-
- /**
* Returns the root folder of ownCloud's data directory
*
* @return \OCP\Files\IRootFolder
@@ -144,15 +92,6 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getUserSession();
/**
- * Returns the navigation manager
- *
- * @return \OCP\INavigationManager
- * @since 6.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getNavigationManager();
-
- /**
* Returns the config manager
*
* @return \OCP\IConfig
@@ -189,24 +128,6 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getSecureRandom();
/**
- * Returns a CredentialsManager instance
- *
- * @return \OCP\Security\ICredentialsManager
- * @since 9.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getCredentialsManager();
-
- /**
- * Returns the app config manager
- *
- * @return \OCP\IAppConfig
- * @since 7.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getAppConfig();
-
- /**
* @return \OCP\L10N\IFactory
* @since 8.2.0
* @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
@@ -238,13 +159,6 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getEncryptionFilesHelper();
/**
- * @return \OCP\Encryption\Keys\IStorage
- * @since 8.1.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getEncryptionKeyStorage();
-
- /**
* Returns the URL generator
*
* @return \OCP\IURLGenerator
@@ -299,15 +213,6 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getDatabaseConnection();
/**
- * Returns an avatar manager, used for avatar functionality
- *
- * @return \OCP\IAvatarManager
- * @since 6.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getAvatarManager();
-
- /**
* Returns an job list for controlling background jobs
*
* @return \OCP\BackgroundJob\IJobList
@@ -317,24 +222,6 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getJobList();
/**
- * returns a log factory instance
- *
- * @return ILogFactory
- * @since 14.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getLogFactory();
-
- /**
- * Returns a router for generating and matching urls
- *
- * @return \OCP\Route\IRouter
- * @since 7.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getRouter();
-
- /**
* Get the certificate manager
*
* @return \OCP\ICertificateManager
@@ -344,35 +231,6 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getCertificateManager();
/**
- * Returns an instance of the HTTP client service
- *
- * @return \OCP\Http\Client\IClientService
- * @since 8.1.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getHTTPClientService();
-
- /**
- * Get the active event logger
- *
- * @return \OCP\Diagnostics\IEventLogger
- * @since 8.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getEventLogger();
-
- /**
- * Get the active query logger
- *
- * The returned logger only logs data when debug mode is enabled
- *
- * @return \OCP\Diagnostics\IQueryLogger
- * @since 8.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getQueryLogger();
-
- /**
* Get the manager for temporary files and folders
*
* @return \OCP\ITempManager
@@ -400,28 +258,6 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getWebRoot();
/**
- * @return \OCP\Files\Config\IMountProviderCollection
- * @since 8.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getMountProviderCollection();
-
- /**
- * Get the IniWrapper
- *
- * @return \bantu\IniGetWrapper\IniGetWrapper
- * @since 8.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getIniWrapper();
- /**
- * @return \OCP\Command\IBus
- * @since 8.1.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getCommandBus();
-
- /**
* Creates a new mailer
*
* @return \OCP\Mail\IMailer
@@ -440,13 +276,6 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getLockingProvider();
/**
- * @return \OCP\Files\Mount\IMountManager
- * @since 8.2.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getMountManager();
-
- /**
* Get the MimeTypeDetector
*
* @return \OCP\Files\IMimeTypeDetector
@@ -474,108 +303,9 @@ interface IServerContainer extends ContainerInterface, IContainer {
public function getNotificationManager();
/**
- * @return \OCP\Comments\ICommentsManager
- * @since 9.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getCommentsManager();
-
- /**
- * Returns the system-tag manager
- *
- * @return \OCP\SystemTag\ISystemTagManager
- *
- * @since 9.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getSystemTagManager();
-
- /**
- * Returns the system-tag object mapper
- *
- * @return \OCP\SystemTag\ISystemTagObjectMapper
- *
- * @since 9.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getSystemTagObjectMapper();
-
- /**
- * Returns the share manager
- *
- * @return \OCP\Share\IManager
- * @since 9.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getShareManager();
-
- /**
- * @return IContentSecurityPolicyManager
- * @since 9.0.0
- * @deprecated 17.0.0 Use the AddContentSecurityPolicyEvent
- */
- public function getContentSecurityPolicyManager();
-
- /**
- * @return \OCP\IDateTimeZone
- * @since 8.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getDateTimeZone();
-
- /**
- * @return \OCP\IDateTimeFormatter
- * @since 8.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getDateTimeFormatter();
-
- /**
* @return \OCP\Federation\ICloudIdManager
* @since 12.0.0
* @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
*/
public function getCloudIdManager();
-
- /**
- * @return \OCP\GlobalScale\IConfig
- * @since 14.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getGlobalScaleConfig();
-
- /**
- * @return ICloudFederationFactory
- * @since 14.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getCloudFederationFactory();
-
- /**
- * @return ICloudFederationProviderManager
- * @since 14.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getCloudFederationProviderManager();
-
- /**
- * @return \OCP\Remote\Api\IApiFactory
- * @since 13.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getRemoteApiFactory();
-
- /**
- * @return \OCP\Remote\IInstanceFactory
- * @since 13.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getRemoteInstanceFactory();
-
- /**
- * @return \OCP\Files\Storage\IStorageFactory
- * @since 15.0.0
- * @deprecated 20.0.0 have it injected or fetch it through \Psr\Container\ContainerInterface::get
- */
- public function getStorageFactory();
}
diff --git a/lib/public/IUser.php b/lib/public/IUser.php
index 52f79083dc1..945e7e1602a 100644
--- a/lib/public/IUser.php
+++ b/lib/public/IUser.php
@@ -281,6 +281,15 @@ interface IUser {
public function getQuota();
/**
+ * Get the users' quota in machine readable form. If a specific quota is set
+ * for the user, then the quota is returned in bytes. Otherwise the default value is returned.
+ * If a default setting was not set, it is return as `\OCP\Files\FileInfo::SPACE_UNLIMITED`, i.e. quota is not limited.
+ *
+ * @since 32.0.0
+ */
+ public function getQuotaBytes(): int|float;
+
+ /**
* set the users' quota
*
* @param string $quota
diff --git a/lib/public/LDAP/IDeletionFlagSupport.php b/lib/public/LDAP/IDeletionFlagSupport.php
index 89615c67307..1ae38e1a5d1 100644
--- a/lib/public/LDAP/IDeletionFlagSupport.php
+++ b/lib/public/LDAP/IDeletionFlagSupport.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -17,7 +18,7 @@ interface IDeletionFlagSupport {
* @since 11.0.0
*/
public function flagRecord($uid);
-
+
/**
* Unflag record for deletion.
* @param string $uid user id
diff --git a/lib/public/LDAP/ILDAPProvider.php b/lib/public/LDAP/ILDAPProvider.php
index 22f4b872adc..7e1f27eb368 100644
--- a/lib/public/LDAP/ILDAPProvider.php
+++ b/lib/public/LDAP/ILDAPProvider.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/LDAP/ILDAPProviderFactory.php b/lib/public/LDAP/ILDAPProviderFactory.php
index f175a3abfd0..720027ce012 100644
--- a/lib/public/LDAP/ILDAPProviderFactory.php
+++ b/lib/public/LDAP/ILDAPProviderFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Lockdown/ILockdownManager.php b/lib/public/Lockdown/ILockdownManager.php
index 4ae846ae8da..fe8adaecf91 100644
--- a/lib/public/Lockdown/ILockdownManager.php
+++ b/lib/public/Lockdown/ILockdownManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Log/IFileBased.php b/lib/public/Log/IFileBased.php
index e3ea25fad09..ace10ee1b68 100644
--- a/lib/public/Log/IFileBased.php
+++ b/lib/public/Log/IFileBased.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Log/ILogFactory.php b/lib/public/Log/ILogFactory.php
index 49b56ff102c..db7adca2192 100644
--- a/lib/public/Log/ILogFactory.php
+++ b/lib/public/Log/ILogFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Log/IWriter.php b/lib/public/Log/IWriter.php
index 8d2b438a0fe..2fcbc094881 100644
--- a/lib/public/Log/IWriter.php
+++ b/lib/public/Log/IWriter.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Log/RotationTrait.php b/lib/public/Log/RotationTrait.php
index 03100613c4c..73b3b16b665 100644
--- a/lib/public/Log/RotationTrait.php
+++ b/lib/public/Log/RotationTrait.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Mail/Provider/IAddress.php b/lib/public/Mail/Provider/IAddress.php
index 121467390dc..47bb9148968 100644
--- a/lib/public/Mail/Provider/IAddress.php
+++ b/lib/public/Mail/Provider/IAddress.php
@@ -17,7 +17,7 @@ namespace OCP\Mail\Provider;
*
*/
interface IAddress {
-
+
/**
* sets the mail address
*
diff --git a/lib/public/Mail/Provider/IManager.php b/lib/public/Mail/Provider/IManager.php
index 3c639ef21ef..b55fed3f26f 100644
--- a/lib/public/Mail/Provider/IManager.php
+++ b/lib/public/Mail/Provider/IManager.php
@@ -17,7 +17,7 @@ namespace OCP\Mail\Provider;
*
*/
interface IManager {
-
+
/**
* determine if any mail providers are registered
*
diff --git a/lib/public/Mail/Provider/IMessage.php b/lib/public/Mail/Provider/IMessage.php
index e3dfbe6981d..599d9b0566d 100644
--- a/lib/public/Mail/Provider/IMessage.php
+++ b/lib/public/Mail/Provider/IMessage.php
@@ -17,7 +17,7 @@ namespace OCP\Mail\Provider;
*
*/
interface IMessage {
-
+
/**
* arbitrary unique text string identifying this message
*
@@ -117,7 +117,7 @@ interface IMessage {
* @return self return this object for command chaining
*/
public function setBcc(IAddress ...$value): self;
-
+
/**
* gets the blind copy to recipient(s) of this message
*
diff --git a/lib/public/Migration/Attributes/AddColumn.php b/lib/public/Migration/Attributes/AddColumn.php
index 8d16b9b6e8d..d84a0c1f60c 100644
--- a/lib/public/Migration/Attributes/AddColumn.php
+++ b/lib/public/Migration/Attributes/AddColumn.php
@@ -23,8 +23,8 @@ class AddColumn extends ColumnMigrationAttribute {
*/
public function definition(): string {
$type = is_null($this->getType()) ? '' : ' (' . $this->getType()->value . ')';
- return empty($this->getName()) ?
- 'Addition of a new column' . $type . ' to table \'' . $this->getTable() . '\''
+ return empty($this->getName())
+ ? 'Addition of a new column' . $type . ' to table \'' . $this->getTable() . '\''
: 'Addition of column \'' . $this->getName() . '\'' . $type . ' to table \'' . $this->getTable() . '\'';
}
}
diff --git a/lib/public/Migration/Attributes/DropColumn.php b/lib/public/Migration/Attributes/DropColumn.php
index 1de0ba58489..a1cd5790cc7 100644
--- a/lib/public/Migration/Attributes/DropColumn.php
+++ b/lib/public/Migration/Attributes/DropColumn.php
@@ -22,8 +22,8 @@ class DropColumn extends ColumnMigrationAttribute {
* @since 30.0.0
*/
public function definition(): string {
- return empty($this->getName()) ?
- 'Deletion of a column from table \'' . $this->getTable() . '\''
+ return empty($this->getName())
+ ? 'Deletion of a column from table \'' . $this->getTable() . '\''
: 'Deletion of column \'' . $this->getName() . '\' from table \'' . $this->getTable() . '\'';
}
}
diff --git a/lib/public/Migration/Attributes/ModifyColumn.php b/lib/public/Migration/Attributes/ModifyColumn.php
index ef7250ffb34..6fc44ebb824 100644
--- a/lib/public/Migration/Attributes/ModifyColumn.php
+++ b/lib/public/Migration/Attributes/ModifyColumn.php
@@ -23,8 +23,8 @@ class ModifyColumn extends ColumnMigrationAttribute {
*/
public function definition(): string {
$type = is_null($this->getType()) ? '' : ' to ' . $this->getType()->value;
- return empty($this->getName()) ?
- 'Modification of a column from table \'' . $this->getTable() . '\'' . $type
+ return empty($this->getName())
+ ? 'Modification of a column from table \'' . $this->getTable() . '\'' . $type
: 'Modification of column \'' . $this->getName() . '\' from table \'' . $this->getTable() . '\'' . $type;
}
}
diff --git a/lib/public/OCM/ICapabilityAwareOCMProvider.php b/lib/public/OCM/ICapabilityAwareOCMProvider.php
new file mode 100644
index 00000000000..ae290abd2f8
--- /dev/null
+++ b/lib/public/OCM/ICapabilityAwareOCMProvider.php
@@ -0,0 +1,60 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCP\OCM;
+
+/**
+ * Version 1.1 and 1.2 extensions to the Open Cloud Mesh Discovery API
+ * @link https://github.com/cs3org/OCM-API/
+ * @since 32.0.0
+ */
+interface ICapabilityAwareOCMProvider extends IOCMProvider {
+ /**
+ * get the capabilities
+ *
+ * @return array
+ * @since 32.0.0
+ */
+ public function getCapabilities(): array;
+
+ /**
+ * get the provider name
+ *
+ * @return string
+ * @since 32.0.0
+ */
+ public function getProvider(): string;
+
+ /**
+ * returns the invite accept dialog
+ *
+ * @return string
+ * @since 32.0.0
+ */
+ public function getInviteAcceptDialog(): string;
+
+ /**
+ * set the capabilities
+ *
+ * @param array $capabilities
+ *
+ * @return $this
+ * @since 32.0.0
+ */
+ public function setCapabilities(array $capabilities): static;
+
+ /**
+ * set the invite accept dialog
+ *
+ * @param string $inviteAcceptDialog
+ *
+ * @return $this
+ * @since 32.0.0
+ */
+ public function setInviteAcceptDialog(string $inviteAcceptDialog): static;
+}
diff --git a/lib/public/OCM/IOCMProvider.php b/lib/public/OCM/IOCMProvider.php
index a267abc52d2..7141b0a9ab9 100644
--- a/lib/public/OCM/IOCMProvider.php
+++ b/lib/public/OCM/IOCMProvider.php
@@ -16,6 +16,7 @@ use OCP\OCM\Exceptions\OCMProviderException;
* Model based on the Open Cloud Mesh Discovery API
* @link https://github.com/cs3org/OCM-API/
* @since 28.0.0
+ * @deprecated 32.0.0 Please use {@see \OCP\OCM\ICapabilityAwareOCMProvider}
*/
interface IOCMProvider extends JsonSerializable {
/**
diff --git a/lib/public/Remote/Api/IApiCollection.php b/lib/public/Remote/Api/IApiCollection.php
index da1964997bd..e7181ab20f2 100644
--- a/lib/public/Remote/Api/IApiCollection.php
+++ b/lib/public/Remote/Api/IApiCollection.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Remote/Api/IApiFactory.php b/lib/public/Remote/Api/IApiFactory.php
index 0e95dc98e70..2089c61be82 100644
--- a/lib/public/Remote/Api/IApiFactory.php
+++ b/lib/public/Remote/Api/IApiFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Remote/Api/ICapabilitiesApi.php b/lib/public/Remote/Api/ICapabilitiesApi.php
index d9ab037bcc6..d0e3fd7ad80 100644
--- a/lib/public/Remote/Api/ICapabilitiesApi.php
+++ b/lib/public/Remote/Api/ICapabilitiesApi.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Remote/Api/IUserApi.php b/lib/public/Remote/Api/IUserApi.php
index c8b5e64d003..268594c0340 100644
--- a/lib/public/Remote/Api/IUserApi.php
+++ b/lib/public/Remote/Api/IUserApi.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Remote/ICredentials.php b/lib/public/Remote/ICredentials.php
index efe87a350c8..c261d57093d 100644
--- a/lib/public/Remote/ICredentials.php
+++ b/lib/public/Remote/ICredentials.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Remote/IInstance.php b/lib/public/Remote/IInstance.php
index 47c10cb4ac1..6186c2e1819 100644
--- a/lib/public/Remote/IInstance.php
+++ b/lib/public/Remote/IInstance.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Remote/IInstanceFactory.php b/lib/public/Remote/IInstanceFactory.php
index 15435901a74..1cd2b3330ce 100644
--- a/lib/public/Remote/IInstanceFactory.php
+++ b/lib/public/Remote/IInstanceFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Remote/IUser.php b/lib/public/Remote/IUser.php
index 3c22695c20b..329e8876c0d 100644
--- a/lib/public/Remote/IUser.php
+++ b/lib/public/Remote/IUser.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/RichObjectStrings/Definitions.php b/lib/public/RichObjectStrings/Definitions.php
index 5974659e16b..d6717e54aea 100644
--- a/lib/public/RichObjectStrings/Definitions.php
+++ b/lib/public/RichObjectStrings/Definitions.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -374,6 +375,12 @@ class Definitions {
'description' => 'The blurhash of the image',
'example' => 'LEHV9uae2yk8pyo0adR*.7kCMdnj',
],
+ 'hide-download' => [
+ 'since' => '31.0.5',
+ 'required' => false,
+ 'description' => 'Whether the download option should be hidden. If not set to `yes` the option can be shown',
+ 'example' => 'yes',
+ ],
],
],
'forms-form' => [
diff --git a/lib/public/RichObjectStrings/IValidator.php b/lib/public/RichObjectStrings/IValidator.php
index 3bf83582adc..fc486663c73 100644
--- a/lib/public/RichObjectStrings/IValidator.php
+++ b/lib/public/RichObjectStrings/IValidator.php
@@ -26,6 +26,7 @@ namespace OCP\RichObjectStrings;
* path?: string,
* mimetype?: string,
* 'preview-available'?: 'yes'|'no',
+ * 'hide-download'?: 'yes'|'no',
* mtime?: string,
* latitude?: string,
* longitude?: string,
diff --git a/lib/public/RichObjectStrings/InvalidObjectExeption.php b/lib/public/RichObjectStrings/InvalidObjectExeption.php
index 0316310c5f9..603f4432ba6 100644
--- a/lib/public/RichObjectStrings/InvalidObjectExeption.php
+++ b/lib/public/RichObjectStrings/InvalidObjectExeption.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Route/IRoute.php b/lib/public/Route/IRoute.php
index fffd4b9c1a1..7dba6225aff 100644
--- a/lib/public/Route/IRoute.php
+++ b/lib/public/Route/IRoute.php
@@ -34,8 +34,9 @@ interface IRoute {
* it is called directly
*
* @param string $file
- * @return void
+ * @return $this
* @since 7.0.0
+ * @deprecated 32.0.0 Use a proper controller instead
*/
public function actionInclude($file);
@@ -70,6 +71,7 @@ interface IRoute {
* This function is called with $class set to a callable or
* to the class with $function
* @since 7.0.0
+ * @deprecated 32.0.0 Use a proper controller instead
*/
public function action($class, $function = null);
diff --git a/lib/public/Security/IContentSecurityPolicyManager.php b/lib/public/Security/IContentSecurityPolicyManager.php
index 3df0da465b2..00cdcc2c454 100644
--- a/lib/public/Security/IContentSecurityPolicyManager.php
+++ b/lib/public/Security/IContentSecurityPolicyManager.php
@@ -24,7 +24,7 @@ interface IContentSecurityPolicyManager {
* Note that the adjustment is only applied to applications that use AppFramework
* controllers.
*
- * To use this from your `app.php` use `\OC::$server->getContentSecurityPolicyManager()->addDefaultPolicy($policy)`,
+ * To use this from your `app.php` use `\OCP\Server::get(IContentSecurityPolicyManager::class)->addDefaultPolicy($policy)`,
* $policy has to be of type `\OCP\AppFramework\Http\ContentSecurityPolicy`.
*
* WARNING: Using this API incorrectly may make the instance more insecure.
diff --git a/lib/public/Settings/IDeclarativeSettingsForm.php b/lib/public/Settings/IDeclarativeSettingsForm.php
index d471cdf4a93..419905b7b23 100644
--- a/lib/public/Settings/IDeclarativeSettingsForm.php
+++ b/lib/public/Settings/IDeclarativeSettingsForm.php
@@ -27,6 +27,7 @@ namespace OCP\Settings;
* label?: string,
* default: mixed,
* options?: list<string|array{name: string, value: mixed}>,
+ * sensitive?: boolean,
* }
*
* @psalm-type DeclarativeSettingsFormFieldWithValue = DeclarativeSettingsFormField&array{
diff --git a/lib/public/Settings/IIconSection.php b/lib/public/Settings/IIconSection.php
index e514a0176b7..4d0fe40aa29 100644
--- a/lib/public/Settings/IIconSection.php
+++ b/lib/public/Settings/IIconSection.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Settings/IManager.php b/lib/public/Settings/IManager.php
index 0bb1a396671..954fd3fdb56 100644
--- a/lib/public/Settings/IManager.php
+++ b/lib/public/Settings/IManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Settings/ISettings.php b/lib/public/Settings/ISettings.php
index a733eb7956d..e33556f0b4a 100644
--- a/lib/public/Settings/ISettings.php
+++ b/lib/public/Settings/ISettings.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Share/IAttributes.php b/lib/public/Share/IAttributes.php
index fad19c60aad..9ddd8275dd6 100644
--- a/lib/public/Share/IAttributes.php
+++ b/lib/public/Share/IAttributes.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 ownCloud GmbH
* SPDX-License-Identifier: AGPL-3.0-only
diff --git a/lib/public/Share/IManager.php b/lib/public/Share/IManager.php
index 89d6f5e4a87..35915ad9d90 100644
--- a/lib/public/Share/IManager.php
+++ b/lib/public/Share/IManager.php
@@ -473,6 +473,14 @@ interface IManager {
public function allowCustomTokens(): bool;
/**
+ * Check if the current user can view the share
+ * even if the download is disabled.
+ *
+ * @since 32.0.0
+ */
+ public function allowViewWithoutDownload(): bool;
+
+ /**
* Check if the current user can enumerate the target user
*
* @param IUser|null $currentUser
diff --git a/lib/public/Share/IProviderFactory.php b/lib/public/Share/IProviderFactory.php
index 34656af2d8c..9107274c8c1 100644
--- a/lib/public/Share/IProviderFactory.php
+++ b/lib/public/Share/IProviderFactory.php
@@ -39,7 +39,8 @@ interface IProviderFactory {
/**
* @since 21.0.0
- * @param string $shareProvier
+ * @since 32.0.0 Fix typo in parameter name
+ * @param string $shareProviderClass
*/
- public function registerProvider(string $shareProvier): void;
+ public function registerProvider(string $shareProviderClass): void;
}
diff --git a/lib/public/Share/IShare.php b/lib/public/Share/IShare.php
index 337210e3b91..5d8c64e1314 100644
--- a/lib/public/Share/IShare.php
+++ b/lib/public/Share/IShare.php
@@ -633,4 +633,11 @@ interface IShare {
* @since 31.0.0
*/
public function getReminderSent(): bool;
+
+ /**
+ * Check if the current user can see this share files contents.
+ * This will check the download permissions as well as the global
+ * admin setting to allow viewing files without downloading.
+ */
+ public function canSeeContent(): bool;
}
diff --git a/lib/public/Share/IShareHelper.php b/lib/public/Share/IShareHelper.php
index c4a33e717f9..152fc99a446 100644
--- a/lib/public/Share/IShareHelper.php
+++ b/lib/public/Share/IShareHelper.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/TaskProcessing/IManager.php b/lib/public/TaskProcessing/IManager.php
index 68825e82533..f161030f5f4 100644
--- a/lib/public/TaskProcessing/IManager.php
+++ b/lib/public/TaskProcessing/IManager.php
@@ -47,11 +47,13 @@ interface IManager {
/**
* @param bool $showDisabled if false, disabled task types will be filtered
+ * @param ?string $userId to check if the user is a guest. Will be obtained from session if left to default
* @return array<string, array{name: string, description: string, inputShape: ShapeDescriptor[], inputShapeEnumValues: ShapeEnumValue[][], inputShapeDefaults: array<array-key, numeric|string>, optionalInputShape: ShapeDescriptor[], optionalInputShapeEnumValues: ShapeEnumValue[][], optionalInputShapeDefaults: array<array-key, numeric|string>, outputShape: ShapeDescriptor[], outputShapeEnumValues: ShapeEnumValue[][], optionalOutputShape: ShapeDescriptor[], optionalOutputShapeEnumValues: ShapeEnumValue[][]}>
* @since 30.0.0
* @since 31.0.0 Added the `showDisabled` argument.
+ * @since 31.0.7 Added the `userId` argument
*/
- public function getAvailableTaskTypes(bool $showDisabled = false): array;
+ public function getAvailableTaskTypes(bool $showDisabled = false, ?string $userId = null): array;
/**
* @param Task $task The task to run
diff --git a/lib/public/Teams/ITeamManager.php b/lib/public/Teams/ITeamManager.php
index 144a141f93e..3f737b4229c 100644
--- a/lib/public/Teams/ITeamManager.php
+++ b/lib/public/Teams/ITeamManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Teams/ITeamResourceProvider.php b/lib/public/Teams/ITeamResourceProvider.php
index 54c4879a47c..ff724ab8ae2 100644
--- a/lib/public/Teams/ITeamResourceProvider.php
+++ b/lib/public/Teams/ITeamResourceProvider.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Teams/Team.php b/lib/public/Teams/Team.php
index 8ece28bf648..474ebaed84f 100644
--- a/lib/public/Teams/Team.php
+++ b/lib/public/Teams/Team.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Teams/TeamResource.php b/lib/public/Teams/TeamResource.php
index e9c6470b2c9..acb98380562 100644
--- a/lib/public/Teams/TeamResource.php
+++ b/lib/public/Teams/TeamResource.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/Template.php b/lib/public/Template.php
index 715115bc635..c29de52db4f 100644
--- a/lib/public/Template.php
+++ b/lib/public/Template.php
@@ -23,7 +23,7 @@ require_once __DIR__ . '/../private/Template/functions.php';
*/
class Template extends \OC_Template implements ITemplate {
/**
- * Make OC_Helper::imagePath available as a simple function
+ * Make \OCP\IURLGenerator::imagePath available as a simple function
*
* @see \OCP\IURLGenerator::imagePath
*
@@ -39,7 +39,7 @@ class Template extends \OC_Template implements ITemplate {
/**
- * Make OC_Helper::mimetypeIcon available as a simple function
+ * Make IMimeTypeDetector->mimeTypeIcon available as a simple function
*
* @param string $mimetype
* @return string to the image of this file type.
diff --git a/lib/public/Util.php b/lib/public/Util.php
index 979e7abe609..b3111c54fc7 100644
--- a/lib/public/Util.php
+++ b/lib/public/Util.php
@@ -491,7 +491,12 @@ class Util {
* @since 4.5.0
*/
public static function mb_array_change_key_case($input, $case = MB_CASE_LOWER, $encoding = 'UTF-8') {
- return \OC_Helper::mb_array_change_key_case($input, $case, $encoding);
+ $case = ($case != MB_CASE_UPPER) ? MB_CASE_LOWER : MB_CASE_UPPER;
+ $ret = [];
+ foreach ($input as $k => $v) {
+ $ret[mb_convert_case($k, $case, $encoding)] = $v;
+ }
+ return $ret;
}
/**
@@ -505,7 +510,18 @@ class Util {
* @deprecated 15.0.0
*/
public static function recursiveArraySearch($haystack, $needle, $index = null) {
- return \OC_Helper::recursiveArraySearch($haystack, $needle, $index);
+ $aIt = new \RecursiveArrayIterator($haystack);
+ $it = new \RecursiveIteratorIterator($aIt);
+
+ while ($it->valid()) {
+ if (((isset($index) and ($it->key() == $index)) or !isset($index)) and ($it->current() == $needle)) {
+ return $aIt->key();
+ }
+
+ $it->next();
+ }
+
+ return false;
}
/**
@@ -517,7 +533,10 @@ class Util {
* @since 5.0.0
*/
public static function maxUploadFilesize(string $dir, int|float|null $free = null): int|float {
- return \OC_Helper::maxUploadFilesize($dir, $free);
+ if (is_null($free) || $free < 0) {
+ $free = self::freeSpace($dir);
+ }
+ return min($free, self::uploadLimit());
}
/**
@@ -527,7 +546,13 @@ class Util {
* @since 7.0.0
*/
public static function freeSpace(string $dir): int|float {
- return \OC_Helper::freeSpace($dir);
+ $freeSpace = \OC\Files\Filesystem::free_space($dir);
+ if ($freeSpace < \OCP\Files\FileInfo::SPACE_UNLIMITED) {
+ $freeSpace = max($freeSpace, 0);
+ return $freeSpace;
+ } else {
+ return (INF > 0)? INF: PHP_INT_MAX; // work around https://bugs.php.net/bug.php?id=69188
+ }
}
/**
@@ -537,7 +562,16 @@ class Util {
* @since 7.0.0
*/
public static function uploadLimit(): int|float {
- return \OC_Helper::uploadLimit();
+ $ini = Server::get(IniGetWrapper::class);
+ $upload_max_filesize = self::computerFileSize($ini->get('upload_max_filesize')) ?: 0;
+ $post_max_size = self::computerFileSize($ini->get('post_max_size')) ?: 0;
+ if ($upload_max_filesize === 0 && $post_max_size === 0) {
+ return INF;
+ } elseif ($upload_max_filesize === 0 || $post_max_size === 0) {
+ return max($upload_max_filesize, $post_max_size); //only the non 0 value counts
+ } else {
+ return min($upload_max_filesize, $post_max_size);
+ }
}
/**
diff --git a/lib/public/WorkflowEngine/ICheck.php b/lib/public/WorkflowEngine/ICheck.php
index 79c1a864ae0..4671eb84c3e 100644
--- a/lib/public/WorkflowEngine/ICheck.php
+++ b/lib/public/WorkflowEngine/ICheck.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/WorkflowEngine/IManager.php b/lib/public/WorkflowEngine/IManager.php
index b9235abafef..f66a9460f06 100644
--- a/lib/public/WorkflowEngine/IManager.php
+++ b/lib/public/WorkflowEngine/IManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/lib/public/WorkflowEngine/IOperation.php b/lib/public/WorkflowEngine/IOperation.php
index 9f867eb811a..cda20acb7e5 100644
--- a/lib/public/WorkflowEngine/IOperation.php
+++ b/lib/public/WorkflowEngine/IOperation.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later