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; }