Eventos

Resumen

Esta página describe los mecanismos de eventos de la plataforma: el despachador de eventos de OCP con su esquema de nombres, cómo escribir eventos y listeners, la lista de eventos públicos disponibles, tanto los de la plataforma (OCP) como los de las apps (OCA), y los hooks y el emisor público, ambos obsoletos. Está dirigida a quienes desarrollan apps.

Fuente: documentación de Nextcloud, «developer_manual/basics/events», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.

Los eventos se usan para la comunicación entre distintos aspectos del ecosistema de APS Conecta Gestión. Se usan internamente en el servidor de APS Conecta Gestión, para la comunicación del servidor con las apps y para la comunicación entre apps.

Descripción general

El término «eventos» es algo amplio en APS Conecta Gestión y hay varias formas de emitirlos.

Despachador de eventos de OCP

Este mecanismo es un enfoque versátil y tipado de los eventos en el código PHP de APS Conecta Gestión. Usa objetos en lugar de pasar solo primitivas o arrays sin tipo. Esto debería ayudar a ofrecer una mejor experiencia de desarrollo y, a la vez, reducir el riesgo de cambios inesperados en la API que son difíciles de detectar después de la implementación inicial.

Esquema de nombres

El nombre debe reflejar el sujeto y las acciones. Agregar el sufijo Event a las clases de eventos facilita reconocer su propósito.

Por ejemplo, si se crea un usuario, se emitirá un UserCreatedEvent.

Los eventos suelen emitirse después de que el suceso haya ocurrido. Si se emite antes, debe llevar el prefijo Before.

Así, BeforeUserCreatedEvent se emite antes de que los datos del usuario se escriban en la base de datos.

Nota

Aunque se puede optar por nombrar las clases de eventos de otra manera, ceñirse a la convención permitirá que los desarrolladores de APS Conecta Gestión entiendan más fácilmente las apps de los demás.

Nota

Por retrocompatibilidad con la clase GenericEvent de Symfony, APS Conecta Gestión también ofrece una clase \OCP\EventDispatcher\Event. Con la publicación de APS Conecta Gestión 22, esta clase quedó obsoleta. En su lugar deben usarse clases de eventos con nombre y con tipo.

Escribir eventos

Por regla general, los eventos son clases dedicadas que extienden \OCP\EventDispatcher\Event.

<?php

use OCP\EventDispatcher\Event;

namespace OCA\MyApp\Event;

class AddEvent extends Event {}

El evento anterior permite señalar que algo ocurrió. Pero en muchos casos se quiere transportar datos con el evento, como el recurso afectado. Entonces los eventos actúan como simples objetos de transferencia de datos. Por eso necesitan un constructor que reciba los argumentos, miembros privados para almacenarlos y métodos de acceso para leer los valores en los listeners.

<?php

use OCP\EventDispatcher\Event;
use OCP\IUser;

class UserCreatedEvent extends Event {
    private IUser $user;

    public function __construct(IUser $user) {
        parent::__construct();
        $this->user = $user;
    }

    public function getUser(): IUser {
        return $this->user;
    }

}

Escribir un listener

