delivery-8.x-1.x-dev/src/FilteredLanguageManager.php

src/FilteredLanguageManager.php
<?php

namespace Drupal\delivery;

use Drupal;
use Drupal\Core\Language\LanguageInterface;
use Drupal\language\ConfigurableLanguageManager;
use Drupal\workspaces\WorkspaceManagerInterface;

class FilteredLanguageManager extends ConfigurableLanguageManager {

  /**
   * @var \Drupal\workspaces\WorkspaceManagerInterface
   */
  protected $workspaceManager;

  /**
   * @return WorkspaceManagerInterface
   */
  protected function getWorkspaceManager() {
    return Drupal::service('workspaces.manager');
  }

  public function getLanguages($flags = LanguageInterface::STATE_CONFIGURABLE) {
    $workspace = $this->getWorkspaceManager()->getActiveWorkspace();

    if (!empty($workspace->primary_language) && $workspace->primary_language->count() === 0) {
      return parent::getLanguages($flags);
    }

    $languages = [];
    if (!empty($workspace->primary_language)) {
      $languages = [$workspace->primary_language->value];
    }
    if (!empty($workspace->secondary_languages)) {
      foreach ($workspace->secondary_languages as $item) {
        $languages[] = $item->value;
      }
    }

    $l = parent::getLanguages($flags);
    $result = array_filter($l, function (LanguageInterface $lang) use ($languages) {
      return in_array($lang->getId(), $languages);
    });
    return $result;
  }

}

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

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