3 namespace Drupal\drupalmoduleupgrader\Routing\LinkBinding;
5 use Drupal\Component\Plugin\PluginManagerInterface;
6 use Drupal\drupalmoduleupgrader\Routing\Drupal7\RouteWrapper as Drupal7Route;
7 use Drupal\drupalmoduleupgrader\Routing\Drupal8\RouteWrapper as Drupal8Route;
10 * Factory class to create link bindings, depending on the source route's type.
12 class LinkBindingFactory {
15 * @var PluginManagerInterface
19 public function __construct(PluginManagerInterface $link_manager) {
20 $this->linkManager = $link_manager;
24 * Factory method. Returns a link binding object appropriate for the source link type.
26 * @param Drupal7Route $source
27 * The source (Drupal 7) route.
28 * @param Drupal8Route $destination
29 * The destination (Drupal 8) route.
32 * A link binding object; either an instance of this class or a subclass thereof.
34 public function create(Drupal7Route $source, Drupal8Route $destination) {
35 if ($source->isLink()) {
36 return new MenuLinkBinding($source, $destination);
38 elseif ($source->isLocalTask() || $source->isDefaultLocalTask()) {
39 return new LocalTaskLinkBinding($source, $destination, $this->linkManager);
41 elseif ($source->isLocalAction()) {
42 if ($source->isContextualLink()) {
43 return new LinkBinding($source, $destination);
46 return new LocalActionLinkBinding($source, $destination);