Version 1
[yaffs-website] / web / core / modules / forum / src / Breadcrumb / ForumBreadcrumbBuilderBase.php
diff --git a/web/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php b/web/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php
new file mode 100644 (file)
index 0000000..63d2d86
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+
+namespace Drupal\forum\Breadcrumb;
+
+use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
+use Drupal\Core\Breadcrumb\Breadcrumb;
+use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Link;
+use Drupal\Core\Routing\RouteMatchInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+use Drupal\Core\StringTranslation\TranslationInterface;
+use Drupal\forum\ForumManagerInterface;
+
+/**
+ * Provides a forum breadcrumb base class.
+ *
+ * This just holds the dependency-injected config, entity manager, and forum
+ * manager objects.
+ */
+abstract class ForumBreadcrumbBuilderBase implements BreadcrumbBuilderInterface {
+  use StringTranslationTrait;
+
+  /**
+   * Configuration object for this builder.
+   *
+   * @var \Drupal\Core\Config\Config
+   */
+  protected $config;
+
+  /**
+   * The entity manager.
+   *
+   * @var \Drupal\Core\Entity\EntityManagerInterface
+   */
+  protected $entityManager;
+
+  /**
+   * The forum manager service.
+   *
+   * @var \Drupal\forum\ForumManagerInterface
+   */
+  protected $forumManager;
+
+  /**
+   * Constructs a forum breadcrumb builder object.
+   *
+   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
+   *   The entity manager.
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
+   *   The configuration factory.
+   * @param \Drupal\forum\ForumManagerInterface $forum_manager
+   *   The forum manager service.
+   * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
+   *   The string translation service.
+   */
+  public function __construct(EntityManagerInterface $entity_manager, ConfigFactoryInterface $config_factory, ForumManagerInterface $forum_manager, TranslationInterface $string_translation) {
+    $this->entityManager = $entity_manager;
+    $this->config = $config_factory->get('forum.settings');
+    $this->forumManager = $forum_manager;
+    $this->setStringTranslation($string_translation);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function build(RouteMatchInterface $route_match) {
+    $breadcrumb = new Breadcrumb();
+    $breadcrumb->addCacheContexts(['route']);
+
+    $links[] = Link::createFromRoute($this->t('Home'), '<front>');
+
+    $vocabulary = $this->entityManager
+      ->getStorage('taxonomy_vocabulary')
+      ->load($this->config->get('vocabulary'));
+    $breadcrumb->addCacheableDependency($vocabulary);
+    $links[] = Link::createFromRoute($vocabulary->label(), 'forum.index');
+
+    return $breadcrumb->setLinks($links);
+  }
+
+}