Skip to content

Commit 7be1d75

Browse files
author
kitan1982
committed
Merge pull request #67 from kitan1982/rights-update
Add post rights to a forum for collaborator when the resource is created
2 parents 0b661c4 + 0a9831c commit 7be1d75

File tree

3 files changed

+39
-3
lines changed

3 files changed

+39
-3
lines changed

Listener/ForumListener.php

+6-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Claroline\CoreBundle\Event\CopyResourceEvent;
1818
use Claroline\CoreBundle\Event\OpenResourceEvent;
1919
use Claroline\CoreBundle\Event\DeleteUserEvent;
20+
use Claroline\CoreBundle\Event\ResourceCreatedEvent;
2021
use Claroline\CoreBundle\Event\ImportResourceTemplateEvent;
2122
use Claroline\CoreBundle\Event\ExportResourceTemplateEvent;
2223
use Claroline\ForumBundle\Entity\Forum;
@@ -113,5 +114,9 @@ public function onDeleteUser(DeleteUserEvent $event)
113114
}
114115
}
115116

116-
117+
public function onResourceCreated(ResourceCreatedEvent $event)
118+
{
119+
$node = $event->getResourceNode();
120+
$this->container->get('claroline.manager.forum_manager')->createDefaultPostRights($node);
121+
}
117122
}

Manager/Manager.php

+32-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@
1111

1212
namespace Claroline\ForumBundle\Manager;
1313

14+
use Claroline\CoreBundle\Entity\Resource\ResourceNode;
1415
use Claroline\CoreBundle\Entity\User;
1516
use Claroline\CoreBundle\Library\Resource\ResourceCollection;
1617
use Claroline\CoreBundle\Manager\MailManager;
18+
use Claroline\CoreBundle\Manager\MaskManager;
19+
use Claroline\CoreBundle\Manager\RightsManager;
1720
use Claroline\CoreBundle\Pager\PagerFactory;
1821
use Claroline\CoreBundle\Persistence\ObjectManager;
1922
use Claroline\ForumBundle\Entity\Category;
@@ -67,6 +70,8 @@ class Manager
6770
private $mailManager;
6871
private $container;
6972
private $sc;
73+
private $maskManager;
74+
private $rightsManager;
7075

7176
/**
7277
* Constructor.
@@ -80,7 +85,9 @@ class Manager
8085
* "router" = @DI\Inject("router"),
8186
* "mailManager" = @DI\Inject("claroline.manager.mail_manager"),
8287
* "container" = @DI\Inject("service_container"),
83-
* "sc" = @DI\Inject("security.context")
88+
* "sc" = @DI\Inject("security.context"),
89+
* "maskManager" = @DI\Inject("claroline.manager.mask_manager"),
90+
* "rightsManager" = @DI\Inject("claroline.manager.rights_manager")
8491
* })
8592
*/
8693
public function __construct(
@@ -92,7 +99,9 @@ public function __construct(
9299
RouterInterface $router,
93100
MailManager $mailManager,
94101
ContainerInterface $container,
95-
SecurityContextInterface $sc
102+
SecurityContextInterface $sc,
103+
MaskManager $maskManager,
104+
RightsManager $rightsManager
96105
)
97106
{
98107
$this->om = $om;
@@ -110,6 +119,8 @@ public function __construct(
110119
$this->mailManager = $mailManager;
111120
$this->container = $container;
112121
$this->sc = $sc;
122+
$this->maskManager = $maskManager;
123+
$this->rightsManager = $rightsManager;
113124
}
114125

115126
/**
@@ -627,4 +638,23 @@ private function removeNotification(Forum $forum, Notification $notification)
627638
$this->dispatch(new UnsubscribeForumEvent($forum));
628639
$this->om->endFlushSuite();
629640
}
641+
642+
public function createDefaultPostRights(ResourceNode $node)
643+
{
644+
$workspace = $node->getWorkspace();
645+
$resourceType = $node->getResourceType();
646+
$role = $this->roleRepo->findOneBaseWorkspaceRole('COLLABORATOR', $workspace);
647+
648+
if (!is_null($role)) {
649+
$postDecoder = $this->maskManager->getDecoder($resourceType, 'post');
650+
651+
if (!is_null($postDecoder)) {
652+
$rights = $this->rightsManager->getOneByRoleAndResource($role, $node);
653+
$value = $postDecoder->getValue();
654+
$mask = $rights->getMask();
655+
$permissions = $mask | $value;
656+
$this->rightsManager->editPerms($permissions, $role, $node);
657+
}
658+
}
659+
}
630660
}

Resources/config/services/listeners.yml

+1
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ services:
1313
- { name: kernel.event_listener, event: resource_claroline_forum_to_template, method: onExportTemplate }
1414
- { name: kernel.event_listener, event: resource_claroline_forum_from_template, method: onImportTemplate }
1515
- { name: kernel.event_listener, event: delete_user, method: onDeleteUser }
16+
- { name: kernel.event_listener, event: resource_created_claroline_forum, method: onResourceCreated }

0 commit comments

Comments
 (0)