diff --git a/public/main/inc/lib/api.lib.php b/public/main/inc/lib/api.lib.php index 2815733035..f7fe3277c9 100644 --- a/public/main/inc/lib/api.lib.php +++ b/public/main/inc/lib/api.lib.php @@ -205,6 +205,12 @@ define('LOG_GROUP_PORTAL_USER_UPDATE_ROLE', 'soc_gr_update_role'); define('LOG_MESSAGE_DATA', 'message_data'); define('LOG_MESSAGE_DELETE', 'msg_deleted'); +const LOG_RESOURCE_LINK_DELETE = 'resource_link_deleted'; +const LOG_RESOURCE_LINK_SOFT_DELETE = 'resource_link_soft_deleted'; +const LOG_RESOURCE_NODE = 'resource_node_id'; +const LOG_RESOURCE_LINK = 'resource_link_id'; +const LOG_RESOURCE_NODE_AND_RESOURCE_LINK = 'resource_node_id_and_resource_link_id'; + define('LOG_USER_DELETE', 'user_deleted'); define('LOG_USER_PREDELETE', 'user_predeleted'); define('LOG_USER_CREATE', 'user_created'); diff --git a/src/CoreBundle/Entity/Listener/ResourceLinkListener.php b/src/CoreBundle/Entity/Listener/ResourceLinkListener.php new file mode 100644 index 0000000000..2d61950fd4 --- /dev/null +++ b/src/CoreBundle/Entity/Listener/ResourceLinkListener.php @@ -0,0 +1,29 @@ +getResourceNode(); + + Event::addEvent( + LOG_RESOURCE_LINK_DELETE, + LOG_RESOURCE_NODE, + $resourceNode->getId(), + ); + } +} diff --git a/src/CoreBundle/Entity/ResourceLink.php b/src/CoreBundle/Entity/ResourceLink.php index 2c621fb849..a88c0ed818 100644 --- a/src/CoreBundle/Entity/ResourceLink.php +++ b/src/CoreBundle/Entity/ResourceLink.php @@ -7,6 +7,7 @@ declare(strict_types=1); namespace Chamilo\CoreBundle\Entity; use ApiPlatform\Metadata\ApiResource; +use Chamilo\CoreBundle\Entity\Listener\ResourceLinkListener; use Chamilo\CoreBundle\Repository\ResourceLinkRepository; use Chamilo\CoreBundle\Traits\TimestampableTypedEntity; use Chamilo\CourseBundle\Entity\CGroup; @@ -27,6 +28,7 @@ use Symfony\Component\Serializer\Annotation\Groups; name: 'idx_resource_link_sortable_groups' )] #[ORM\Entity(repositoryClass: ResourceLinkRepository::class)] +#[ORM\EntityListeners([ResourceLinkListener::class])] #[Gedmo\SoftDeleteable(fieldName: 'deletedAt', timeAware: false, hardDelete: true)] class ResourceLink implements Stringable { diff --git a/src/CoreBundle/EventListener/ResourceLinkListener.php b/src/CoreBundle/EventListener/ResourceLinkListener.php new file mode 100644 index 0000000000..e53bdd6e81 --- /dev/null +++ b/src/CoreBundle/EventListener/ResourceLinkListener.php @@ -0,0 +1,36 @@ +getObject(); + + if (!$object instanceof ResourceLink) { + return; + } + + Event::addEvent( + LOG_RESOURCE_LINK_SOFT_DELETE, + LOG_RESOURCE_LINK, + $object->getId(), + ); + } +} diff --git a/src/CoreBundle/Resources/config/listeners.yml b/src/CoreBundle/Resources/config/listeners.yml index 4c0bdfd954..7e5a5f5498 100644 --- a/src/CoreBundle/Resources/config/listeners.yml +++ b/src/CoreBundle/Resources/config/listeners.yml @@ -103,3 +103,5 @@ services: - {name: doctrine.orm.entity_listener, entity_manager: default, lazy: true} Chamilo\CoreBundle\EventListener\MessageStatusListener: ~ + + Chamilo\CoreBundle\EventListener\ResourceLinkListener: ~