Chris@0: tipsCollection = new TipsPluginCollection(\Drupal::service('plugin.manager.tour.tip'), $this->tips); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getRoutes() { Chris@0: return $this->routes; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getTip($id) { Chris@0: return $this->tipsCollection->get($id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getTips() { Chris@0: $tips = []; Chris@0: foreach ($this->tips as $id => $tip) { Chris@0: $tips[] = $this->getTip($id); Chris@0: } Chris@0: uasort($tips, function ($a, $b) { Chris@0: if ($a->getWeight() == $b->getWeight()) { Chris@0: return 0; Chris@0: } Chris@0: return ($a->getWeight() < $b->getWeight()) ? -1 : 1; Chris@0: }); Chris@0: Chris@0: \Drupal::moduleHandler()->alter('tour_tips', $tips, $this); Chris@0: return array_values($tips); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getModule() { Chris@0: return $this->module; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function hasMatchingRoute($route_name, $route_params) { Chris@0: if (!isset($this->keyedRoutes)) { Chris@0: $this->keyedRoutes = []; Chris@0: foreach ($this->getRoutes() as $route) { Chris@0: $this->keyedRoutes[$route['route_name']] = isset($route['route_params']) ? $route['route_params'] : []; Chris@0: } Chris@0: } Chris@0: if (!isset($this->keyedRoutes[$route_name])) { Chris@0: // We don't know about this route. Chris@0: return FALSE; Chris@0: } Chris@0: if (empty($this->keyedRoutes[$route_name])) { Chris@0: // We don't need to worry about route params, the route name is enough. Chris@0: return TRUE; Chris@0: } Chris@0: foreach ($this->keyedRoutes[$route_name] as $key => $value) { Chris@0: // If a required param is missing or doesn't match, return FALSE. Chris@0: if (empty($route_params[$key]) || $route_params[$key] !== $value) { Chris@0: return FALSE; Chris@0: } Chris@0: } Chris@0: return TRUE; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function resetKeyedRoutes() { Chris@0: unset($this->keyedRoutes); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function calculateDependencies() { Chris@0: parent::calculateDependencies(); Chris@0: Chris@0: foreach ($this->tipsCollection as $instance) { Chris@0: $definition = $instance->getPluginDefinition(); Chris@0: $this->addDependency('module', $definition['provider']); Chris@0: } Chris@0: Chris@0: $this->addDependency('module', $this->module); Chris@0: return $this; Chris@0: } Chris@0: Chris@0: }