Skip to content

Commit 48175c8

Browse files
committed
Internal: Add entity listener to track deleted resource link
1 parent 0abb3e1 commit 48175c8

File tree

5 files changed

+75
-0
lines changed

5 files changed

+75
-0
lines changed

public/main/inc/lib/api.lib.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,12 @@
205205
define('LOG_MESSAGE_DATA', 'message_data');
206206
define('LOG_MESSAGE_DELETE', 'msg_deleted');
207207

208+
const LOG_RESOURCE_LINK_DELETE = 'resource_link_deleted';
209+
const LOG_RESOURCE_LINK_SOFT_DELETE = 'resource_link_soft_deleted';
210+
const LOG_RESOURCE_NODE = 'resource_node_id';
211+
const LOG_RESOURCE_LINK = 'resource_link_id';
212+
const LOG_RESOURCE_NODE_AND_RESOURCE_LINK = 'resource_node_id_and_resource_link_id';
213+
208214
define('LOG_USER_DELETE', 'user_deleted');
209215
define('LOG_USER_PREDELETE', 'user_predeleted');
210216
define('LOG_USER_CREATE', 'user_created');
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
/* For licensing terms, see /license.txt */
4+
5+
declare(strict_types=1);
6+
7+
namespace Chamilo\CoreBundle\Entity\Listener;
8+
9+
use Chamilo\CoreBundle\Entity\ResourceLink;
10+
use Doctrine\ORM\Event\PostRemoveEventArgs;
11+
use Doctrine\ORM\Exception\ORMException;
12+
use Event;
13+
14+
class ResourceLinkListener
15+
{
16+
/**
17+
* @throws ORMException
18+
*/
19+
public function postRemove(ResourceLink $resourceLink, PostRemoveEventArgs $args): void
20+
{
21+
$resourceNode = $resourceLink->getResourceNode();
22+
23+
Event::addEvent(
24+
LOG_RESOURCE_LINK_DELETE,
25+
LOG_RESOURCE_NODE,
26+
$resourceNode->getId(),
27+
);
28+
}
29+
}

src/CoreBundle/Entity/ResourceLink.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace Chamilo\CoreBundle\Entity;
88

99
use ApiPlatform\Metadata\ApiResource;
10+
use Chamilo\CoreBundle\Entity\Listener\ResourceLinkListener;
1011
use Chamilo\CoreBundle\Repository\ResourceLinkRepository;
1112
use Chamilo\CoreBundle\Traits\TimestampableTypedEntity;
1213
use Chamilo\CourseBundle\Entity\CGroup;
@@ -27,6 +28,7 @@
2728
name: 'idx_resource_link_sortable_groups'
2829
)]
2930
#[ORM\Entity(repositoryClass: ResourceLinkRepository::class)]
31+
#[ORM\EntityListeners([ResourceLinkListener::class])]
3032
#[Gedmo\SoftDeleteable(fieldName: 'deletedAt', timeAware: false, hardDelete: true)]
3133
class ResourceLink implements Stringable
3234
{
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
/* For licensing terms, see /license.txt */
4+
5+
declare(strict_types=1);
6+
7+
namespace Chamilo\CoreBundle\EventListener;
8+
9+
use Chamilo\CoreBundle\Entity\ResourceLink;
10+
use Doctrine\Bundle\DoctrineBundle\Attribute\AsDoctrineListener;
11+
use Doctrine\ORM\Exception\ORMException;
12+
use Event;
13+
use Gedmo\SoftDeleteable\Event\PostSoftDeleteEventArgs;
14+
use Gedmo\SoftDeleteable\SoftDeleteableListener;
15+
16+
#[AsDoctrineListener(event: SoftDeleteableListener::POST_SOFT_DELETE, connection: 'default')]
17+
class ResourceLinkListener
18+
{
19+
/**
20+
* @throws ORMException
21+
*/
22+
public function postSoftDelete(PostSoftDeleteEventArgs $args): void
23+
{
24+
$object = $args->getObject();
25+
26+
if (!$object instanceof ResourceLink) {
27+
return;
28+
}
29+
30+
Event::addEvent(
31+
LOG_RESOURCE_LINK_SOFT_DELETE,
32+
LOG_RESOURCE_LINK,
33+
$object->getId(),
34+
);
35+
}
36+
}

src/CoreBundle/Resources/config/listeners.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,5 @@ services:
103103
- {name: doctrine.orm.entity_listener, entity_manager: default, lazy: true}
104104

105105
Chamilo\CoreBundle\EventListener\MessageStatusListener: ~
106+
107+
Chamilo\CoreBundle\EventListener\ResourceLinkListener: ~

0 commit comments

Comments
 (0)