You are here

LinkBindingFactory.php in Drupal 7 to 8/9 Module Upgrader 8

File

src/Routing/LinkBinding/LinkBindingFactory.php
View source
<?php

namespace Drupal\drupalmoduleupgrader\Routing\LinkBinding;

use Drupal\Component\Plugin\PluginManagerInterface;
use Drupal\drupalmoduleupgrader\Routing\Drupal7\RouteWrapper as Drupal7Route;
use Drupal\drupalmoduleupgrader\Routing\Drupal8\RouteWrapper as Drupal8Route;

/**
 * Factory class to create link bindings, depending on the source route's type.
 */
class LinkBindingFactory {

  /**
   * @var \Drupal\Component\Plugin\PluginManagerInterface
   */
  private $linkManager;
  public function __construct(PluginManagerInterface $link_manager) {
    $this->linkManager = $link_manager;
  }

  /**
   * Factory method. Returns a link binding object appropriate for the source link type.
   *
   * @param \Drupal\drupalmoduleupgrader\Routing\Drupal7\RouteWrapper $source
   *   The source (Drupal 7) route.
   * @param \Drupal\drupalmoduleupgrader\Routing\Drupal8\RouteWrapper $destination
   *   The destination (Drupal 8) route.
   *
   * @return mixed
   *   A link binding object; either an instance of this class or a subclass thereof.
   */
  public function create(Drupal7Route $source, Drupal8Route $destination) {
    if ($source
      ->isLink()) {
      return new MenuLinkBinding($source, $destination);
    }
    elseif ($source
      ->isLocalTask() || $source
      ->isDefaultLocalTask()) {
      return new LocalTaskLinkBinding($source, $destination, $this->linkManager);
    }
    elseif ($source
      ->isLocalAction()) {
      if ($source
        ->isContextualLink()) {
        return new LinkBinding($source, $destination);
      }
      else {
        return new LocalActionLinkBinding($source, $destination);
      }
    }
  }

}

Classes

Namesort descending Description
LinkBindingFactory Factory class to create link bindings, depending on the source route's type.