Internal: Add entity listener to track deleted resource link

pull/5946/head
Angel Fernando Quiroz Campos 11 months ago
parent 0abb3e1fbd
commit 48175c80a5
No known key found for this signature in database
GPG Key ID: B284841AE3E562CD
  1. 6
      public/main/inc/lib/api.lib.php
  2. 29
      src/CoreBundle/Entity/Listener/ResourceLinkListener.php
  3. 2
      src/CoreBundle/Entity/ResourceLink.php
  4. 36
      src/CoreBundle/EventListener/ResourceLinkListener.php
  5. 2
      src/CoreBundle/Resources/config/listeners.yml

@ -205,6 +205,12 @@ define('LOG_GROUP_PORTAL_USER_UPDATE_ROLE', 'soc_gr_update_role');
define('LOG_MESSAGE_DATA', 'message_data'); define('LOG_MESSAGE_DATA', 'message_data');
define('LOG_MESSAGE_DELETE', 'msg_deleted'); 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_DELETE', 'user_deleted');
define('LOG_USER_PREDELETE', 'user_predeleted'); define('LOG_USER_PREDELETE', 'user_predeleted');
define('LOG_USER_CREATE', 'user_created'); define('LOG_USER_CREATE', 'user_created');

@ -0,0 +1,29 @@
<?php
/* For licensing terms, see /license.txt */
declare(strict_types=1);
namespace Chamilo\CoreBundle\Entity\Listener;
use Chamilo\CoreBundle\Entity\ResourceLink;
use Doctrine\ORM\Event\PostRemoveEventArgs;
use Doctrine\ORM\Exception\ORMException;
use Event;
class ResourceLinkListener
{
/**
* @throws ORMException
*/
public function postRemove(ResourceLink $resourceLink, PostRemoveEventArgs $args): void
{
$resourceNode = $resourceLink->getResourceNode();
Event::addEvent(
LOG_RESOURCE_LINK_DELETE,
LOG_RESOURCE_NODE,
$resourceNode->getId(),
);
}
}

@ -7,6 +7,7 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Entity; namespace Chamilo\CoreBundle\Entity;
use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\ApiResource;
use Chamilo\CoreBundle\Entity\Listener\ResourceLinkListener;
use Chamilo\CoreBundle\Repository\ResourceLinkRepository; use Chamilo\CoreBundle\Repository\ResourceLinkRepository;
use Chamilo\CoreBundle\Traits\TimestampableTypedEntity; use Chamilo\CoreBundle\Traits\TimestampableTypedEntity;
use Chamilo\CourseBundle\Entity\CGroup; use Chamilo\CourseBundle\Entity\CGroup;
@ -27,6 +28,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
name: 'idx_resource_link_sortable_groups' name: 'idx_resource_link_sortable_groups'
)] )]
#[ORM\Entity(repositoryClass: ResourceLinkRepository::class)] #[ORM\Entity(repositoryClass: ResourceLinkRepository::class)]
#[ORM\EntityListeners([ResourceLinkListener::class])]
#[Gedmo\SoftDeleteable(fieldName: 'deletedAt', timeAware: false, hardDelete: true)] #[Gedmo\SoftDeleteable(fieldName: 'deletedAt', timeAware: false, hardDelete: true)]
class ResourceLink implements Stringable class ResourceLink implements Stringable
{ {

@ -0,0 +1,36 @@
<?php
/* For licensing terms, see /license.txt */
declare(strict_types=1);
namespace Chamilo\CoreBundle\EventListener;
use Chamilo\CoreBundle\Entity\ResourceLink;
use Doctrine\Bundle\DoctrineBundle\Attribute\AsDoctrineListener;
use Doctrine\ORM\Exception\ORMException;
use Event;
use Gedmo\SoftDeleteable\Event\PostSoftDeleteEventArgs;
use Gedmo\SoftDeleteable\SoftDeleteableListener;
#[AsDoctrineListener(event: SoftDeleteableListener::POST_SOFT_DELETE, connection: 'default')]
class ResourceLinkListener
{
/**
* @throws ORMException
*/
public function postSoftDelete(PostSoftDeleteEventArgs $args): void
{
$object = $args->getObject();
if (!$object instanceof ResourceLink) {
return;
}
Event::addEvent(
LOG_RESOURCE_LINK_SOFT_DELETE,
LOG_RESOURCE_LINK,
$object->getId(),
);
}
}

@ -103,3 +103,5 @@ services:
- {name: doctrine.orm.entity_listener, entity_manager: default, lazy: true} - {name: doctrine.orm.entity_listener, entity_manager: default, lazy: true}
Chamilo\CoreBundle\EventListener\MessageStatusListener: ~ Chamilo\CoreBundle\EventListener\MessageStatusListener: ~
Chamilo\CoreBundle\EventListener\ResourceLinkListener: ~

Loading…
Cancel
Save