<?php
// src/AppBundle/EventListener/MenuBuilderListener.php
namespace Social\AdminBundle\EventListener;
use Social\UserBundle\Entity\User;
use Sonata\AdminBundle\Event\ConfigureMenuEvent;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
/**
* Class MenuBuilderListener
*
* @package Social\AdminBundle\EventListener
*/
class MenuBuilderListener
{
/**
* @var ContainerInterface
*/
private $container;
/**
* @var AuthorizationChecker
*/
private $authorizationChecker;
private $creditsMode;
/**
* MenuBuilderListener constructor.
*
* @param ContainerInterface $container
* @param AuthorizationChecker $authorizationChecker
*/
public function __construct(
ContainerInterface $container,
AuthorizationChecker $authorizationChecker,
$creditsMode = false
) {
$this->container = $container;
$this->authorizationChecker = $authorizationChecker;
$this->creditsMode = $creditsMode;
}
/**
* @param ConfigureMenuEvent $event
*
* @throws \Exception
*/
public function addMenuItems(ConfigureMenuEvent $event)
{
/** @var UserInterface $user */
$user = $this->container->get('security.token_storage')->getToken()->getUser();
/** @var AuthorizationCheckerInterface $securityContext */
$securityContext = $this->container->get('security.authorization_checker');
$menu = $event->getMenu();
if($securityContext->isGranted(User::ROLE_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUPER_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUBADMIN)) {
$menu->getChild('new.dashboard')
->addChild('Admin Dashboard', ['route' => 'social_admin_dashboard']);
$menu->getChild('normal.user.management')
->addChild('Uninvited members', ['route' => 'social_admin_uninvited_users']);
}
if ($securityContext->isGranted(User::ROLE_FSTAFF) ||
$securityContext->isGranted(User::ROLE_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUPER_ADMIN)
) {
$menu
->addChild('Staff Members', [])
->setExtra('icon', '<i class="fa fa-users"></i>')
->addChild(
'Alerts',
[
'route' => 'social_admin_alerts',
]
)
->getParent()
->addChild(
'Members - Registered',
[
'route' => 'social_admin_members_by_staff_registered',
]
)
->getParent()
->addChild(
'Members - Unregistered',
[
'route' => 'social_admin_members_by_staff_unregistered',
]
)
->getParent()
->getParent();
$menu
->getChild('normal.user.management')
->addChild(
'Boost Fake Profile',
[
'route' => 'social_admin_boost_fake_profiles_list',
]
)
->getParent();
}
if ($securityContext->isGranted(User::ROLE_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUPER_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUBADMIN)
) {
$menu
->getChild('normal.user.management')
->addChild(
'Member Images',
[
'route' => 'social_admin_member_images',
]
)
->getParent()
->getParent();
}
if ($securityContext->isGranted(User::ROLE_FSTAFF) ||
$securityContext->isGranted(User::ROLE_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUPER_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUBADMIN)
) {
$menu
->addChild('User Status', [])
->setExtra('icon', '<i class="fa fa-eye"></i>')
->addChild(
'Fake Users',
[
'route' => 'social_admin_fake_user_status_management',
]
)
->getParent()
->getParent();
}
if (
$securityContext->isGranted(User::ROLE_HSTAFF) ||
$securityContext->isGranted(User::ROLE_FSTAFF) ||
$securityContext->isGranted(User::ROLE_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUPER_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUBADMIN)
) {
$reportsMenu = $menu
->addChild('Reports', [])
->setExtra('icon', '<i class="fa fa-files-o"></i>');
if (
$securityContext->isGranted(User::ROLE_FSTAFF) ||
$securityContext->isGranted(User::ROLE_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUPER_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUBADMIN)
) {
$menu->getChild('new.dashboard')->setDisplay(true);
$menu
->getChild('new.dashboard')
->addChild('Admin Dashboard', ['route' => 'social_admin_dashboard']);
$reportsMenu->addChild(
'Farmer Daily Reports',
[
'route' => 'social_admin_farmer_reports',
]
)
->getParent();
}
if (
$securityContext->isGranted(User::ROLE_HSTAFF) ||
$securityContext->isGranted(User::ROLE_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUPER_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUBADMIN)
) {
$menu->getChild('new.dashboard')->setDisplay(true);
$menu
->getChild('new.dashboard')
->addChild('Hstaff Dashboard', ['route' => 'social_admin_hstaff_dashboard']);
$reportsMenu
->addChild(
'Hunter Top 10 Site Source',
[
'route' => 'social_admin_hunter_top10_site_source',
]
);
}
}
if ($this->container->getParameter('social_credits_mode_activated') == 1) {
if (
$securityContext->isGranted(User::ROLE_HSTAFF) ||
$securityContext->isGranted(User::ROLE_FSTAFF) ||
$securityContext->isGranted(User::ROLE_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUPER_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUBADMIN)
) {
$paymentMenu = $menu->getChild('payments');
if ($this->creditsMode) {
$paymentMenu
->addChild(
'Credits History',
[
'route' => 'social_admin_credits_history',
]
)
->setExtra('icon', '<i class="fa fa-money"></i>');
}
}
}
$trafficPool = $menu->getChild('traffic_pool');
$trafficPool
->addChild(
'Traffic pool users',
[
'route' => 'social_admin_traffic_pool_users_statistics',
'extras' => [
'icon' => '<i class="fa fa-users"></i>',
],
]
);
if ($securityContext->isGranted(User::ROLE_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUPER_ADMIN) ||
$securityContext->isGranted(User::ROLE_SUBADMIN)
) {
$menu
->addChild('Monitor', [])
->setExtra('icon', '<i class="fa fa-desktop"></i>')
->addChild(
'Relationships',
[
'route' => 'social_admin_monitor_relationship',
]
)
->getParent()
->addChild(
'Calls',
[
'route' => 'social_admin_stats_calls',
]
)
->getParent()
->addChild(
'Hunter Activity',
[
'route' => 'social_admin_monitor_hunter_activity',
]
)
->getParent()
->addChild(
'Farmer Activity',
[
'route' => 'social_admin_monitor_farmer_activity',
]
);
}
}
}