og_sm-8.x-1.0/og_sm_menu/src/SiteMenuManager.php

og_sm_menu/src/SiteMenuManager.php
<?php

namespace Drupal\og_sm_menu;

use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\node\NodeInterface;
use Drupal\og\OgGroupAudienceHelperInterface;
use Drupal\og_sm\SiteManagerInterface;

/**
 * A manager to keep track of which nodes are og_sm Site enabled.
 */
class SiteMenuManager implements SiteMenuManagerInterface {

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The site manager service.
   *
   * @var \Drupal\og_sm\SiteManagerInterface
   */
  protected $siteManager;

  /**
   * Constructs a SiteMenuManager object.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\og_sm\SiteManagerInterface $site_manager
   *   The site manager service.
   */
  public function __construct(EntityTypeManagerInterface $entity_type_manager, SiteManagerInterface $site_manager) {
    $this->entityTypeManager = $entity_type_manager;
    $this->siteManager = $site_manager;
  }

  /**
   * {@inheritdoc}
   */
  public function getCurrentMenu() {
    $site = $this->siteManager->currentSite();
    if (!$site) {
      return NULL;
    }

    return $this->getMenuBySite($site);
  }

  /**
   * {@inheritdoc}
   */
  public function getMenuBySite(NodeInterface $site) {
    /** @var \Drupal\og_menu\OgMenuInstanceInterface[] $instances */
    $instances = $this->ogMenuInstanceStorage()->loadByProperties([
      'type' => SiteMenuManagerInterface::SITE_MENU_NAME,
      OgGroupAudienceHelperInterface::DEFAULT_FIELD => $site->id(),
    ]);

    if ($instances) {
      return array_pop($instances);
    }
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function createMenu(NodeInterface $site) {
    if ($this->getMenuBySite($site)) {
      return NULL;
    }

    /** @var \Drupal\og_menu\OgMenuInstanceInterface $og_menu_instance */
    $og_menu_instance = $this->ogMenuInstanceStorage()->create([
      'type' => SiteMenuManagerInterface::SITE_MENU_NAME,
      OgGroupAudienceHelperInterface::DEFAULT_FIELD => $site->id(),
    ]);
    $og_menu_instance->save();

    return $og_menu_instance;
  }

  /**
   * {@inheritdoc}
   */
  public function getAllMenus() {
    /** @var \Drupal\og_menu\OgMenuInstanceInterface[] $menus */
    $menus = $this->ogMenuInstanceStorage()->loadByProperties([
      'type' => SiteMenuManagerInterface::SITE_MENU_NAME,
    ]);

    return $menus;
  }

  /**
   * Gets the og-menu instance storage object.
   *
   * @return \Drupal\Core\Entity\EntityStorageInterface
   *   The OG menu storage.
   */
  protected function ogMenuInstanceStorage() {
    return $this->entityTypeManager->getStorage('ogmenu_instance');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc