routeMatch = $route_match; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('current_route_match') ); } /** * {@inheritdoc} */ protected function defineOptions() { $options = parent::defineOptions(); $options['user'] = ['default' => '']; return $options; } /** * {@inheritdoc} */ public function buildOptionsForm(&$form, FormStateInterface $form_state) { $form['user'] = [ '#type' => 'checkbox', '#title' => $this->t('Also look for a node and use the node author'), '#default_value' => $this->options['user'], ]; } /** * {@inheritdoc} */ public function getArgument() { // If there is a user object in the current route. if ($user = $this->routeMatch->getParameter('user')) { if ($user instanceof UserInterface) { return $user->id(); } } // If option to use node author; and node in current route. if (!empty($this->options['user']) && $node = $this->routeMatch->getParameter('node')) { if ($node instanceof NodeInterface) { return $node->getOwnerId(); } } } /** * {@inheritdoc} */ public function getCacheMaxAge() { return Cache::PERMANENT; } /** * {@inheritdoc} */ public function getCacheContexts() { return ['url']; } }