og_sm-8.x-1.0/og_sm_menu/src/Controller/SiteMenuController.php
og_sm_menu/src/Controller/SiteMenuController.php
<?php
namespace Drupal\og_sm_menu\Controller;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\DependencyInjection\ClassResolverInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\og_menu\Controller\OgMenuInstanceController;
use Drupal\og_sm_menu\SiteMenuManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* The site menu controller class.
*/
class SiteMenuController extends ControllerBase {
/**
* The OG membership manager service.
*
* @var \Drupal\og\MembershipManagerInterface
*/
protected $membershipManager;
/**
* The og menu instance controller.
*
* @var \Drupal\og_menu\Controller\OgMenuInstanceController
*/
protected $ogMenuController;
/**
* The site manager service.
*
* @var \Drupal\og_sm\SiteManagerInterface
*/
protected $siteManager;
/**
* The site menu manager service.
*
* @var \Drupal\og_sm_menu\SiteMenuManagerInterface
*/
protected $siteMenuManager;
/**
* Constructs an SiteMenuController object.
*
* @param \Drupal\Core\DependencyInjection\ClassResolverInterface $class_resolver
* The class resolver service.
* @param \Drupal\og_sm_menu\SiteMenuManagerInterface $site_menu_manager
* The site menu manager service.
*/
public function __construct(ClassResolverInterface $class_resolver, SiteMenuManagerInterface $site_menu_manager) {
$this->ogMenuController = $class_resolver->getInstanceFromDefinition(OgMenuInstanceController::class);
$this->siteMenuManager = $site_menu_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('class_resolver'),
$container->get('og_sm.site_menu_manager')
);
}
/**
* Provides the menu link creation form.
*
* @return array
* Returns the menu link creation form.
*/
public function addLink() {
return $this->ogMenuController->addLink($this->siteMenuManager->getCurrentMenu());
}
/**
* Access callback for the "add link" route.
*
* @param \Drupal\Core\Session\AccountInterface $account
* The user for which to determine access.
*
* @return \Drupal\Core\Access\AccessResult
* The access result.
*/
public function addLinkAccess(AccountInterface $account) {
$site_menu = $this->siteMenuManager->getCurrentMenu();
if ($site_menu) {
return $this->ogMenuController->addLinkAccess($site_menu, $account);
}
return AccessResult::neutral();
}
}
