Actualización a APS Conecta Gestión 28¶
Resumen¶
Esta página enumera los cambios de la versión 28 que afectan a las apps: el rango de appinfo/info.xml, las nuevas API de frontend de la app Archivos, la compatibilidad con PHP 8.3, las bibliotecas del núcleo actualizadas (doctrine/dbal y symfony/event-dispatcher), las API añadidas, modificadas, obsoletas o eliminadas, los eventos tipados que reemplazan a los antiguos y las propiedades WebDAV eliminadas. Está dirigida a quienes desarrollan o mantienen apps.
Fuente: documentación de Nextcloud, «developer_manual/release_notes/previous/upgrade_to_28», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
General¶
info.xml¶
Asegurarse de que el appinfo/info.xml de la app admita APS Conecta Gestión 28.
<dependencies>
<nextcloud min-version="26" max-version="28" />
</dependencies>
Cambios de frontend¶
API añadidas¶
Como la nueva app Archivos se inicializa mucho más rápido que la antigua, se producirán algunas condiciones de carrera si se registran propiedades personalizadas cargando los scripts mediante el método
Util::addScript. Se recomienda usar en su lugar el nuevo métodoUtil::addInitScript: el script se cargará justo después de los scripts comunes del núcleo y justo antes de la app Archivos. Ver JavaScript para más información.Acciones de archivo: para registrar acciones de archivo, usar la API dedicada de https://npmjs.org/@nextcloud/files o https://nextcloud-libraries.github.io/nextcloud-files/functions/registerFileAction.html
Menú de nuevo archivo: para registrar entradas en el menú de nuevo archivo, usar la API dedicada de https://npmjs.org/@nextcloud/files o https://nextcloud-libraries.github.io/nextcloud-files/functions/addNewFileMenuEntry.html
Recordatorio de la 27: para interactuar con el enrutador de la app Archivos, usar
OCP.Files.Router. Ver ArchivosPara interactuar con los datos de la app Archivos, usar los siguientes eventos. Todos tienen un objeto Node como parámetro principal.
files:node:created: se creó el nodofiles:node:deleted: se eliminó el nodofiles:node:moved: se movió el nodo (y sus datos ya están actualizados)files:node:updated: se actualizaron los datos del nodo
API obsoletas¶
Las variables CSS
--color-text-lighty--color-text-lighterse convirtieron en alias de--color-main-texty--color-text-maxcontrasten Nextcloud 20; ahora están oficialmente obsoletas y se eliminarán en un futuro próximo.
API eliminadas¶
OC.loadScriptyOC.loadStyle: usarOCP.Loaderen su lugar.OC.appSettings: no hay reemplazo.OCA.Files: se eliminó todo salvo Sidebar y Settings. Ver la sección de API añadidas para los reemplazos.
Cambios de backend¶
PHP 8.3¶
En esta versión se añadió la compatibilidad con PHP 8.3. Seguir los pasos siguientes para que la app sea compatible.
Si
appinfo/info.xmltiene una especificación de dependencia para PHP, aumentarmax-versiona 8.3.
<dependencies>
<php min-version="8.0" max-version="8.3" />
<nextcloud min-version="26" max-version="28" />
</dependencies>
Si la app tiene un
composer.jsony el archivo contiene las restricciones de PHP deinfo.xml, ajustarlo también.
{
"require": {
"php": ">=8.0 <=8.3"
}
}
Si se tiene configurada la integración continua, ampliar la matriz de pruebas con pruebas y linters de PHP 8.3.
La información sobre los cambios de código se encuentra en php.net y stitcher.io.
El infierno de las dependencias de desarrollo¶
Debido a la popularidad de las herramientas CLI para el desarrollo de apps de APS Conecta Gestión, ha aumentado la probabilidad de conflictos entre paquetes. Se recomienda encarecidamente consultar Herramientas de desarrollo y migrar a directorios bin de composer.
Bibliotecas del núcleo actualizadas¶
Si las apps usan solo API públicas oficiales de APS Conecta Gestión, la actualización de las bibliotecas del núcleo debería tener poco o ningún efecto en ellas. Sin embargo, hay algunos casos límite en los que una app todavía tiene una dependencia de código con una biblioteca incluida en APS Conecta Gestión, por ejemplo cuando se usan esas clases o funciones de terceros, por lo que se recomienda a quienes desarrollan apps revisar su código en busca de cualquier incompatibilidad. Además, se recomienda comprobar la compatibilidad con herramientas sofisticadas, como se documenta en la sección de análisis estático.
doctrine/dbal¶
La capa de abstracción de bases de datos de Doctrine (Doctrine Database Abstraction Layer) impulsa la conexión a la base de datos y el constructor de consultas de APS Conecta Gestión. En APS Conecta Gestión 28, esta dependencia se actualizó de 3.3 a 3.7.
Siendo optimistas, la conexión a la base de datos y el constructor de consultas deberían funcionar en su mayor parte como en APS Conecta Gestión 27 o anteriores. Algunos cambios incompatibles (menores) fueron inevitables. Este es el resumen:
Cuando una instancia del constructor de consultas usa parámetros posicionales
->setValue('name', '?')setParameter(0, $name), hay que volver a establecer todos los parámetros al ejecutar la consulta varias veces, por ejemplo en un bucle. Se recomienda pasar en su lugar a parámetros con nombre usandocreateParameter().
Los detalles de este cambio también pueden verse en la pull request en GitHub y en la documentación original, en el documento de actualización de dbal 3.7.x.
symfony/event-dispatcher¶
En las últimas 2 versiones mayores, el paquete symfony/event-dispatcher primero declaró obsoleta y luego eliminó la forma en que el servidor de APS Conecta Gestión
despachaba los eventos antiguos. Esto significa que la forma en que se encapsulaba la \Symfony\Component\EventDispatcher\EventDispatcherInterface de symfony,
así como el uso del \Symfony\Component\EventDispatcher\GenericEvent, no pudieron mantenerse de forma compatible con versiones anteriores.
Por lo tanto, para ser compatible con APS Conecta Gestión 28 es necesario migrar de \Symfony\Component\EventDispatcher\EventDispatcherInterface
a \OCP\EventDispatcher\IEventDispatcher (existe desde APS Conecta Gestión 17).
Todos los puntos del código que despachaban un \Symfony\Component\EventDispatcher\GenericEvent se ajustaron
y ahora tienen un evento dedicado basado en \OCP\EventDispatcher\Event que se despacha como evento tipado, de modo que todos los parámetros disponibles están documentados.
Los detalles de este cambio también pueden verse en las tareas pendientes enlazadas desde la pull request en GitHub.
API añadidas¶
\OCP\AppFramework\Http\EmptyContentSecurityPolicy::useStrictDynamicOnScriptspara establecer 'strict-dynamic' en la CSP 'script-src-elem'; está establecido en true por defecto para permitir que las apps que usan JS de módulo importen dependencias.\OCP\Mail\IMessage::setSubjectpara establecer el asunto de un correo electrónico. Ver Correo electrónico para un ejemplo.\OCP\Mail\IMessage::setHtmlBodyy\OCP\Mail\IMessage::setPlainBodypara establecer el cuerpo de un correo electrónico. Ver Correo electrónico para un ejemplo.\OCP\IEventSourceFactorypara crear una instancia deOCP\IEventSource.\OCP\Preview\BeforePreviewFetchedEvent::getCrop\OCP\Preview\BeforePreviewFetchedEvent::getHeight\OCP\Preview\BeforePreviewFetchedEvent::getMode\OCP\Preview\BeforePreviewFetchedEvent::getWidth\OCP\IPhoneNumberUtil::convertToStandardFormatpara convertir una entrada en un número de teléfono con formato E164. Ver Utilidad de números de teléfono para un ejemplo.\OCP\IPhoneNumberUtil::getCountryCodeForRegionpara obtener el código de país E164 de una región dada. Ver Utilidad de números de teléfono para un ejemplo.\OCP\AppFramework\Http\EmptyContentSecurityPolicy::allowEvalWasm(bool): establecewasm-unsafe-evalenscript-srcde la Content Security Policy para permitir la compilación y ejecución de WebAssembly en la página\OCP\FilesMetadata\IMetadataBackgroundEvent::getNode\OCP\FilesMetadata\IMetadataBackgroundEvent::getMetadata\OCP\FilesMetadata\IMetadataLiveEvent::getNode\OCP\FilesMetadata\IMetadataLiveEvent::getMetadata\OCP\FilesMetadata\IMetadataLiveEvent::requestBackgroundJob\OCP\FilesMetadata\IFilesMetadataManager::refreshMetadata\OCP\FilesMetadata\IFilesMetadataManager::getMetadata\OCP\FilesMetadata\IFilesMetadataManager::saveMetadata\OCP\FilesMetadata\IFilesMetadataManager::deleteMetadata\OCP\FilesMetadata\IFilesMetadataManager::getMetadataQuery\OCP\FilesMetadata\IFilesMetadataManager::getKnownMetadata\OCP\FilesMetadata\IFilesMetadataManager::initMetadata\OCP\FilesMetadata\IMetadataQuery::retrieveMetadata\OCP\FilesMetadata\IMetadataQuery::extractMetadata\OCP\FilesMetadata\IMetadataQuery::joinIndex\OCP\FilesMetadata\IMetadataQuery::getMetadataKeyField\OCP\FilesMetadata\IMetadataQuery::getMetadataValueFieldwasm-unsafe-evales compatible con la mayoría de los navegadoresLa compilación y la ejecución de WebAssembly en hilos de trabajo (worker threads) no se ven afectadas por esta directiva (los navegadores permiten por defecto la compilación y la ejecución de WebAssembly en hilos de trabajo)
OCP\Authentication\Token\IProvider::getTokenpara obtener un token por su id de cadena de tokenOCP\Authentication\Token\IToken: interfaz pública para los tokens que devuelve la función anterior. Usar estos en lugar de lo que hay en el espacio de nombresOC.OCP\User\Backend\IProvideEnabledStateBackendpara los backends de usuarios que quieran alterar el estado deshabilitado de los usuarios (lo usa user_ldap para marcar los restos como deshabilitados si la opción está activada).
API modificadas¶
\OCP\Preview\BeforePreviewFetchedEventahora aceptawidth, height, crop and modecomo argumentos opcionales del constructor.La interfaz
\OCP\Files\Folderrecibió un nuevo método:searchBySystemTag(string $tagName, string $userId, int $limit = 0, int $offset = 0).OCP\SystemTag\ISystemTagManager::getTagsByIds()ahora acepta opcionalmente IUser como segundo parámetro, para recuperar solo las etiquetas del sistema visibles para ese usuario.
API obsoletas¶
\OCP\DB\IResult::fetch: usar en su lugar los nuevosfetchAssociative,fetchNumericyfetchOne. Si se llamaba afetchsin argumentos,fetchAssociativees el reemplazo directo. Tener en cuenta que los nuevos métodos lanzan una excepción diferente.\OCP\DB\IResult::fetchAll: usar en su lugar los nuevosfetchAllAssociative,fetchAllNumericyfetchOne. Si se llamaba afetchAllsin argumentos,fetchAllAssociativees el reemplazo directo. Tener en cuenta que los nuevos métodos lanzan una excepción diferente.En
\OCP\Preview\BeforePreviewFetchedEvent, pasarnullparawidth, height, crop or modeestá obsoleto. A partir de APS Conecta Gestión 31 son obligatorios.
API eliminadas¶
\OC_App::getAppVersion: inyectar\OCP\App\IAppManagery llamar a\OCP\App\IAppManager::getAppVersion.\OC_App::getAppInfo: inyectar\OCP\App\IAppManagery llamar a\OCP\App\IAppManager::getAppInfo.\OC_App::getNavigation: inyectar\OCP\App\IAppManagery llamar a\OCP\App\IAppManager::getAll.\OC_App::getSettingsNavigation: inyectar\OCP\App\IAppManagery llamar a\OCP\App\IAppManager::getAll('settings').\OC_App::isEnabled: inyectar\OCP\App\IAppManagery llamar a\OCP\App\IAppManager::isEnabledForUser.\OC_Defaults::getLogoClaim: no hay reemplazo.\OCP\Util::linkToPublic: no hay reemplazo.\OC_Defaults::getLogoClaim: no hay reemplazo.Se eliminó
\OC::$server->createEventSource(); usar en su lugar\OCP\Server::get(\OCP\IEventSourceFactory::class)->create().Se eliminó
\OCP\Util::writeLog; usar en su lugar\OCP\Server::get(LoggerInterface::class)->….
La fábrica \OCP\IEventSourceFactory solo funciona a partir de APS Conecta Gestión 28.
Para versiones anteriores, usar \OC::$server->createEventSource().
Para admitir APS Conecta Gestión 27 y APS Conecta Gestión 28:
// @TODO: Remove method_exists when min-version="28"
if (method_exists(\OC::$server, 'createEventSource')) {
$eventSource = \OC::$server->createEventSource();
} else {
$eventSource = \OCP\Server::get(IEventSourceFactory::class)->create();
}
Eventos añadidos¶
Se añadió el evento tipado
OCA\DAV\Events\SabrePluginAddEventSe añadió el evento tipado
OCP\Accounts\UserUpdatedEventSe añadió el evento tipado
OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailedSe añadió el evento tipado
OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassedSe añadió el evento tipado
OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserRegisteredSe añadió el evento tipado
OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserUnregisteredSe añadió el evento tipado
OCP\Authentication\TwoFactorAuth\TwoFactorProviderUserDeletedSe añadió el evento tipado
OCP\Comments\CommentsEntityEventEvento tipado
OCP\DB\Events\AddMissingColumnsEventpara añadir al esquema de la base de datos los índices que faltan.Evento tipado
OCP\DB\Events\AddMissingIndicesEventpara añadir al esquema de la base de datos los índices que faltan.Evento tipado
OCP\DB\Events\AddMissingPrimaryKeyEventpara añadir al esquema de la base de datos los índices que faltan.Se añadió el evento tipado
OCP\Files\Events\NodeAddedToFavoriteSe añadió el evento tipado
OCP\Files\Events\NodeRemovedFromFavoriteSe añadió el evento tipado
OCP\FilesMetadata\Event\MetadataBackgroundEventSe añadió el evento tipado
OCP\FilesMetadata\Event\MetadataLiveEventSe añadió el evento tipado
OCP\Share\Events\BeforeShareCreatedEventSe añadió el evento tipado
OCP\Share\Events\BeforeShareDeletedEventSe añadió el evento tipado
OCP\Share\Events\ShareAcceptedEventSe añadió el evento tipado
OCP\Share\Events\ShareDeletedFromSelfEventSe añadió el evento tipado
OCP\SystemTag\SystemTagsEntityEventSe añadió el evento tipado
OCP\User\Events\UserFirstTimeLoggedInEvent
Eventos obsoletos¶
OC\Console\Application::runquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\Console\ConsoleEventOCA\DAV\Connector\Sabre::addPluginquedó obsoleto. Escuchar en su lugar el evento tipadoOCA\DAV\Events\SabrePluginAddEventOCA\Files_Trashbin::moveToTrashquedó obsoleto. Escuchar en su lugar el evento tipadoOCA\Files_Trashbin\Events\MoveToTrashEventOCA\Files_Trashbin::moveToTrashquedó obsoleto. Escuchar en su lugar el evento tipadoOCA\Files_Trashbin\Events\MoveToTrashEventOCP\Console\ConsoleEvent::EVENT_RUNquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\Console\ConsoleEventOCP\Authentication\TwoFactorAuth\RegistryEventquedó obsoleto. Escuchar en su lugar los eventos tipadosOCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserRegisteredyOCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserUnregisteredOCP\Authentication\TwoFactorAuth\IRegistry::enablequedó obsoleto. Escuchar en su lugar el evento tipadoOCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserRegisteredOCP\Authentication\TwoFactorAuth\IRegistry::disablequedó obsoleto. Escuchar en su lugar el evento tipadoOCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserUnregisteredOCP\Authentication\TwoFactorAuth\TwoFactorProviderDisabledquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\Authentication\TwoFactorAuth\TwoFactorProviderUserDeletedOCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserDisabledquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailedOCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserEnabledquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassedOCP\Comments\CommentsEntityEvent::EVENT_ENTITYquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\Comments\CommentsEntityEventOCP\Comments\ICommentsManager::registerEntityquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\Comments\CommentsEntityEventOCP\SystemTag\ISystemTagManager::registerEntityquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\SystemTag\SystemTagsEntityEventOCP\SystemTag\SystemTagsEntityEvent::EVENT_ENTITYquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\SystemTag\SystemTagsEntityEventOCP\IUser::firstLoginquedó obsoleto. Escuchar en su lugar el evento tipadoOCP\User\Events\UserFirstTimeLoggedInEvent
Eventos eliminados¶
Se eliminó
OC\AccountManager::userUpdated. Escuchar en su lugar el evento tipadoOCP\Accounts\UserUpdatedEventSe eliminó
OCA\Files::loadAdditionalScripts. Escuchar en su lugar el evento tipadoOCA\Files\Event\LoadAdditionalScriptsEventSe eliminó
OCA\Files\Service\TagService::addFavorite. Escuchar en su lugar el evento tipadoOCP\Files\Events\NodeAddedToFavoriteSe eliminó
OCA\Files\Service\TagService::removeFavorite. Escuchar en su lugar el evento tipadoOCP\Files\Events\NodeRemovedFromFavoriteSe eliminó
OCA\Files_Sharing::loadAdditionalScripts. Escuchar en su lugar el evento tipadoOCA\Files_Sharing\Event\BeforeTemplateRenderedEventSe eliminó
OCP\AppFramework\Http\TemplateResponse::EVENT_LOAD_ADDITIONAL_SCRIPTS(obsoleto desde la 20). Escuchar en su lugar el evento tipadoOCP\AppFramework\Http\Events\BeforeTemplateRenderedEventSe eliminó
OCP\AppFramework\Http\TemplateResponse::EVENT_LOAD_ADDITIONAL_SCRIPTS_LOGGEDIN(obsoleto desde la 20). Escuchar en su lugar el evento tipadoOCP\AppFramework\Http\Events\BeforeTemplateRenderedEventSe eliminó
OCP\AppFramework\Http\TemplateResponse::loadAdditionalScripts(obsoleto desde la 20). Escuchar en su lugar el evento tipadoOCP\AppFramework\Http\Events\BeforeTemplateRenderedEventSe eliminó
OCP\AppFramework\Http\TemplateResponse::loadAdditionalScriptsLoggedIn(obsoleto desde la 20). Escuchar en su lugar el evento tipadoOCP\AppFramework\Http\Events\BeforeTemplateRenderedEventSe eliminó
OCP\Authentication\TwoFactorAuth\IProvider::EVENT_SUCCESS(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassedSe eliminó
OCP\Authentication\TwoFactorAuth\IProvider::EVENT_FAILED(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailedSe eliminó
OCP\Authentication\TwoFactorAuth\IProvider::failed(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailedSe eliminó
OCP\Authentication\TwoFactorAuth\IProvider::success(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassedSe eliminó
OCP\IDBConnection::ADD_MISSING_COLUMNS(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\DB\Events\AddMissingColumnsEventSe eliminó
OCP\IDBConnection::ADD_MISSING_INDEXES(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\DB\Events\AddMissingIndicesEventSe eliminó
OCP\IDBConnection::ADD_MISSING_PRIMARY_KEYS(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\DB\Events\AddMissingPrimaryKeyEventSe eliminó
OCP\IDBConnection::CHECK_MISSING_COLUMNS(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\DB\Events\AddMissingColumnsEventSe eliminó
OCP\IDBConnection::CHECK_MISSING_COLUMNS_EVENT(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\DB\Events\AddMissingColumnsEventSe eliminó
OCP\IDBConnection::CHECK_MISSING_INDEXES(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\DB\Events\AddMissingIndicesEventSe eliminó
OCP\IDBConnection::CHECK_MISSING_INDEXES_EVENT(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\DB\Events\AddMissingIndicesEventSe eliminó
OCP\IDBConnection::CHECK_MISSING_PRIMARY_KEYS(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\DB\Events\AddMissingPrimaryKeyEventSe eliminó
OCP\IDBConnection::CHECK_MISSING_PRIMARY_KEYS_EVENT(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\DB\Events\AddMissingPrimaryKeyEventSe eliminó
OCP\IGroup::postAddUser. Escuchar en su lugar el evento tipadoOCP\Group\Events\UserAddedEventSe eliminó
OCP\IGroup::postDelete. Escuchar en su lugar el evento tipadoOCP\Group\Events\GroupDeletedEventSe eliminó
OCP\IGroup::postRemoveUser. Escuchar en su lugar el evento tipadoOCP\Group\Events\UserRemovedEventSe eliminó
OCP\IGroup::preAddUser. Escuchar en su lugar el evento tipadoOCP\Group\Events\BeforeUserAddedEventSe eliminó
OCP\IGroup::preDelete. Escuchar en su lugar el evento tipadoOCP\Group\Events\BeforeGroupDeletedEventSe eliminó
OCP\IGroup::preRemoveUser. Escuchar en su lugar el evento tipadoOCP\Group\Events\BeforeUserRemovedEventSe eliminó
OCP\IPreview::EVENT(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\Preview\BeforePreviewFetchedEventSe eliminó
OCP\IPreview:PreviewRequested(obsoleto desde la 22). Escuchar en su lugar el evento tipadoOCP\Preview\BeforePreviewFetchedEventSe eliminó
OCP\IUser::changeUser. Escuchar en su lugar el evento tipadoOCP\User\Events\UserChangedEventSe eliminó
OCP\IUser::postDelete(obsoleto desde la 17). Escuchar en su lugar el evento tipadoOCP\User\Events\UserDeletedEventSe eliminó
OCP\IUser::postSetPassword. Escuchar en su lugar el evento tipadoOCP\User\Events\PasswordUpdatedEventSe eliminó
OCP\IUser::preDelete(obsoleto desde la 17). Escuchar en su lugar el evento tipadoOCP\User\Events\BeforeUserDeletedEventSe eliminó
OCP\IUser::preSetPassword. Escuchar en su lugar el evento tipadoOCP\User\Events\BeforePasswordUpdatedEventSe eliminó
OCP\Share::preShare. Escuchar en su lugar el evento tipadoOCP\Share\Events\BeforeShareCreatedEventSe eliminó
OCP\Share::preUnshare. Escuchar en su lugar el evento tipadoOCP\Share\Events\BeforeShareDeletedEventSe eliminó
OCP\Share::postAcceptShare. Escuchar en su lugar el evento tipadoOCP\Share\Events\ShareAcceptedEventSe eliminó
OCP\Share::postShare. Escuchar en su lugar el evento tipadoOCP\Share\Events\ShareCreatedEventSe eliminó
OCP\Share::postUnshare. Escuchar en su lugar el evento tipadoOCP\Share\Events\ShareDeletedEventSe eliminó
OCP\Share::postUnshareFromSelf. Escuchar en su lugar el evento tipadoOCP\Share\Events\ShareDeletedFromSelfEventSe eliminó
OCP\WorkflowEngine::registerChecks(obsoleto desde la 17). Escuchar en su lugar el evento tipadoOCP\WorkflowEngine\Events\RegisterChecksEventSe eliminó
OCP\WorkflowEngine::registerEntities(obsoleto desde la 17). Escuchar en su lugar el evento tipadoOCP\WorkflowEngine\Events\RegisterEntitiesEventSe eliminó
OCP\WorkflowEngine::registerOperations(obsoleto desde la 17). Escuchar en su lugar el evento tipadoOCP\WorkflowEngine\Events\RegisterOperationsEventSe eliminó
\OCP\Collaboration\Resources::loadAdditionalScripts. Escuchar en su lugar el evento tipadoOCP\Collaboration\Resources\LoadAdditionalScriptsEvent
Propiedades WebDAV eliminadas¶
<nc:file-metadata-size>
<nc:file-metadata-gps>