Changelog
Breaking changes
8.2 RC2
The following breaking changes usually only affect applications which misuse existing API or do not follow best practices.
-
The default Content-Security-Policy of
AppFramework
apps is now stricter but can be adjusted by developers. See https://github.com/owncloud/core/pull/13989 -
Parameters passed to
OC.generateUrl
are now automatically encoded, this behavior can be adjusted by developers. See https://github.com/owncloud/core/pull/14266 -
Views constructed by OCFilesView do not allow directory traversals anymore in the constructor. See https://github.com/owncloud/core/pull/14342
-
The CSRF token may now contain not URL compatible characters (for example the plus sign: +), developers have to ensure that the CSRF token is encoded properly before using it in URIs.
-
The default RNG now returns all valid Base64 characters
-
OC.msg
escapes the message now by default (see https://github.com/owncloud/core/pull/14208)
Features
8.2 RC2
-
There is a new OCSResponse and OCSController <controllers> which allows you to easily migrate OCS code to the App Framework. This was added purely for compatibility reasons and the preferred way of doing APIs is using a api
-
You can now stream files in PHP by using the built in StreamResponse <controllers>.
-
For more advanced use cases you can now implement the CallbackResponse <controllers> interface which allows your response to do its own response rendering
-
Custom preview providers can now be implemented using
OCP\IPreview::registerProvider
-
There is a mightier class for remote web service requests at
OCP\Http\Client
-
OCP\\IImage
allows now basic image manipulations such as resizing or rotating -
OCP\\Mail
allows sending mails in an object-oriented way now -
OCP\\IRequest
contains more methods now such as getting the request URI -
OCP\\Encryption
allows writing custom encryption backends
Furthermore all public APIs have received a @since
annotation allowing
developers to see when a function has been introduced.
Deprecations
This is a deprecation roadmap which lists all current deprecation targets and will be updated from release to release. This lists the version when a specific method or class will be removed.
Deprecations on interfaces also affect the implementing classes!
11.1
-
OCP\\App::setActiveNavigationEntry
has been deprecated in favour of\\OCP\\INavigationManager
-
OCP\\BackgroundJob::registerJob
has been deprecated in favour ofOCP\\BackgroundJob\\IJobList
-
OCP\\Contacts
functions has been deprecated in favour of\\OCP\\Contacts\\IManager
-
OCP\\DB
functions have been deprecated in favour of the ones in\\OCP\\IDBConnection
-
OCP\\Files::tmpFile
has been deprecated in favour of\\OCP\\ITempManager::getTemporaryFile
-
OCP\\Files::tmpFolder
has been deprecated in favour of\\OCP\\ITempManager::getTemporaryFolder
-
\\OCP\\IServerContainer::getDb
has been deprecated in favour of\\OCP\\IServerContainer::getDatabaseConnection
-
\\OCP\\IServerContainer::getHTTPHelper
has been deprecated in favour of\\OCP\\Http\\Client\\IClientService
-
Legacy applications not using the
AppFramework
are now likely to use the deprecatedOCP\\JSON
andOCP\\Response
code:-
\\OCP\\JSON
has been completely deprecated in favour of theAppFramework
. Developers shall use theAppFramework
instead of using the legacyOCP\\JSON
code. This allows testable controllers and is highly encouraged. -
\\OCP\\Response
has been completely deprecated in favour of theAppFramework
. Developers shall use theAppFramework
instead of using the legacyOCP\\JSON
code. This allows testable controllers and is highly encouraged.
-
-
Diverse
OCP\\Users
function got deprecated in favour ofOCP\\IUserManager
:-
OCP\\Users::getUsers
has been deprecated in favour ofOCP\\IUserManager::search
-
OCP\\Users::getDisplayName
has been deprecated in favour ofOCP\\IUserManager::getDisplayName
-
OCP\\Users::getDisplayNames
has been deprecated in favour ofOCP\\IUserManager::searchDisplayName
-
OCP\\Users::userExists
has been deprecated in favour ofOCP\\IUserManager::userExists
-
-
Various static
OCP\\Util
functions have been deprecated:-
OCP\\Util::linkToRoute
has been deprecated in favour of\\OCP\\IURLGenerator::linkToRoute
-
OCP\\Util::linkTo
has been deprecated in favour of\\OCP\\IURLGenerator::linkTo
-
OCP\\Util::imagePath
has been deprecated in favour of\\OCP\\IURLGenerator::imagePath
-
OCP\\Util::isValidPath
has been deprecated in favour of\\OCP\\IURLGenerator::imagePath
-
10.0
-
An API added in one version of ownCloud only needs to be maintained as long as that version is not End of Life (EOL)
-
An API can be removed completely in a future version of ownCloud if the release date of the version is later than the EOL date of the previous version
-
Before removing an API completely, it needs to deprecated for at least a year. This is done by adding @deprecated tags.
-
OCP\\IDb
: This interface and the implementing classes will be removed in favor ofOCP\\IDbConnection
. Various layers in between have also been removed to be consistent with the PDO classes. This leads to the following changes:-
Replace all calls on the db using
getInsertId
withlastInsertId
-
Replace all calls on the db using
prepareQuery
withprepare
-
The
__construct
method ofOCP\\AppFramework\\Db\\Mapper
no longer requires an instance ofOCP\\IDb
but an instance ofOCP\\IDbConnection
-
The
execute
method onOCP\\AppFramework\\Db\\Mapper
no longer returns an instance ofOC_DB_StatementWrapper
but an instance ofPDOStatement
-
9.0
-
The following methods have been moved into the
OCP\\Template::<method>
class instead of being namespaced directly:-
OCP\\image_path
-
OCP\\mimetype_icon
-
OCP\\preview_icon
-
OCP\\publicPreview_icon
-
OCP\\human_file_size
-
OCP\\relative_modified_date
-
OCP\\html_select_options
-
-
OCP\\simple_file_size
has been deprecated in favour ofOCP\\Template::human_file_size
-
The
OCP\\PERMISSION_<permission>
andOCP\\FILENAME_INVALID_CHARS
have been moved toOCP\\Constants::<old name>
-
The
OC_GROUP_BACKEND_<method>
andOC_USER_BACKEND_<method>
have been moved toOC_Group_Backend::<method>
andOC_User_Backend::<method>
respectively
8.3
-
OCP\AppFramework\IApi: full class
-
OCP\AppFramework\IAppContainer: methods
getCoreApi
andlog
-
OCP\AppFramework\Controller: methods
params
,getParams
,method
,getUploadedFile
,env
,cookie
,render