Upgrade to Nextcloud 26
Note
Critical changes were collected on GitHub. See the original ticket for links to the pull requests and tickets.
General
info.xml
Make sure your appinfo/info.xml
allows for Nextcloud 26.
<dependencies>
<nextcloud min-version="23" max-version="26" />
</dependencies>
Personal settings section Groupware moved to Availability
Up to Nextcloud 25 there had been a settings section Groupware with the ID groupware
. As of Nextcloud 26 this section doesn’t exist anymore. Existing server settings were moved to a new section Availability/availability
.
If your app provides groupware-related settings, see if they make can be shown on the Availability page or need a new app-provided section.
Front-end changes
Removed APIs
OC.addTranslations
was deprecated since Nextcloud 17 and is now removed.The “app icons” background (https://github.com/nextcloud/server/blob/stable25/core/img/background.png and https://github.com/nextcloud/server/blob/stable25/core/img/background.svg) is not used anymore and will be removed (was only used on login page, where we now use the “clouds” background).
Bootstrap removed: The shipped bootstrap was only used for tooltips since ages but shipped and therefore available globally. Because the version we shipped is now EOL, we decided to remove it instead of bringing in a breaking update. For any tootltip it is recommended to just switch to the native
title=
HTML attribute. (PR#36434 by nickvergessen)
Back-end changes
PHP 7.4
In this release support for PHP 7.4 was dropped. Make sure your app compatible with PHP 8.0 or higher.
PHP 8.2
In this release support for PHP 8.2 was added. See release notes from PHP about new deprecations.
Migration from PHPDoc annotations to native PHP attributes
Nextcloud 26 supports PHP 8.0 and later. This allows the migration from PHPDoc annotations to native attributes.
@UseSession
should be replaced with#[UseSession]
.@UseSession
will be removed in a future release. See Reading and writing session variables.
Planned removal of PSR-0 class loading
Nextcloud is still loading classes that follow the long deprecated and replaced PSR-0 standard. Nextcloud 26 is the last version that register a generic PSR-0 class loader. From Nextcloud 27 on apps have to either change class file names to match PSR-4 or ship their own (composer) class loader for PSR-0 files or. (PR#36114 by ChristophWurst)
Dependency Injection Parameters
App container parameters with pascal case names AppName
, UserId
and WebRoot
are deprecated. Use the camel case variants appName
, userId
and webRoot
instead if you have them injected into one of your app classes.
Changed APIs
OCP\Files\SimpleFS\ISimpleFile::getSize()
may now return a float (to support sizes >2G on 32bit systems)OCP\Files\SimpleFS\InMemoryFile::getSize()
may now return a float (to support sizes >2G on 32bit systems)It is not required anymore to call
setParsedSubject
andsetParsedMessage
on notifications and activity events when setRichSubject and setRichMessage are used a parsed version is computed automatically. (PR#34807 by come-nc)Moved
ICreateFromString::handleIMipMessage(string $name, string $calendarData): void;
to its own InterfaceIHandleImipMessage
(PR#34893 by miaulalala)- Signatures of methods of
OCP\AppFramework\Db\Entity
changed as follows (ref): public static function fromParams(array $params) -> public static function fromParams(array $params): static
public static function fromRow(array $row) -> public static function fromRow(array $row): static
protected function setter($name, $args) -> protected function setter(string $name, array $args): void
protected function getter($name) -> protected function getter(string $name): mixed
protected function markFieldUpdated($attribute) -> protected function markFieldUpdated(string $attribute): void
- Signatures of methods of
Middlewares can be registered globally (see Global Middlewares, PR#36310 by ChristophWurst)
Removed APIs
OCP\BackgroundJob\IJobList::getAll
method was removed (PR#36073 by come-nc)3rdparty dependency
php-ds/php-ds
was removed (PR#36198 by kesselb)OCP\Contacts\IManager::getAddressBooks
method was removed (PR#34329 by come-nc)OCP\Util
loglevel constants were removed (PR#34329 by come-nc)3rdparty dependency
nikic/php-parser
was removed (PR#36393 by kesselb)Deprecated
OCP\AppFramework\Db\Mapper
was removed. You can easily migrate toOCP\AppFramework\Db\QBMapper
, which is doing the same thing using the query builder instead of string based queries. (PR#34490 by rullzer)Deprecated classes of
OCP\Dashboard
were removed (PR#35966 by juliushaertl)
Added APIs
New
OCP\Authentication\Token\IProvider
for authentication providers: Created a new public interfaceOCP\Authentication\Token\IProvider
with a method invalidateTokensOfUser to invalidate all tokens of a specific user.OC\Authentication\Token\Manager
implementsOCP\Authentication\Token\IProvider
. (PR#36033 by individual-it)Auto-Submitted
header for emails: There now is a new method on theOCP\Mail\IMessage
interfaceIMessage::setAutoSubmitted()
. With this method you can specify that an email was an automatic email or response, to allow mail servers to better detect if an out-of-office reply should be sent, better store/filter the emails and so on. Possible values are documented in theOCP\Mail\Headers\AutoSubmitted
interface. (PR#36033 by bennet0496)OCP\BackgroundJob\IJobList::getJobsIterator
method was added (PR#36073)New
OCP\BeforeSabrePubliclyLoadedEvent
event dispatched on public webdav endpoints (it can be used just likeOCP\SabrePluginEvent
to inject additional Sabre plugins in apps for example) (PR#35789)
Deprecated
OCP\BackgroundJob\IJobList::getJobs
method was deprecated (PR#36073)Controller action annotation
@UseSession
is deprecated. Use newUseSession
attribute instead (PR#36363 by ChristophWurst)Notifications jQuery event deprecated: The
OCA.Notification.Action
event of the notifications app is deprecated in favor of anotifications:action:executed
event-bus event with (PR#728 by nickvergessen)