diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml
index 64a332764486d..1b3611c5e31a2 100644
--- a/build/psalm-baseline.xml
+++ b/build/psalm-baseline.xml
@@ -44,6 +44,9 @@
+
+
+
@@ -52,6 +55,9 @@
+
+
+
@@ -63,6 +69,10 @@
+
+
+
+
@@ -2083,7 +2093,6 @@
-
diff --git a/build/psalm/OcpSinceChecker.php b/build/psalm/OcpSinceChecker.php
index c4e8f71782802..9323b07feb7a6 100644
--- a/build/psalm/OcpSinceChecker.php
+++ b/build/psalm/OcpSinceChecker.php
@@ -1,12 +1,17 @@
stmts as $stmt) {
if ($stmt instanceof ClassConst) {
self::checkStatementComment($stmt, $statementsSource, 'constant');
}
- if ($stmt instanceof ClassMethod) {
+ if ($stmt instanceof ClassMethod && ($stmt->isPublic() || $stmt->isProtected())) {
self::checkStatementComment($stmt, $statementsSource, 'method');
}
diff --git a/lib/public/AppFramework/Attribute/ASince.php b/lib/public/AppFramework/Attribute/ASince.php
index 1e0c45348cfc2..3f5953a78c92a 100644
--- a/lib/public/AppFramework/Attribute/ASince.php
+++ b/lib/public/AppFramework/Attribute/ASince.php
@@ -22,12 +22,16 @@ abstract class ASince {
* @param string $since For shipped apps and server code such as core/ and lib/,
* this should be the server version. For other apps it
* should be the semantic app version.
+ * @since 32.0.0
*/
public function __construct(
protected string $since,
) {
}
+ /**
+ * @since 32.0.0
+ */
public function getSince(): string {
return $this->since;
}
diff --git a/lib/public/AppFramework/Attribute/ExceptionalImplementable.php b/lib/public/AppFramework/Attribute/ExceptionalImplementable.php
index 23e9f830d9bed..04905a397d49d 100644
--- a/lib/public/AppFramework/Attribute/ExceptionalImplementable.php
+++ b/lib/public/AppFramework/Attribute/ExceptionalImplementable.php
@@ -22,16 +22,25 @@
#[Consumable(since: '32.0.0')]
#[Implementable(since: '32.0.0')]
class ExceptionalImplementable {
+ /**
+ * @since 32.0.0
+ */
public function __construct(
protected string $app,
protected ?string $class = null,
) {
}
+ /**
+ * @since 32.0.0
+ */
public function getApp(): string {
return $this->app;
}
+ /**
+ * @since 32.0.0
+ */
public function getClass(): ?string {
return $this->class;
}
diff --git a/lib/public/AppFramework/Controller.php b/lib/public/AppFramework/Controller.php
index a4c0ae49ddbfa..d4f26bef00713 100644
--- a/lib/public/AppFramework/Controller.php
+++ b/lib/public/AppFramework/Controller.php
@@ -141,6 +141,9 @@ public function buildResponse($response, $format = 'json') {
. $format . '!');
}
+ /**
+ * @since 33.0.0
+ */
public function isResponderRegistered(string $responder): bool {
return isset($this->responders[$responder]);
}
diff --git a/lib/public/AppFramework/Db/SnowflakeAwareEntity.php b/lib/public/AppFramework/Db/SnowflakeAwareEntity.php
index 87c91e995b811..1085927fffe62 100644
--- a/lib/public/AppFramework/Db/SnowflakeAwareEntity.php
+++ b/lib/public/AppFramework/Db/SnowflakeAwareEntity.php
@@ -26,12 +26,16 @@ abstract class SnowflakeAwareEntity extends Entity {
/** @psalm-param $_fieldTypes array */
protected array $_fieldTypes = ['id' => Types::STRING];
+ /**
+ * @since 33.0.0
+ */
public function setId($id): void {
throw new \LogicException('Use generated id to set a new id to the Snowflake aware entity.');
}
/**
* Automatically creates a snowflake ID
+ * @since 33.0.0
*/
public function generateId(): void {
if ($this->id === null) {
@@ -41,10 +45,16 @@ public function generateId(): void {
}
}
+ /**
+ * @since 33.0.0
+ */
public function getCreatedAt(): ?\DateTimeImmutable {
return $this->getSnowflake()?->getCreatedAt();
}
+ /**
+ * @since 33.0.0
+ */
public function getSnowflake(): ?Snowflake {
if ($this->id === null) {
return null;
diff --git a/lib/public/AppFramework/Http/Attribute/RequestHeader.php b/lib/public/AppFramework/Http/Attribute/RequestHeader.php
index 1d0fbbfa0c30f..0f8e9035cce74 100644
--- a/lib/public/AppFramework/Http/Attribute/RequestHeader.php
+++ b/lib/public/AppFramework/Http/Attribute/RequestHeader.php
@@ -24,6 +24,7 @@ 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.
+ * @since 32.0.0
*/
public function __construct(
protected string $name,
diff --git a/lib/public/AppFramework/PublicShareController.php b/lib/public/AppFramework/PublicShareController.php
index 9bab261d7bd5f..feb4ca53a388f 100644
--- a/lib/public/AppFramework/PublicShareController.php
+++ b/lib/public/AppFramework/PublicShareController.php
@@ -26,6 +26,9 @@
*/
abstract class PublicShareController extends Controller {
+ /**
+ * @since 33.0.0
+ */
public const DAV_AUTHENTICATED_FRONTEND = 'public_link_authenticated_frontend';
/** @var string */
@@ -118,6 +121,8 @@ public function shareNotFound() {
/**
* Validate the token and password hash stored in session
+ *
+ * @since 33.0.0
*/
protected function validateTokenSession(string $token, string $passwordHash): bool {
$allowedTokensJSON = $this->session->get(self::DAV_AUTHENTICATED_FRONTEND) ?? '[]';
@@ -131,6 +136,8 @@ protected function validateTokenSession(string $token, string $passwordHash): bo
/**
* Store the token and password hash in session
+ *
+ * @since 33.0.0
*/
protected function storeTokenSession(string $token, string $passwordHash = ''): void {
$allowedTokensJSON = $this->session->get(self::DAV_AUTHENTICATED_FRONTEND) ?? '[]';
diff --git a/lib/public/BackgroundJob/Job.php b/lib/public/BackgroundJob/Job.php
index 2d55238362133..dbf3dda866d05 100644
--- a/lib/public/BackgroundJob/Job.php
+++ b/lib/public/BackgroundJob/Job.php
@@ -35,6 +35,9 @@ public function __construct(
) {
}
+ /**
+ * @since 25.0.0
+ */
#[Override]
public function start(IJobList $jobList): void {
$jobList->setLastRun($this);
@@ -59,45 +62,72 @@ public function start(IJobList $jobList): void {
}
}
+ /**
+ * @since 15.0.0
+ */
#[Override]
final public function setId(string $id): void {
$this->id = $id;
}
+ /**
+ * @since 15.0.0
+ */
#[Override]
final public function setLastRun(int $lastRun): void {
$this->lastRun = $lastRun;
}
+ /**
+ * @since 15.0.0
+ */
#[Override]
public function setArgument(mixed $argument): void {
$this->argument = $argument;
}
+ /**
+ * @since 15.0.0
+ */
#[Override]
final public function getId(): string {
return $this->id;
}
+ /**
+ * @since 15.0.0
+ */
#[Override]
final public function getLastRun(): int {
return $this->lastRun;
}
+ /**
+ * @since 15.0.0
+ */
#[Override]
public function getArgument(): mixed {
return $this->argument;
}
+ /**
+ * @since 25.0.0
+ */
#[Override]
public function setAllowParallelRuns(bool $allow): void {
$this->allowParallelRuns = $allow;
}
+ /**
+ * @since 25.0.0
+ */
#[Override]
public function getAllowParallelRuns(): bool {
return $this->allowParallelRuns;
}
+ /**
+ * @since 15.0.0
+ */
abstract protected function run($argument);
}
diff --git a/lib/public/Calendar/CalendarExportOptions.php b/lib/public/Calendar/CalendarExportOptions.php
index bf21dd85ae49d..a7778f57852b6 100644
--- a/lib/public/Calendar/CalendarExportOptions.php
+++ b/lib/public/Calendar/CalendarExportOptions.php
@@ -24,6 +24,7 @@ final class CalendarExportOptions {
* Gets the export format
*
* @return 'ical'|'jcal'|'xcal' (defaults to ical)
+ * @since 32.0.0
*/
public function getFormat(): string {
return $this->format;
@@ -33,6 +34,7 @@ public function getFormat(): string {
* Sets the export format
*
* @param 'ical'|'jcal'|'xcal' $format
+ * @since 32.0.0
*/
public function setFormat(string $format): void {
$this->format = $format;
@@ -40,6 +42,8 @@ public function setFormat(string $format): void {
/**
* Gets the start of the range to export
+ *
+ * @since 32.0.0
*/
public function getRangeStart(): ?string {
return $this->rangeStart;
@@ -47,6 +51,8 @@ public function getRangeStart(): ?string {
/**
* Sets the start of the range to export
+ *
+ * @since 32.0.0
*/
public function setRangeStart(?string $rangeStart): void {
$this->rangeStart = $rangeStart;
@@ -54,6 +60,8 @@ public function setRangeStart(?string $rangeStart): void {
/**
* Gets the number of objects to export
+ *
+ * @since 32.0.0
*/
public function getRangeCount(): ?int {
return $this->rangeCount;
@@ -61,6 +69,8 @@ public function getRangeCount(): ?int {
/**
* Sets the number of objects to export
+ *
+ * @since 32.0.0
*/
public function setRangeCount(?int $rangeCount): void {
$this->rangeCount = $rangeCount;
diff --git a/lib/public/Calendar/CalendarImportOptions.php b/lib/public/Calendar/CalendarImportOptions.php
index 2bdddfd50b37a..f5f330a425497 100644
--- a/lib/public/Calendar/CalendarImportOptions.php
+++ b/lib/public/Calendar/CalendarImportOptions.php
@@ -16,18 +16,42 @@
*/
final class CalendarImportOptions {
+ /**
+ * @since 32.0.0
+ */
public const FORMATS = ['ical', 'jcal', 'xcal'];
+ /**
+ * @since 32.0.0
+ */
public const VALIDATE_NONE = 0;
+ /**
+ * @since 32.0.0
+ */
public const VALIDATE_SKIP = 1;
+ /**
+ * @since 32.0.0
+ */
public const VALIDATE_FAIL = 2;
+ /**
+ * @since 32.0.0
+ */
public const VALIDATE_OPTIONS = [
self::VALIDATE_NONE,
self::VALIDATE_SKIP,
self::VALIDATE_FAIL,
];
+ /**
+ * @since 32.0.0
+ */
public const ERROR_CONTINUE = 0;
+ /**
+ * @since 32.0.0
+ */
public const ERROR_FAIL = 1;
+ /**
+ * @since 32.0.0
+ */
public const ERROR_OPTIONS = [
self::ERROR_CONTINUE,
self::ERROR_FAIL,
@@ -43,6 +67,7 @@ final class CalendarImportOptions {
* Gets the import format
*
* @return 'ical'|'jcal'|'xcal' (defaults to ical)
+ * @since 32.0.0
*/
public function getFormat(): string {
return $this->format;
@@ -52,6 +77,7 @@ public function getFormat(): string {
* Sets the import format
*
* @param 'ical'|'jcal'|'xcal' $value
+ * @since 32.0.0
*/
public function setFormat(string $value): void {
if (!in_array($value, self::FORMATS, true)) {
@@ -62,6 +88,8 @@ public function setFormat(string $value): void {
/**
* Gets whether to supersede existing objects
+ *
+ * @since 32.0.0
*/
public function getSupersede(): bool {
return $this->supersede;
@@ -69,6 +97,8 @@ public function getSupersede(): bool {
/**
* Sets whether to supersede existing objects
+ *
+ * @since 32.0.0
*/
public function setSupersede(bool $supersede): void {
$this->supersede = $supersede;
@@ -78,6 +108,7 @@ public function setSupersede(bool $supersede): void {
* Gets how to handle object errors
*
* @return int 0 - continue, 1 - fail
+ * @since 32.0.0
*/
public function getErrors(): int {
return $this->errors;
@@ -89,6 +120,7 @@ public function getErrors(): int {
* @param int $value 0 - continue, 1 - fail
*
* @template $value of self::ERROR_*
+ * @since 32.0.0
*/
public function setErrors(int $value): void {
if (!in_array($value, CalendarImportOptions::ERROR_OPTIONS, true)) {
@@ -101,6 +133,7 @@ public function setErrors(int $value): void {
* Gets how to handle object validation
*
* @return int 0 - no validation, 1 - validate and skip on issue, 2 - validate and fail on issue
+ * @since 32.0.0
*/
public function getValidate(): int {
return $this->validate;
@@ -112,6 +145,7 @@ public function getValidate(): int {
* @param int $value 0 - no validation, 1 - validate and skip on issue, 2 - validate and fail on issue
*
* @template $value of self::VALIDATE_*
+ * @since 32.0.0
*/
public function setValidate(int $value): void {
if (!in_array($value, CalendarImportOptions::VALIDATE_OPTIONS, true)) {
diff --git a/lib/public/Comments/CommentsEvent.php b/lib/public/Comments/CommentsEvent.php
index deaeb4b4009a0..46e6ad202ac71 100644
--- a/lib/public/Comments/CommentsEvent.php
+++ b/lib/public/Comments/CommentsEvent.php
@@ -57,7 +57,7 @@ public function __construct(
/**
* @since 9.0.0
- * @depreacted Since 33.0.0 use instanceof CommentAddedEvent, CommentRemovedEvent, CommentUpdatedEvent or BeforeCommentUpdatedEvent instead.
+ * @deprecated 33.0.0 Use instanceof CommentAddedEvent, CommentRemovedEvent, CommentUpdatedEvent or BeforeCommentUpdatedEvent instead.
*/
public function getEvent(): string {
return $this->event;
diff --git a/lib/public/Comments/Events/BeforeCommentUpdatedEvent.php b/lib/public/Comments/Events/BeforeCommentUpdatedEvent.php
index c8b0b172c8a89..15df999a42748 100644
--- a/lib/public/Comments/Events/BeforeCommentUpdatedEvent.php
+++ b/lib/public/Comments/Events/BeforeCommentUpdatedEvent.php
@@ -20,6 +20,8 @@
final class BeforeCommentUpdatedEvent extends CommentsEvent {
/**
* CommentEvent constructor.
+ *
+ * @since 33.0.0
*/
public function __construct(IComment $comment) {
/** @psalm-suppress DeprecatedConstant */
diff --git a/lib/public/Comments/Events/CommentAddedEvent.php b/lib/public/Comments/Events/CommentAddedEvent.php
index db4d22689e725..3323b46a93e3f 100644
--- a/lib/public/Comments/Events/CommentAddedEvent.php
+++ b/lib/public/Comments/Events/CommentAddedEvent.php
@@ -20,6 +20,8 @@
final class CommentAddedEvent extends CommentsEvent {
/**
* CommentAddedEvent constructor.
+ *
+ * @since 33.0.0
*/
public function __construct(IComment $comment) {
/** @psalm-suppress DeprecatedConstant */
diff --git a/lib/public/Comments/Events/CommentDeletedEvent.php b/lib/public/Comments/Events/CommentDeletedEvent.php
index 6178d70237c6d..b2f146ce50fb0 100644
--- a/lib/public/Comments/Events/CommentDeletedEvent.php
+++ b/lib/public/Comments/Events/CommentDeletedEvent.php
@@ -20,6 +20,8 @@
final class CommentDeletedEvent extends CommentsEvent {
/**
* CommentRemovedEvent constructor.
+ *
+ * @since 33.0.0
*/
public function __construct(IComment $comment) {
/** @psalm-suppress DeprecatedConstant */
diff --git a/lib/public/Comments/Events/CommentUpdatedEvent.php b/lib/public/Comments/Events/CommentUpdatedEvent.php
index b029ce702a1bc..23d21500ecb9a 100644
--- a/lib/public/Comments/Events/CommentUpdatedEvent.php
+++ b/lib/public/Comments/Events/CommentUpdatedEvent.php
@@ -20,6 +20,8 @@
final class CommentUpdatedEvent extends CommentsEvent {
/**
* CommentUpdatedEvent constructor.
+ *
+ * @since 33.0.0
*/
public function __construct(IComment $comment) {
/** @psalm-suppress DeprecatedConstant */
diff --git a/lib/public/ContextChat/Events/ContentProviderRegisterEvent.php b/lib/public/ContextChat/Events/ContentProviderRegisterEvent.php
index 32a542a0dbf5a..48e8c2e3ae95a 100644
--- a/lib/public/ContextChat/Events/ContentProviderRegisterEvent.php
+++ b/lib/public/ContextChat/Events/ContentProviderRegisterEvent.php
@@ -17,6 +17,9 @@
* @since 32.0.0
*/
class ContentProviderRegisterEvent extends Event {
+ /**
+ * @since 32.0.0
+ */
public function __construct(
private IContentManager $contentManager,
) {
diff --git a/lib/public/ContextChat/Type/UpdateAccessOp.php b/lib/public/ContextChat/Type/UpdateAccessOp.php
index 65100d1ce8363..21a4185b3924c 100644
--- a/lib/public/ContextChat/Type/UpdateAccessOp.php
+++ b/lib/public/ContextChat/Type/UpdateAccessOp.php
@@ -13,6 +13,12 @@
* @since 32.0.0
*/
class UpdateAccessOp {
+ /**
+ * @since 32.0.0
+ */
public const ALLOW = 'allow';
+ /**
+ * @since 32.0.0
+ */
public const DENY = 'deny';
}
diff --git a/lib/public/DB/QueryBuilder/ConflictResolutionMode.php b/lib/public/DB/QueryBuilder/ConflictResolutionMode.php
index 56a59b39099c4..b41c314b5f487 100644
--- a/lib/public/DB/QueryBuilder/ConflictResolutionMode.php
+++ b/lib/public/DB/QueryBuilder/ConflictResolutionMode.php
@@ -17,10 +17,14 @@
enum ConflictResolutionMode {
/**
* Wait for the row to be unlocked.
+ *
+ * @since 34.0.0
*/
case Ordinary;
/**
* Skip the row if it is locked.
+ *
+ * @since 34.0.0
*/
case SkipLocked;
}
diff --git a/lib/public/DB/QueryBuilder/ITypedQueryBuilder.php b/lib/public/DB/QueryBuilder/ITypedQueryBuilder.php
index 1901a22e74940..5a9063138023e 100644
--- a/lib/public/DB/QueryBuilder/ITypedQueryBuilder.php
+++ b/lib/public/DB/QueryBuilder/ITypedQueryBuilder.php
@@ -22,6 +22,7 @@ interface ITypedQueryBuilder extends IQueryBuilder {
/**
* @inheritDoc
* @return IResult
+ * @since 34.0.0
*/
#[Override]
public function executeQuery(?IDBConnection $connection = null): IResult;
@@ -29,6 +30,7 @@ public function executeQuery(?IDBConnection $connection = null): IResult;
/**
* @inheritDoc
* @internal This method does not work with {@see self}. Use {@see self::selectColumns()} or {@see self::selectAlias()} instead.
+ * @since 34.0.0
*/
#[Override]
public function select(...$selects);
@@ -46,6 +48,7 @@ public function selectColumns(string ...$columns): self;
/**
* @inheritDoc
* @internal This method does not work with {@see self}. Use {@see self::selectColumnDistinct()} or {@see self::selectAlias()} instead.
+ * @since 34.0.0
*/
#[Override]
public function selectDistinct($select);
@@ -63,6 +66,7 @@ public function selectColumnsDistinct(string ...$columns): self;
/**
* @inheritDoc
* @internal This method does not work with {@see self}. Use {@see self::selectColumns()} or {@see self::selectAlias()} instead.
+ * @since 34.0.0
*/
#[Override]
public function addSelect(...$select);
@@ -75,6 +79,7 @@ public function addSelect(...$select);
* @psalm-this-out self
* @return $this
* @note Psalm has a bug that prevents inferring the correct type in chained calls: https://github.com/vimeo/psalm/issues/8803. Convert the chained calls to standalone calls or switch to PHPStan, which suffered the same bug in the past, but fixed it in 2.1.5: https://github.com/phpstan/phpstan/issues/8439
+ * @since 34.0.0
*/
#[Override]
public function selectAlias($select, $alias): self;
@@ -83,6 +88,7 @@ public function selectAlias($select, $alias): self;
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function setParameter($key, $value, $type = null);
@@ -90,6 +96,7 @@ public function setParameter($key, $value, $type = null);
/**
* @inheritDoc
* @return $this
+ * @since 34.0.0
*/
#[Override]
public function setParameters(array $params, array $types = []);
@@ -98,6 +105,7 @@ public function setParameters(array $params, array $types = []);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function setFirstResult($firstResult);
@@ -106,6 +114,7 @@ public function setFirstResult($firstResult);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function setMaxResults($maxResults);
@@ -114,6 +123,7 @@ public function setMaxResults($maxResults);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function delete($delete = null, $alias = null);
@@ -122,6 +132,7 @@ public function delete($delete = null, $alias = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function update($update = null, $alias = null);
@@ -130,6 +141,7 @@ public function update($update = null, $alias = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function insert($insert = null);
@@ -138,6 +150,7 @@ public function insert($insert = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function from($from, $alias = null);
@@ -146,6 +159,7 @@ public function from($from, $alias = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function join($fromAlias, $join, $alias, $condition = null);
@@ -154,6 +168,7 @@ public function join($fromAlias, $join, $alias, $condition = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function innerJoin($fromAlias, $join, $alias, $condition = null);
@@ -162,6 +177,7 @@ public function innerJoin($fromAlias, $join, $alias, $condition = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function leftJoin($fromAlias, $join, $alias, $condition = null);
@@ -170,6 +186,7 @@ public function leftJoin($fromAlias, $join, $alias, $condition = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function rightJoin($fromAlias, $join, $alias, $condition = null);
@@ -178,6 +195,7 @@ public function rightJoin($fromAlias, $join, $alias, $condition = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function set($key, $value);
@@ -186,6 +204,7 @@ public function set($key, $value);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function where(...$predicates);
@@ -194,6 +213,7 @@ public function where(...$predicates);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function andWhere(...$where);
@@ -202,6 +222,7 @@ public function andWhere(...$where);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function orWhere(...$where);
@@ -210,6 +231,7 @@ public function orWhere(...$where);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function groupBy(...$groupBys);
@@ -218,6 +240,7 @@ public function groupBy(...$groupBys);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function addGroupBy(...$groupBy);
@@ -226,6 +249,7 @@ public function addGroupBy(...$groupBy);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function setValue($column, $value);
@@ -233,6 +257,7 @@ public function setValue($column, $value);
/**
* @inheritDoc
* @return $this
+ * @since 34.0.0
*/
#[Override]
public function values(array $values);
@@ -241,6 +266,7 @@ public function values(array $values);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function having(...$having);
@@ -249,6 +275,7 @@ public function having(...$having);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function andHaving(...$having);
@@ -257,6 +284,7 @@ public function andHaving(...$having);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function orHaving(...$having);
@@ -265,6 +293,7 @@ public function orHaving(...$having);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function orderBy($sort, $order = null);
@@ -273,6 +302,7 @@ public function orderBy($sort, $order = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function addOrderBy($sort, $order = null);
@@ -281,6 +311,7 @@ public function addOrderBy($sort, $order = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function resetQueryParts($queryPartNames = null);
@@ -289,6 +320,7 @@ public function resetQueryParts($queryPartNames = null);
* @inheritDoc
* @return $this
* @psalm-suppress MissingParamType
+ * @since 34.0.0
*/
#[Override]
public function resetQueryPart($queryPartName);
@@ -296,6 +328,7 @@ public function resetQueryPart($queryPartName);
/**
* @inheritDoc
* @return $this
+ * @since 34.0.0
*/
#[Override]
public function hintShardKey(string $column, mixed $value, bool $overwrite = false): self;
@@ -303,6 +336,7 @@ public function hintShardKey(string $column, mixed $value, bool $overwrite = fal
/**
* @inheritDoc
* @return $this
+ * @since 34.0.0
*/
#[Override]
public function runAcrossAllShards(): self;
@@ -310,6 +344,7 @@ public function runAcrossAllShards(): self;
/**
* @inheritDoc
* @return $this
+ * @since 34.0.0
*/
#[Override]
public function forUpdate(ConflictResolutionMode $conflictResolutionMode = ConflictResolutionMode::Ordinary): self;
diff --git a/lib/public/Files/Cache/CacheEntriesRemovedEvent.php b/lib/public/Files/Cache/CacheEntriesRemovedEvent.php
index 6038c3ce4a44d..35c3f79844f84 100644
--- a/lib/public/Files/Cache/CacheEntriesRemovedEvent.php
+++ b/lib/public/Files/Cache/CacheEntriesRemovedEvent.php
@@ -21,6 +21,7 @@
class CacheEntriesRemovedEvent extends Event {
/**
* @param ICacheEvent[] $cacheEntryRemovedEvents
+ * @since 34.0.0
*/
public function __construct(
private readonly array $cacheEntryRemovedEvents,
@@ -30,6 +31,7 @@ public function __construct(
/**
* @return ICacheEvent[]
+ * @since 34.0.0
*/
public function getCacheEntryRemovedEvents(): array {
return $this->cacheEntryRemovedEvents;
diff --git a/lib/public/Files/Config/Event/UserMountAddedEvent.php b/lib/public/Files/Config/Event/UserMountAddedEvent.php
index 8abd751218832..d0ee2c225328d 100644
--- a/lib/public/Files/Config/Event/UserMountAddedEvent.php
+++ b/lib/public/Files/Config/Event/UserMountAddedEvent.php
@@ -18,6 +18,9 @@
* @since 32.0.0
*/
class UserMountAddedEvent extends Event {
+ /**
+ * @since 32.0.0
+ */
public function __construct(
public readonly ICachedMountInfo $mountPoint,
) {
diff --git a/lib/public/Files/Config/Event/UserMountRemovedEvent.php b/lib/public/Files/Config/Event/UserMountRemovedEvent.php
index 0de7cfc4a9906..b1094a05303e3 100644
--- a/lib/public/Files/Config/Event/UserMountRemovedEvent.php
+++ b/lib/public/Files/Config/Event/UserMountRemovedEvent.php
@@ -18,6 +18,9 @@
* @since 32.0.0
*/
class UserMountRemovedEvent extends Event {
+ /**
+ * @since 32.0.0
+ */
public function __construct(
public readonly ICachedMountInfo $mountPoint,
) {
diff --git a/lib/public/Files/Config/Event/UserMountUpdatedEvent.php b/lib/public/Files/Config/Event/UserMountUpdatedEvent.php
index f797bef134e6b..15f37e4e5d9d5 100644
--- a/lib/public/Files/Config/Event/UserMountUpdatedEvent.php
+++ b/lib/public/Files/Config/Event/UserMountUpdatedEvent.php
@@ -18,6 +18,9 @@
* @since 32.0.0
*/
class UserMountUpdatedEvent extends Event {
+ /**
+ * @since 32.0.0
+ */
public function __construct(
public readonly ICachedMountInfo $oldMountPoint,
public readonly ICachedMountInfo $newMountPoint,
diff --git a/lib/public/Files/Config/IPartialMountProvider.php b/lib/public/Files/Config/IPartialMountProvider.php
index bac962d60ddc3..0b603e500baf6 100644
--- a/lib/public/Files/Config/IPartialMountProvider.php
+++ b/lib/public/Files/Config/IPartialMountProvider.php
@@ -50,6 +50,7 @@ interface IPartialMountProvider extends IMountProvider {
* in the scope of the setup request.
* @param IStorageFactory $loader
* @return array IMountPoint instances, indexed by mount-point
+ * @since 33.0.0
*/
public function getMountsForPath(
string $setupPathHint,
diff --git a/lib/public/Files/Config/MountProviderArgs.php b/lib/public/Files/Config/MountProviderArgs.php
index bc44603dcb91d..73eefd52841f5 100644
--- a/lib/public/Files/Config/MountProviderArgs.php
+++ b/lib/public/Files/Config/MountProviderArgs.php
@@ -16,6 +16,9 @@
* @since 33.0.0
*/
class MountProviderArgs {
+ /**
+ * @since 33.0.0
+ */
public function __construct(
public readonly ICachedMountInfo $mountInfo,
public readonly ICacheEntry $cacheEntry,
diff --git a/lib/public/Files/Conversion/ConversionMimeProvider.php b/lib/public/Files/Conversion/ConversionMimeProvider.php
index 0daf4a10648a4..89d0372e6641c 100644
--- a/lib/public/Files/Conversion/ConversionMimeProvider.php
+++ b/lib/public/Files/Conversion/ConversionMimeProvider.php
@@ -34,18 +34,30 @@ public function __construct(
) {
}
+ /**
+ * @since 31.0.0
+ */
public function getFrom(): string {
return $this->from;
}
+ /**
+ * @since 31.0.0
+ */
public function getTo(): string {
return $this->to;
}
+ /**
+ * @since 31.0.0
+ */
public function getExtension(): string {
return $this->extension;
}
+ /**
+ * @since 31.0.0
+ */
public function getDisplayName(): string {
return $this->displayName;
}
diff --git a/lib/public/Files/DavUtil.php b/lib/public/Files/DavUtil.php
index 50c005f0d584e..bd869d6030594 100644
--- a/lib/public/Files/DavUtil.php
+++ b/lib/public/Files/DavUtil.php
@@ -80,6 +80,9 @@ public static function getDavPermissions(FileInfo $info, FileInfo $parent): stri
return $p;
}
+ /**
+ * @since 34.0.0
+ */
public static function canRename(FileInfo $info, FileInfo $parent): bool {
// the root of a movable mountpoint can be renamed regardless of the file permissions
if ($info->getMountPoint() instanceof IMovableMount && $info->getInternalPath() === '') {
diff --git a/lib/public/Files/Events/BeforeRemotePropfindEvent.php b/lib/public/Files/Events/BeforeRemotePropfindEvent.php
index ee9e728a979c1..396b8e9436004 100644
--- a/lib/public/Files/Events/BeforeRemotePropfindEvent.php
+++ b/lib/public/Files/Events/BeforeRemotePropfindEvent.php
@@ -18,6 +18,9 @@
* @since 33.0.0
*/
class BeforeRemotePropfindEvent extends Event {
+ /**
+ * @since 33.0.0
+ */
public function __construct(
private array $properties,
) {
diff --git a/lib/public/Files/ISetupManager.php b/lib/public/Files/ISetupManager.php
index b1b14ccf8cf29..1519b2709d89c 100644
--- a/lib/public/Files/ISetupManager.php
+++ b/lib/public/Files/ISetupManager.php
@@ -30,11 +30,14 @@ interface ISetupManager {
*
* @throws \OCP\HintException
* @throws \OC\ServerNotAvailableException
+ * @since 34.0.0
*/
public function setupForUser(IUser $user): void;
/**
* Tear down all file systems to free some memory.
+ *
+ * @since 34.0.0
*/
public function tearDown(): void;
@@ -44,11 +47,14 @@ public function tearDown(): void;
*
* @throws \OCP\HintException
* @throws \OC\ServerNotAvailableException
+ * @since 34.0.0
*/
public function setupForPath(string $path, bool $includeChildren = false): void;
/**
* Get whether the file system is already setup for a specific user.
+ *
+ * @since 34.0.0
*/
public function isSetupComplete(IUser $user): bool;
}
diff --git a/lib/public/Files/ObjectStore/Events/BucketCreatedEvent.php b/lib/public/Files/ObjectStore/Events/BucketCreatedEvent.php
index bd6afcd82094a..fc9f5f6053840 100644
--- a/lib/public/Files/ObjectStore/Events/BucketCreatedEvent.php
+++ b/lib/public/Files/ObjectStore/Events/BucketCreatedEvent.php
@@ -17,6 +17,9 @@
#[Consumable(since: '33.0.0')]
class BucketCreatedEvent extends Event {
+ /**
+ * @since 33.0.0
+ */
public function __construct(
private readonly string $bucket,
private readonly string $endpoint,
@@ -26,18 +29,30 @@ public function __construct(
parent::__construct();
}
+ /**
+ * @since 33.0.0
+ */
public function getBucket(): string {
return $this->bucket;
}
+ /**
+ * @since 33.0.0
+ */
public function getEndpoint(): string {
return $this->endpoint;
}
+ /**
+ * @since 33.0.0
+ */
public function getRegion(): string {
return $this->region;
}
+ /**
+ * @since 33.0.0
+ */
public function getVersion(): string {
return $this->version;
}
diff --git a/lib/public/Files/Template/FieldType.php b/lib/public/Files/Template/FieldType.php
index 2d059cadc17d0..7d61d5a104069 100644
--- a/lib/public/Files/Template/FieldType.php
+++ b/lib/public/Files/Template/FieldType.php
@@ -11,9 +11,24 @@
* @since 30.0.0
*/
enum FieldType: string {
+ /**
+ * @since 30.0.0
+ */
case RichText = 'rich-text';
+ /**
+ * @since 30.0.0
+ */
case CheckBox = 'checkbox';
+ /**
+ * @since 30.0.0
+ */
case DropDownList = 'drop-down-list';
+ /**
+ * @since 30.0.0
+ */
case Picture = 'picture';
+ /**
+ * @since 30.0.0
+ */
case Date = 'date';
}
diff --git a/lib/public/OCM/Enum/ParamType.php b/lib/public/OCM/Enum/ParamType.php
index fa4a19ebe1736..571fc61122ae9 100644
--- a/lib/public/OCM/Enum/ParamType.php
+++ b/lib/public/OCM/Enum/ParamType.php
@@ -17,8 +17,20 @@
*/
#[Consumable(since: '33.0.0')]
enum ParamType: string {
+ /**
+ * @since 33.0.0
+ */
case STRING = 'string';
+ /**
+ * @since 33.0.0
+ */
case INT = 'int';
+ /**
+ * @since 33.0.0
+ */
case FLOAT = 'float';
+ /**
+ * @since 33.0.0
+ */
case BOOL = 'bool';
}
diff --git a/lib/public/OpenMetrics/Metric.php b/lib/public/OpenMetrics/Metric.php
index b5deb324db41f..6147019db79f5 100644
--- a/lib/public/OpenMetrics/Metric.php
+++ b/lib/public/OpenMetrics/Metric.php
@@ -13,6 +13,9 @@
* @since 33.0.0
*/
final readonly class Metric {
+ /**
+ * @since 33.0.0
+ */
public function __construct(
public int|float|bool|MetricValue $value = false,
/** @var string[] */
@@ -22,6 +25,9 @@ public function __construct(
$this->validateLabels();
}
+ /**
+ * @since 33.0.0
+ */
public function label(string $name): ?string {
return $this->labels[$name] ?? null;
}
diff --git a/lib/public/OpenMetrics/MetricType.php b/lib/public/OpenMetrics/MetricType.php
index 07449593cc007..043d1e892bb13 100644
--- a/lib/public/OpenMetrics/MetricType.php
+++ b/lib/public/OpenMetrics/MetricType.php
@@ -15,12 +15,36 @@
* @since 33.0.0
*/
enum MetricType {
+ /**
+ * @since 33.0.0
+ */
case counter;
+ /**
+ * @since 33.0.0
+ */
case gauge;
+ /**
+ * @since 33.0.0
+ */
case histogram;
+ /**
+ * @since 33.0.0
+ */
case gaugehistogram;
+ /**
+ * @since 33.0.0
+ */
case stateset;
+ /**
+ * @since 33.0.0
+ */
case info;
+ /**
+ * @since 33.0.0
+ */
case summary;
+ /**
+ * @since 33.0.0
+ */
case unknown;
}
diff --git a/lib/public/OpenMetrics/MetricValue.php b/lib/public/OpenMetrics/MetricValue.php
index 34922947d254d..c8d29c54e3926 100644
--- a/lib/public/OpenMetrics/MetricValue.php
+++ b/lib/public/OpenMetrics/MetricValue.php
@@ -14,7 +14,16 @@
* @since 33.0.0
*/
enum MetricValue: string {
+ /**
+ * @since 33.0.0
+ */
case NOT_A_NUMBER = 'NaN';
+ /**
+ * @since 33.0.0
+ */
case POSITIVE_INFINITY = '+Inf';
+ /**
+ * @since 33.0.0
+ */
case NEGATIVE_INFINITY = '-Inf';
}
diff --git a/lib/public/Snowflake/Snowflake.php b/lib/public/Snowflake/Snowflake.php
index 9fce0a5aea2f7..cc3d38bbe8065 100644
--- a/lib/public/Snowflake/Snowflake.php
+++ b/lib/public/Snowflake/Snowflake.php
@@ -23,6 +23,7 @@
* @psalm-param int<0,4095> $sequenceId
* @psalm-param non-negative-int $seconds
* @psalm-param int<0,999> $milliseconds
+ * @since 33.0.0
*/
public function __construct(
private int $serverId,
@@ -36,6 +37,7 @@ public function __construct(
/**
* @psalm-return int<0,1023>
+ * @since 33.0.0
*/
public function getServerId(): int {
return $this->serverId;
@@ -43,17 +45,22 @@ public function getServerId(): int {
/**
* @psalm-return int<0,4095>
+ * @since 33.0.0
*/
public function getSequenceId(): int {
return $this->sequenceId;
}
+ /**
+ * @since 33.0.0
+ */
public function isCli(): bool {
return $this->isCli;
}
/**
* @psalm-return non-negative-int
+ * @since 33.0.0
*/
public function getSeconds(): int {
return $this->seconds;
@@ -61,11 +68,15 @@ public function getSeconds(): int {
/**
* @psalm-return int<0,999>
+ * @since 33.0.0
*/
public function getMilliseconds(): int {
return $this->milliseconds;
}
+ /**
+ * @since 33.0.0
+ */
public function getCreatedAt(): \DateTimeImmutable {
return $this->createdAt;
}
diff --git a/lib/public/TaskProcessing/EShapeType.php b/lib/public/TaskProcessing/EShapeType.php
index 306d285adea18..c1c0a1ccd4de3 100644
--- a/lib/public/TaskProcessing/EShapeType.php
+++ b/lib/public/TaskProcessing/EShapeType.php
@@ -17,18 +17,57 @@
* @since 30.0.0
*/
enum EShapeType: int {
+ /**
+ * @since 30.0.0
+ */
case Number = 0;
+ /**
+ * @since 30.0.0
+ */
case Text = 1;
+ /**
+ * @since 30.0.0
+ */
case Image = 2;
+ /**
+ * @since 30.0.0
+ */
case Audio = 3;
+ /**
+ * @since 30.0.0
+ */
case Video = 4;
+ /**
+ * @since 30.0.0
+ */
case File = 5;
+ /**
+ * @since 30.0.0
+ */
case Enum = 6;
+ /**
+ * @since 30.0.0
+ */
case ListOfNumbers = 10;
+ /**
+ * @since 30.0.0
+ */
case ListOfTexts = 11;
+ /**
+ * @since 30.0.0
+ */
case ListOfImages = 12;
+ /**
+ * @since 30.0.0
+ */
case ListOfAudios = 13;
+ /**
+ * @since 30.0.0
+ */
case ListOfVideos = 14;
+ /**
+ * @since 30.0.0
+ */
case ListOfFiles = 15;
/**
diff --git a/lib/public/TaskProcessing/TaskTypes/ContextAgentAudioInteraction.php b/lib/public/TaskProcessing/TaskTypes/ContextAgentAudioInteraction.php
index b668ea248067d..18464db3d65d1 100644
--- a/lib/public/TaskProcessing/TaskTypes/ContextAgentAudioInteraction.php
+++ b/lib/public/TaskProcessing/TaskTypes/ContextAgentAudioInteraction.php
@@ -20,6 +20,9 @@
* @since 32.0.0
*/
class ContextAgentAudioInteraction implements IInternalTaskType {
+ /**
+ * @since 31.0.0
+ */
public const ID = 'core:contextagent:audio-interaction';
private IL10N $l;
diff --git a/lib/public/TaskProcessing/TaskTypes/ContextAgentInteraction.php b/lib/public/TaskProcessing/TaskTypes/ContextAgentInteraction.php
index 6cb126e189453..db32701283186 100644
--- a/lib/public/TaskProcessing/TaskTypes/ContextAgentInteraction.php
+++ b/lib/public/TaskProcessing/TaskTypes/ContextAgentInteraction.php
@@ -20,6 +20,9 @@
* @since 31.0.0
*/
class ContextAgentInteraction implements IInternalTaskType {
+ /**
+ * @since 31.0.0
+ */
public const ID = 'core:contextagent:interaction';
private IL10N $l;
diff --git a/lib/public/TaskProcessing/TaskTypes/TextToTextChangeTone.php b/lib/public/TaskProcessing/TaskTypes/TextToTextChangeTone.php
index 0ea4575a187ea..7d02d102bece1 100644
--- a/lib/public/TaskProcessing/TaskTypes/TextToTextChangeTone.php
+++ b/lib/public/TaskProcessing/TaskTypes/TextToTextChangeTone.php
@@ -20,6 +20,9 @@
* @since 31.0.0
*/
class TextToTextChangeTone implements ITaskType {
+ /**
+ * @since 31.0.0
+ */
public const ID = 'core:text2text:changetone';
private IL10N $l;
diff --git a/lib/public/TaskProcessing/TaskTypes/TextToTextChatWithTools.php b/lib/public/TaskProcessing/TaskTypes/TextToTextChatWithTools.php
index 3e470bf23aefe..53dae3dc3f235 100644
--- a/lib/public/TaskProcessing/TaskTypes/TextToTextChatWithTools.php
+++ b/lib/public/TaskProcessing/TaskTypes/TextToTextChatWithTools.php
@@ -20,6 +20,9 @@
* @since 31.0.0
*/
class TextToTextChatWithTools implements IInternalTaskType {
+ /**
+ * @since 31.0.0
+ */
public const ID = 'core:text2text:chatwithtools';
private IL10N $l;
diff --git a/lib/public/Template/ITemplate.php b/lib/public/Template/ITemplate.php
index 7131df4d17c06..b6b9433b35b35 100644
--- a/lib/public/Template/ITemplate.php
+++ b/lib/public/Template/ITemplate.php
@@ -42,6 +42,7 @@ public function assign(string $key, mixed $value): void;
* This function assigns a variable in an array context. If the key already
* exists, the value will be appended. It can be accessed via
* $_[$key][$position] in the template.
+ * @since 32.0.0
*/
public function append(string $key, mixed $value): void;
}