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\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\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\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\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\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\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\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\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