File: /home/timetracker.panomity.com/tm.old/EventSubscriber/DashboardSubscriber.php
<?php
/*
* This file is part of the TaskManagementBundle for Kimai 2.
* All rights reserved by Kevin Papst (www.kevinpapst.de).
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace KimaiPlugin\TaskManagementBundle\EventSubscriber;
use App\Event\DashboardEvent;
use App\Widget\Type\CompoundRow;
use KimaiPlugin\TaskManagementBundle\Repository\TaskRepository;
use KimaiPlugin\TaskManagementBundle\Widget\PendingTasksWidget;
use KimaiPlugin\TaskManagementBundle\Widget\UserTasksWidget;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
final class DashboardSubscriber implements EventSubscriberInterface
{
/**
* @var AuthorizationCheckerInterface
*/
private $security;
/**
* @var TaskRepository
*/
private $taskRepository;
public function __construct(AuthorizationCheckerInterface $security, TaskRepository $taskRepository)
{
$this->security = $security;
$this->taskRepository = $taskRepository;
}
public static function getSubscribedEvents(): array
{
return [
DashboardEvent::class => ['onDashboardEvent', 100],
];
}
public function onDashboardEvent(DashboardEvent $event): void
{
if (!$this->security->isGranted('task_start') && !$this->security->isGranted('task_start_all')) {
return;
}
$widget = new UserTasksWidget($this->taskRepository);
$widget->setOption('user', $event->getUser());
$section = new CompoundRow();
$section->setOrder(12);
$section->addWidget($widget);
if ($this->security->isGranted('task_assign')) {
$widget = new PendingTasksWidget($this->taskRepository);
$widget->setOption('user', $event->getUser());
$section->addWidget($widget);
}
$event->addSection($section);
}
}