Un listener puede ser una simple función callback (o cualquier otra cosa que sea callable, o una clase dedicada.

Callbacks como listeners

Se pueden usar simples callbacks para reaccionar a los eventos. Reciben el objeto del evento como primer y único parámetro. Se puede indicar como tipo la clase base Event o la subclase que se espera y para la que se registra.

<?php

use OCA\MyApp\Event\AddEvent;
use OCP\AppFramework\App;
use OCP\EventDispatcher\IEventDispatcher;

namespace OCA\MyApp\AppInfo;

class Application extends App {
    public function __construct() {
        parent::__construct('myapp');
            /* @var IEventDispatcher $dispatcher */
            $dispatcher = $this->getContainer()->query(IEventDispatcher::class);
            $dispatcher->addListener(AddEvent::class, function(AddEvent $event) {
                // ...
            });
    }
}

Nota

Indicar como tipo la clase real del evento dará un mejor soporte del IDE y de los analizadores estáticos. En general, se puede dar por hecho que el despachador no entregará ningún otro objeto.

Clases listener

Una clase que puede gestionar un evento implementará la interfaz \OCP\EventDispatcher\IEventListener. Los nombres de las clases deben terminar en Listener.

<?php

use OCA\MyApp\Event\AddEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;

namespace OCA\MyApp\Event;

class AddTwoListener implements IEventListener {

    public function handle(Event $event): void {
        if (!($event instanceOf AddEvent)) {
            return;
        }

        $event->addToCounter(2);
    }
}

Nota

En PHP, las indicaciones de tipo de los parámetros no pueden ser más específicas que las de la interfaz; por eso no se puede usar AddEvent en la firma del método, sino que hay que usar un instanceOf.

En Application.php se conectan el evento y la clase listener. La clase solo se instancia cuando se dispara realmente el evento.

<?php

use OCA\MyApp\Event\AddEvent;
use OCA\MyApp\Listener\AddTwoListener;
use OCP\AppFramework\App;
use OCP\EventDispatcher\IEventDispatcher;

namespace OCA\MyApp\AppInfo;

class Application extends App {
    public function __construct() {
        parent::__construct('myapp');
        /* @var IEventDispatcher $eventDispatcher */
        $dispatcher = $this->getContainer()->get(IEventDispatcher::class);
        $dispatcher->addServiceListener(AddEvent::class, AddTwoListener::class);
    }
}

Nota

El listener se resuelve mediante el contenedor de DI; por eso se le puede agregar un constructor e indicar como tipos los servicios que se necesitan para procesar el evento.

Eventos disponibles

Aquí se encuentra un resumen de los eventos públicos que pueden consumirse en las apps. Para más detalles, ver sus archivos fuente.

\OCA\DAV\Events\AddressBookCreatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario crea una nueva libreta de direcciones.

\OCA\DAV\Events\AddressBookDeletedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario elimina una libreta de direcciones.

\OCA\DAV\Events\AddressBookShareUpdatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario comparte o deja de compartir una libreta de direcciones.

\OCA\DAV\Events\AddressBookUpdatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario actualiza una libreta de direcciones.

\OCA\DAV\Events\CachedCalendarObjectCreatedEvent

Nuevo en la versión 20.

Este evento se activa cuando se está creando un objeto de calendario en caché al obtener una suscripción de calendario.

\OCA\DAV\Events\CachedCalendarObjectDeletedEvent

Nuevo en la versión 20.

Este evento se activa cuando se está eliminando un objeto de calendario en caché al obtener una suscripción de calendario.

\OCA\DAV\Events\CachedCalendarObjectUpdatedEvent

Nuevo en la versión 20.

Este evento se activa cuando se está actualizando un objeto de calendario en caché al obtener una suscripción de calendario.

\OCA\DAV\Events\CalendarCreatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario crea un nuevo calendario.

\OCA\DAV\Events\CalendarDeletedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario elimina un calendario.

\OCA\DAV\Events\CalendarObjectCreatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario crea un objeto de calendario.

\OCA\DAV\Events\CalendarObjectDeletedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario elimina un objeto de calendario.

\OCA\DAV\Events\CalendarObjectUpdatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario actualiza un objeto de calendario.

\OCA\DAV\Events\CalendarPublishedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario publica un calendario.

\OCA\DAV\Events\CalendarShareUpdatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario comparte o deja de compartir un calendario.

\OCA\DAV\Events\CalendarUnpublishedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario deja de publicar un calendario.

\OCA\DAV\Events\CalendarUpdatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario actualiza un calendario.

\OCA\DAV\Events\CardCreatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario crea una nueva tarjeta en una libreta de direcciones.

\OCA\DAV\Events\CardDeletedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario elimina una tarjeta de una libreta de direcciones.

\OCA\DAV\Events\CardUpdatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario actualiza una tarjeta de una libreta de direcciones.

OCA\DAV\Events\SabrePluginAddEvent

Nuevo en la versión 28.

Este evento se activa durante la configuración del servidor SabreDAV para permitir el registro de plugins adicionales.

\OCA\DAV\Events\SabrePluginAuthInitEvent

Nuevo en la versión 20.

Este evento se activa durante la configuración del servidor SabreDAV para permitir el registro de backends de autenticación adicionales.

\OCA\DAV\Events\SubscriptionCreatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario crea una nueva suscripción de calendario.

\OCA\DAV\Events\SubscriptionDeletedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario elimina una suscripción de calendario.

\OCA\DAV\Events\SubscriptionUpdatedEvent

Nuevo en la versión 20.

Este evento se activa cuando un usuario actualiza una suscripción de calendario.

\OCA\FederatedFileSharing\Events\FederatedShareAddedEvent

Nuevo en la versión 20.

Este evento se activa cuando se agrega correctamente un recurso compartido federado.

\OCA\Files\Event\LoadAdditionalScriptsEvent

Nuevo en la versión 17.

Este evento se activa cuando se renderiza la app de archivos. Puede usarse para agregar scripts adicionales a la app de archivos.

\OCA\Files_Sharing\Event\BeforeTemplateRenderedEvent

Nuevo en la versión 20.

Se emite antes de que ocurra el paso de renderizado de la página del recurso compartido público. El evento contiene un indicador que especifica si se trata de la página de autenticación de un recurso compartido público.

\OCA\Files_Trashbin\Events\MoveToTrashEvent

Nuevo en la versión 28.

Se emite después de que un archivo o una carpeta se mueve a la papelera.

\OCA\Settings\Events\BeforeTemplateRenderedEvent

Nuevo en la versión 20.

Este evento se activa justo antes de que se renderice la plantilla de gestión de usuarios.

\OCA\User_LDAP\Events\GroupBackendRegistered

Nuevo en la versión 20.

Este evento se activa justo después de que se registra el backend de grupos de LDAP.

\OCA\User_LDAP\Events\UserBackendRegistered

Nuevo en la versión 20.

Este evento se activa justo después de que se registra el backend de usuarios de LDAP.

\OCA\Viewer\Event\LoadViewer

Nuevo en la versión 17.

Este evento se activa cada vez que se carga el visor y deben cargarse las extensiones.

OCP\Accounts\UserUpdatedEvent

Nuevo en la versión 28.

Este evento se activa cuando se actualizaron los datos de la cuenta de un usuario.

OCP\App\Events\AppDisableEvent

Nuevo en la versión 27.

Este evento se activa cuando se deshabilita una app.

OCP\App\Events\AppEnableEvent

Nuevo en la versión 27.

Este evento se activa cuando se habilita una app.

OCP\App\Events\AppUpdateEvent

Nuevo en la versión 27.

Este evento se activa cuando se actualiza una app.

OCP\App\ManagerEvent

Nuevo en la versión 9.

Clase ManagerEvent

OCP\AppFramework\Http\Events\BeforeLoginTemplateRenderedEvent

Nuevo en la versión 28.

Se emite antes del paso de renderizado del TemplateResponse del inicio de sesión.

OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent

Nuevo en la versión 20.

Se emite antes del paso de renderizado de cada TemplateResponse. El evento contiene un indicador que especifica si un usuario ha iniciado sesión.

OCP\Authentication\Events\AnyLoginFailedEvent

Nuevo en la versión 26.

Se emite cuando falla la autenticación

OCP\Authentication\Events\LoginFailedEvent

Nuevo en la versión 19.

Se emite cuando falla la autenticación, pero solo si el nombre de inicio de sesión puede asociarse a un usuario existente.

OCP\Authentication\Events\TokenInvalidatedEvent

Nuevo en la versión 32.

Se emite cuando se invalida un token de autenticación.

OCP\Authentication\TwoFactorAuth\RegistryEvent

Nuevo en la versión 15.

OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed

Nuevo en la versión 28.

OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed

Nuevo en la versión 28.

OCP\Authentication\TwoFactorAuth\TwoFactorProviderDisabled

Nuevo en la versión 20.

OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserDisabled

Nuevo en la versión 22.

OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserEnabled

Nuevo en la versión 22.

OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserRegistered

Nuevo en la versión 28.

OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserUnregistered

Nuevo en la versión 28.

OCP\Authentication\TwoFactorAuth\TwoFactorProviderUserDeleted

Nuevo en la versión 28.

OCP\BeforeSabrePubliclyLoadedEvent

Nuevo en la versión 26.

Se despacha antes de que se cargue Sabre al acceder a los endpoints públicos de webdav. Puede usarse, por ejemplo, para inyectar un plugin de Sabre

OCP\Calendar\Events\CalendarObjectCreatedEvent

Nuevo en la versión 32.

OCP\Calendar\Events\CalendarObjectDeletedEvent

Nuevo en la versión 32.

OCP\Calendar\Events\CalendarObjectMovedEvent

Nuevo en la versión 32.

OCP\Calendar\Events\CalendarObjectMovedToTrashEvent

Nuevo en la versión 32.

OCP\Calendar\Events\CalendarObjectRestoredEvent

Nuevo en la versión 32.

OCP\Calendar\Events\CalendarObjectUpdatedEvent

Nuevo en la versión 32.

OCP\Collaboration\AutoComplete\AutoCompleteEvent

Nuevo en la versión 16.

OCP\Collaboration\AutoComplete\AutoCompleteFilterEvent

Nuevo en la versión 28.

OCP\Collaboration\Reference\RenderReferenceEvent

Nuevo en la versión 25.

Evento que se emite cuando las apps podrían renderizar referencias, como vistas previas de enlaces o widgets del selector inteligente. Puede usarse para inyectar scripts que lo extiendan. Hay más detalles en el análisis en profundidad Proveedores de referencias.

OCP\Collaboration\Resources\LoadAdditionalScriptsEvent

Nuevo en la versión 25.

Las apps usan este evento para registrar sus propios scripts de frontend con el fin de integrar proyectos en su app. Las apps también deben despachar el evento para cargar los scripts durante la carga de la página

OCP\Comments\CommentsEntityEvent

Nuevo en la versión 9.1.

Cambiado en la versión 28.0.0: Se despacha como evento tipado

Clase CommentsEntityEvent

OCP\Comments\CommentsEvent

Nuevo en la versión 9.

Clase CommentsEvent

OCP\Config\BeforePreferenceDeletedEvent

Nuevo en la versión 25.

OCP\Config\BeforePreferenceSetEvent

Nuevo en la versión 25.

OCP\Console\ConsoleEvent

Nuevo en la versión 9.

Clase ConsoleEvent

OCP\Contacts\Events\ContactInteractedWithEvent

Nuevo en la versión 19.

Un evento que permite a las apps notificar a otros componentes sobre una interacción entre dos usuarios. Puede usarse para construir mejores recomendaciones y sugerencias en las interfaces de usuario. Quienes lo emitan deberían agregar al menos un identificador (uid, correo electrónico, ID de nube federada) del destinatario de la interacción.

OCP\DB\Events\AddMissingColumnsEvent

Nuevo en la versión 28.

Evento que permite a las apps registrar información sobre columnas faltantes de la base de datos. Este evento se despachará para la comprobación en las configuraciones de administración y al ejecutar occ db:add-missing-columns, que entonces creará esas columnas

OCP\DB\Events\AddMissingIndicesEvent

Nuevo en la versión 28.

Evento que permite a las apps registrar información sobre índices faltantes de la base de datos. Este evento se despachará para la comprobación en las configuraciones de administración y al ejecutar occ db:add-missing-indices, que entonces creará esos índices

OCP\DB\Events\AddMissingPrimaryKeyEvent

Nuevo en la versión 28.

Evento que permite a las apps registrar información sobre claves primarias faltantes de la base de datos. Este evento se despachará para la comprobación en las configuraciones de administración y al ejecutar occ db:add-missing-primary-keys, que entonces creará esas claves

OCP\DirectEditing\RegisterDirectEditorEvent

Nuevo en la versión 18.

Evento que permite registrar el editor directo.

OCP\EventDispatcher\GenericEvent

Nuevo en la versión 18.

Clase GenericEvent. Reimplementación de conveniencia de \Symfony\Component\GenericEvent sobre \OCP\EventDispatcher\Event

OCP\Federation\Events\TrustedServerRemovedEvent

Nuevo en la versión 25.

OCP\Files\Cache\AbstractCacheEvent

Nuevo en la versión 22.

OCP\Files\Cache\CacheEntryInsertedEvent

Nuevo en la versión 21.

Evento para cuando se inserta una entrada existente en la caché

OCP\Files\Cache\CacheEntryRemovedEvent

Nuevo en la versión 21.

Evento para cuando se elimina una entrada existente de la caché

OCP\Files\Cache\CacheEntryUpdatedEvent

Nuevo en la versión 21.

Evento para cuando se actualiza una entrada existente en la caché

OCP\Files\Cache\CacheInsertEvent

Nuevo en la versión 16.

Evento para cuando se agrega una entrada nueva a la caché

OCP\Files\Cache\CacheUpdateEvent

Nuevo en la versión 16.

Evento para cuando se actualiza una entrada existente en la caché

OCP\Files\Config\Event\UserMountAddedEvent

Nuevo en la versión 31.

Evento que se emite cuando se agregó un punto de montaje de usuario.

OCP\Files\Config\Event\UserMountRemovedEvent

Nuevo en la versión 31.

Evento que se emite cuando se eliminó un punto de montaje de usuario.

OCP\Files\Config\Event\UserMountUpdatedEvent

Nuevo en la versión 31.

Evento que se emite cuando se movió un punto de montaje de usuario.

OCP\Files\Events\BeforeDirectFileDownloadEvent

Nuevo en la versión 25.

Este evento se activa cuando un usuario intenta descargar un archivo directamente.

OCP\Files\Events\BeforeFileScannedEvent

Nuevo en la versión 18.

OCP\Files\Events\BeforeFileSystemSetupEvent

Nuevo en la versión 31.

Evento que se activa antes de que se configure el sistema de archivos

OCP\Files\Events\BeforeFolderScannedEvent

Nuevo en la versión 18.

OCP\Files\Events\BeforeZipCreatedEvent

Nuevo en la versión 25.

Este evento se activa antes de que se cree un archivo comprimido cuando un usuario solicitó descargar una carpeta o varios archivos. Estableciendo successful en false se puede abortar la creación del tar y denegar la descarga.

OCP\Files\Events\FileCacheUpdated

Nuevo en la versión 18.

OCP\Files\Events\FileScannedEvent

Nuevo en la versión 18.

OCP\Files\Events\FolderScannedEvent

Nuevo en la versión 18.

OCP\Files\Events\InvalidateMountCacheEvent

Nuevo en la versión 24.

Se usa para notificar al gestor de configuración del sistema de archivos que cambiaron los puntos de montaje disponibles para un usuario

OCP\Files\Events\Node\BeforeNodeCopiedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\BeforeNodeCreatedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\BeforeNodeDeletedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\BeforeNodeReadEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\BeforeNodeRenamedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\BeforeNodeTouchedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\BeforeNodeWrittenEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\FilesystemTornDownEvent

Nuevo en la versión 24.

Evento que se dispara después de que se haya desmantelado el sistema de archivos

OCP\Files\Events\Node\NodeCopiedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\NodeCreatedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\NodeDeletedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\NodeRenamedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\NodeTouchedEvent

Nuevo en la versión 20.

OCP\Files\Events\Node\NodeWrittenEvent

Nuevo en la versión 20.

OCP\Files\Events\NodeAddedToCache

Nuevo en la versión 18.

OCP\Files\Events\NodeAddedToFavorite

Nuevo en la versión 28.

OCP\Files\Events\NodeRemovedFromCache

Nuevo en la versión 18.

OCP\Files\Events\NodeRemovedFromFavorite

Nuevo en la versión 28.

OCP\Files\ObjectStore\Events\BucketCreatedEvent

Nuevo en la versión 33.

OCP\Files\Template\BeforeGetTemplatesEvent

Nuevo en la versión 30.

OCP\Files\Template\FileCreatedFromTemplateEvent

Nuevo en la versión 21.

OCP\Files\Template\RegisterTemplateCreatorEvent

Nuevo en la versión 30.

OCP\FilesMetadata\Event\MetadataBackgroundEvent

Nuevo en la versión 28.

MetadataBackgroundEvent es un evento similar a MetadataLiveEvent, pero se despacha en un hilo en segundo plano en lugar del hilo en vivo. Esto significa que no hay límite para el tiempo necesario para generar los metadatos propios.

OCP\FilesMetadata\Event\MetadataLiveEvent

Nuevo en la versión 28.

MetadataLiveEvent es un evento que se inicia cuando se crea o actualiza un archivo. La app contiene el Node relacionado con el archivo creado/actualizado y un FilesMetadata que ya contiene los metadatos conocidos en ese momento.

Establecer metadatos nuevos, o modificar metadatos ya existentes con un valor distinto, activará el guardado de los metadatos en la base de datos.

OCP\FilesMetadata\Event\MetadataNamedEvent

Nuevo en la versión 28.

MetadataNamedEvent es un evento similar a MetadataBackgroundEvent, completado con un nombre de destino, que se usa para limitar la actualización de metadatos solo a los listeners capaces de excluirse a sí mismos mediante un filtro. Esto significa que, al usar este evento, la app debe implementar un filtro sobre el nombre registrado del evento que devuelve getName()

  • Este evento se activa principalmente cuando se agrega un nombre registrado al escaneo de archivos: es decir, ./occ files:scan --generate-metadata [name]

OCP\Group\Events\BeforeGroupChangedEvent

Nuevo en la versión 26.

OCP\Group\Events\BeforeGroupCreatedEvent

Nuevo en la versión 18.

OCP\Group\Events\BeforeGroupDeletedEvent

Nuevo en la versión 18.

OCP\Group\Events\BeforeUserAddedEvent

Nuevo en la versión 18.

OCP\Group\Events\BeforeUserRemovedEvent

Nuevo en la versión 18.

OCP\Group\Events\GroupChangedEvent

Nuevo en la versión 26.

OCP\Group\Events\GroupCreatedEvent

Nuevo en la versión 18.

OCP\Group\Events\GroupDeletedEvent

Nuevo en la versión 18.

OCP\Group\Events\SubAdminAddedEvent

Nuevo en la versión 21.

OCP\Group\Events\SubAdminRemovedEvent

Nuevo en la versión 21.

OCP\Group\Events\UserAddedEvent

Nuevo en la versión 18.

OCP\Group\Events\UserRemovedEvent

Nuevo en la versión 18.

OCP\Log\Audit\CriticalActionPerformedEvent

Nuevo en la versión 22.

Se emite cuando la app admin_audit debe registrar una entrada

OCP\Log\BeforeMessageLoggedEvent

Nuevo en la versión 28.

Evento para cuando se está registrando un elemento de registro

OCP\Mail\Events\BeforeMessageSent

Nuevo en la versión 19.

Se emite antes de que se envíe un correo del sistema. Puede usarse para alterar el mensaje.

OCP\Navigation\Events\LoadAdditionalEntriesEvent

Nuevo en la versión 31.

OCP\OCM\Events\ResourceTypeRegisterEvent

Nuevo en la versión 28.

Este evento sirve para registrar recursos de OCM adicionales antes de que la API los devuelva en la lista de proveedores de OCM y en la capability

OCP\Preview\BeforePreviewFetchedEvent

Nuevo en la versión 25.0.1.

Cambiado en la versión 28.0.0: los argumentos del constructor $width, $height, $crop y $mode ya no admiten null.

Cambiado en la versión 31.0.0: se agregó el argumento del constructor $mimeType

Se emite antes de que se obtenga la vista previa de un archivo. Puede usarse para bloquear el renderizado de la vista previa lanzando una OCP\Files\NotFoundException

OCP\Profile\BeforeTemplateRenderedEvent

Nuevo en la versión 25.

Se emite antes de que ocurra el paso de renderizado de la página del perfil público.

OCP\SabrePluginEvent

Nuevo en la versión 8.2.

OCP\Security\CSP\AddContentSecurityPolicyEvent

Nuevo en la versión 17.

Permite inyectar algo en la política de contenido predeterminada. Esto es útil, por ejemplo, cuando se inyecta código Javascript en una vista que pertenece a otro controlador y no se puede modificar su propio Content-Security-Policy. Cabe señalar que el ajuste solo se aplica a las aplicaciones que usan controladores de AppFramework.

ADVERTENCIA: usar esta API de forma incorrecta puede hacer que la instancia sea más insegura. Hay que pensarlo dos veces antes de agregar recursos a la lista de permitidos. Cabe señalar también que no es posible usar las funciones disallowXYZ.

OCP\Security\Events\GenerateSecurePasswordEvent

Nuevo en la versión 18.

Evento para solicitar que se genere una contraseña segura.

Desde APS Conecta Gestión 31, este evento también ofrece un método getContext que permite aplicar reglas distintas para distintos contextos de contraseña, como las contraseñas de cuenta o las contraseñas de recursos compartidos.

OCP\Security\Events\ValidatePasswordPolicyEvent

Nuevo en la versión 18.

Este evento puede emitirse para solicitar la validación de una contraseña. Si hay instalada una app de política de contraseñas y la contraseña no es válida, se lanzará una \OCP\HintException.

Desde APS Conecta Gestión 31, este evento también ofrece un método getContext que permite aplicar reglas distintas para distintos contextos de contraseña, como las contraseñas de cuenta o las contraseñas de recursos compartidos.

OCP\Security\FeaturePolicy\AddFeaturePolicyEvent

Nuevo en la versión 17.

Evento que permite registrar una cabecera de política de funciones en una solicitud.

OCP\Settings\Events\DeclarativeSettingsGetValueEvent

Nuevo en la versión 29.

OCP\Settings\Events\DeclarativeSettingsRegisterFormEvent

Nuevo en la versión 29.

OCP\Settings\Events\DeclarativeSettingsSetValueEvent

Nuevo en la versión 29.

OCP\Share\Events\BeforeShareCreatedEvent

Nuevo en la versión 28.

OCP\Share\Events\BeforeShareDeletedEvent

Nuevo en la versión 28.

OCP\Share\Events\ShareAcceptedEvent

Nuevo en la versión 28.

OCP\Share\Events\ShareCreatedEvent

Nuevo en la versión 18.

OCP\Share\Events\ShareDeletedEvent

Nuevo en la versión 21.

OCP\Share\Events\ShareDeletedFromSelfEvent

Nuevo en la versión 28.

OCP\Share\Events\VerifyMountPointEvent

Nuevo en la versión 19.

OCP\Share\ShareReview\Events\ShareReviewAccessCheckEvent

Nuevo en la versión 34.0.2.

Control de autorización para eliminar un recurso compartido gestionado por una app a través de una app de revisión de recursos compartidos. Lo despacha la app propietaria del recurso compartido (su implementación de OCP\Share\ShareReview\IShareReviewSource) al comienzo de deleteShare(), antes de eliminar nada. La app de revisión de recursos compartidos escucha este evento y responde con grantAccess() o denyAccess() según si el usuario actual es un operador autorizado de revisión de recursos compartidos; las apps que solo exponen recursos compartidos no deben escucharlo. El evento deniega por defecto: si ningún listener responde, el recurso compartido no debe eliminarse. Una vez denegado, se ignoran las concesiones posteriores y se detiene la propagación del evento.

OCP\Share\ShareReview\RegisterShareReviewSourceEvent

Nuevo en la versión 34.0.2.

Evento que despacha una app de revisión de recursos compartidos para recopilar fuentes de recursos compartidos de otras apps. Los listeners registran el nombre de clase de su implementación de OCP\Share\ShareReview\IShareReviewSource, cuyo método getShares() devuelve una lista de objetos OCP\Share\ShareReview\ShareReviewEntry.

OCP\SpeechToText\Events\TranscriptionFailedEvent

Nuevo en la versión 27.

Este evento se emite si falló la transcripción de un archivo multimedia mediante un proveedor de voz a texto

OCP\SpeechToText\Events\TranscriptionSuccessfulEvent

Nuevo en la versión 27.

Este evento se emite cuando la transcripción de un archivo multimedia se completó correctamente

OCP\SystemTag\ManagerEvent

Nuevo en la versión 9.

Clase ManagerEvent

OCP\SystemTag\MapperEvent

Nuevo en la versión 9.

Clase MapperEvent

OCP\SystemTag\SystemTagsEntityEvent

Nuevo en la versión 9.1.

Cambiado en la versión 28.0.0: Se despacha como evento tipado

Clase SystemTagsEntityEvent

OCP\TaskProcessing\Events\GetTaskProcessingProvidersEvent

Nuevo en la versión 32.

Evento que despacha el servidor para recopilar proveedores de procesamiento de tareas y tipos de tarea personalizados desde los listeners (como AppAPI). Los listeners deberían agregar sus proveedores y tipos de tarea con los métodos addProvider() y addTaskType().

OCP\TaskProcessing\Events\TaskFailedEvent

Nuevo en la versión 30.

OCP\TaskProcessing\Events\TaskSuccessfulEvent

Nuevo en la versión 30.

OCP\TextProcessing\Events\TaskFailedEvent

Nuevo en la versión 27.1.

OCP\TextProcessing\Events\TaskSuccessfulEvent

Nuevo en la versión 27.1.

OCP\TextToImage\Events\TaskFailedEvent

Nuevo en la versión 28.

OCP\TextToImage\Events\TaskSuccessfulEvent

Nuevo en la versión 28.

OCP\User\Events\BeforePasswordUpdatedEvent

Nuevo en la versión 18.

Se emite antes de que se actualice la contraseña del usuario.

OCP\User\Events\BeforeUserCreatedEvent

Nuevo en la versión 18.

Se emite antes de que se cree un usuario nuevo en el backend.

OCP\User\Events\BeforeUserDeletedEvent

Nuevo en la versión 18.

OCP\User\Events\BeforeUserIdUnassignedEvent

Nuevo en la versión 31.

Se emite antes de eliminar el mapeo entre un usuario externo y un userid interno

OCP\User\Events\BeforeUserLoggedInEvent

Nuevo en la versión 18.

OCP\User\Events\BeforeUserLoggedInWithCookieEvent

Nuevo en la versión 18.

Se emite antes de que un usuario inicie sesión mediante las cookies de remember-me.

OCP\User\Events\BeforeUserLoggedOutEvent

Nuevo en la versión 18.

Se emite antes de que un usuario cierre sesión.

OCP\User\Events\OutOfOfficeChangedEvent

Nuevo en la versión 28.

Se emite cuando cambió el período de ausencia de un usuario

OCP\User\Events\OutOfOfficeClearedEvent

Nuevo en la versión 28.

Se emite cuando se borra el período de ausencia de un usuario

OCP\User\Events\OutOfOfficeEndedEvent

Nuevo en la versión 28.

Se emite cuando terminó el período de ausencia de un usuario

OCP\User\Events\OutOfOfficeScheduledEvent

Nuevo en la versión 28.

Se emite cuando se programa el período de ausencia de un usuario

OCP\User\Events\OutOfOfficeStartedEvent

Nuevo en la versión 28.

Se emite cuando comenzó el período de ausencia de un usuario

OCP\User\Events\PasswordUpdatedEvent

Nuevo en la versión 18.

Se emite cuando se actualizó la contraseña del usuario.

OCP\User\Events\PostLoginEvent

Nuevo en la versión 18.

OCP\User\Events\UserChangedEvent

Nuevo en la versión 18.

OCP\User\Events\UserCreatedEvent

Nuevo en la versión 18.

Se emite cuando se creó un usuario nuevo en el backend.

OCP\User\Events\UserDeletedEvent

Nuevo en la versión 18.

OCP\User\Events\UserFirstTimeLoggedInEvent

Nuevo en la versión 28.

OCP\User\Events\UserIdAssignedEvent

Nuevo en la versión 31.

Lo emiten los backends (como user_ldap) cuando un usuario creado externamente se mapea por primera vez y se le asigna un userid

OCP\User\Events\UserIdUnassignedEvent

Nuevo en la versión 31.

Se emite después de eliminar el mapeo entre un usuario externo y un userid interno

OCP\User\Events\UserLiveStatusEvent

Nuevo en la versión 20.

OCP\User\Events\UserLoggedInEvent

Nuevo en la versión 18.

OCP\User\Events\UserLoggedInWithCookieEvent

Nuevo en la versión 18.

Se emite cuando un usuario inició sesión correctamente mediante las cookies de remember-me.

OCP\User\Events\UserLoggedOutEvent

Nuevo en la versión 18.

Se emite cuando un usuario cerró sesión correctamente.

OCP\User\GetQuotaEvent

Nuevo en la versión 20.

Evento que permite a las apps

OCP\WorkflowEngine\Events\LoadSettingsScriptsEvent

Nuevo en la versión 20.

Se emite cuando se carga la página de ajustes del motor de flujos de trabajo.

OCP\WorkflowEngine\Events\RegisterChecksEvent

Nuevo en la versión 18.

OCP\WorkflowEngine\Events\RegisterEntitiesEvent

Nuevo en la versión 18.

OCP\WorkflowEngine\Events\RegisterOperationsEvent

Nuevo en la versión 18.

Hooks

Obsoleto desde la versión 18: Usar en su lugar el despachador de eventos de OCP.

Los hooks se usan para ejecutar código antes o después de que haya ocurrido un suceso. Esto es útil, por ejemplo, para ejecutar código de limpieza después de que se hayan eliminado usuarios, grupos o archivos. Los hooks deben registrarse en el proceso de arranque.

Hooks disponibles

El ámbito es el primer parámetro que se pasa al método listen; el segundo parámetro es el método y el tercero, el callback que debe ejecutarse una vez que se llama al hook, p. ej.:

<?php

// listen on user predelete
$callback = function($user) {
    // your code that executes before $user is deleted
};
$userManager->listen('\OC\User', 'preDelete', $callback);

Los hooks también pueden quitarse con el método removeListener del objeto:

<?php

// delete previous callback
$userManager->removeListener(null, null, $callback);

Están disponibles los siguientes hooks:

Sesión

Se puede inyectar desde el ServerContainer con el servicio \OCP\IUserSession.

Hooks disponibles en el ámbito \OC\User:

  • preSetPassword (\OC\User\User $user, string $password, string $recoverPassword)

  • postSetPassword (\OC\User\User $user, string $password, string $recoverPassword)

  • changeUser (\OC\User\User $user, string $feature, string $value)

  • preDelete (\OC\User\User $user)

  • postDelete (\OC\User\User $user)

  • preCreateUser (string $uid, string $password)

  • postCreateUser (\OC\User\User $user)

  • preLogin (string $user, string $password)

  • postLogin (\OC\User\User $user, string $password)

  • logout ()

UserManager

Se puede inyectar desde el ServerContainer con el servicio \OCP\IUserManager.

Hooks disponibles en el ámbito \OC\User:

  • preSetPassword (\OC\User\User $user, string $password, string $recoverPassword)

  • postSetPassword (\OC\User\User $user, string $password, string $recoverPassword)

  • preDelete (\OC\User\User $user)

  • postDelete (\OC\User\User $user)

  • preCreateUser (string $uid, string $password)

  • postCreateUser (\OC\User\User $user, string $password)

GroupManager

Hooks disponibles en el ámbito \OC\Group:

  • preAddUser (\OC\Group\Group $group, \OC\User\User $user)

  • postAddUser (\OC\Group\Group $group, \OC\User\User $user)

  • preRemoveUser (\OC\Group\Group $group, \OC\User\User $user)

  • postRemoveUser (\OC\Group\Group $group, \OC\User\User $user)

  • preDelete (\OC\Group\Group $group)

  • postDelete (\OC\Group\Group $group)

  • preCreate (string $groupId)

  • postCreate (\OC\Group\Group $group)

Raíz del sistema de archivos

Se puede inyectar desde el ServerContainer llamando al método getRootFolder(), getUserFolder() o getAppFolder().

Para activar estos eventos en la app, hay que agregar lo siguiente al archivo info.xml:

<types>
    <filesystem/>
</types>

Hooks del sistema de archivos disponibles en el ámbito \OC\Files:

  • preWrite (\OCP\Files\Node $node)

  • postWrite (\OCP\Files\Node $node)

  • preCreate (\OCP\Files\Node $node)

  • postCreate (\OCP\Files\Node $node)

  • preDelete (\OCP\Files\Node $node)

  • postDelete (\OCP\Files\Node $node)

  • preTouch (\OCP\Files\Node $node, int $mtime)

  • postTouch (\OCP\Files\Node $node)

  • preCopy (\OCP\Files\Node $source, \OCP\Files\Node $target)

  • postCopy (\OCP\Files\Node $source, \OCP\Files\Node $target)

  • preRename (\OCP\Files\Node $source, \OCP\Files\Node $target)

  • postRename (\OCP\Files\Node $source, \OCP\Files\Node $target)

Escáner del sistema de archivos

Hooks del escáner del sistema de archivos disponibles en el ámbito \OC\Files\Utils\Scanner:

  • scanFile (string $absolutePath)

  • scanFolder (string $absolutePath)

  • postScanFile (string $absolutePath)

  • postScanFolder (string $absolutePath)

Emisor público

Obsoleto desde la versión 18: Usar en su lugar el despachador de eventos de OCP.

Por definir