You are here

class User in Freelinking 8.3

Same name and namespace in other branches
  1. 4.0.x src/Plugin/freelinking/User.php \Drupal\freelinking\Plugin\freelinking\User

Freelinking user plugin.

Plugin annotation


@Freelinking(
  id = "user",
  title = @Translation("User"),
  weight = 0,
  hidden = false,
  settings = {  }
)

Hierarchy

Expanded class hierarchy of User

2 files declare their use of User
UserTest.php in tests/src/Unit/Plugin/freelinking/UserTest.php
UserUnauthorizedTest.php in tests/src/Unit/Plugin/freelinking/UserUnauthorizedTest.php
2 string references to 'User'
UserTest::setUp in tests/src/Unit/Plugin/freelinking/UserTest.php
UserUnauthorizedTest::setUp in tests/src/Unit/Plugin/freelinking/UserUnauthorizedTest.php

File

src/Plugin/freelinking/User.php, line 23

Namespace

Drupal\freelinking\Plugin\freelinking
View source
class User extends FreelinkingPluginBase implements ContainerFactoryPluginInterface {

  /**
   * Entity Type Manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * Current user account interface.
   *
   * @var \Drupal\Core\Session\AccountProxyInterface
   */
  protected $currentUser;

  /**
   * Initialize method.
   *
   * @param array $configuration
   *   The configuration array.
   * @param string $plugin_id
   *   The plugin ID.
   * @param array $plugin_definition
   *   The plugin definition array.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
   *   The entity type manager.
   * @param \Drupal\Core\Session\AccountProxyInterface $currentUser
   *   The current user.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entityTypeManager, AccountProxyInterface $currentUser) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->entityTypeManager = $entityTypeManager;
    $this->currentUser = $currentUser;
  }

  /**
   * {@inheritdoc}
   */
  public function getIndicator() {
    return '/(u|user|username|uid|userid)$/A';
  }

  /**
   * {@inheritdoc}
   */
  public function getTip() {
    return $this
      ->t('Click to view user profile.');
  }

  /**
   * {@inheritdoc}
   */
  public function buildLink(array $target) {
    if ($this->currentUser
      ->hasPermission('access user profiles')) {
      $account = NULL;

      // Finds user account by user identifier (uid) or user name.
      if (is_numeric($target['dest'])) {
        $account = $this->entityTypeManager
          ->getStorage('user')
          ->load($target['dest']);
      }
      else {

        /** @var \Drupal\user\UserInterface[] $accounts */
        $accounts = $this->entityTypeManager
          ->getStorage('user')
          ->loadByProperties([
          'name' => $target['dest'],
        ]);
        if (count($accounts) === 1) {
          $account = array_shift($accounts);
        }
      }
      if (NULL !== $account) {
        $link = [
          '#type' => 'link',
          '#title' => isset($target['text']) ? $target['text'] : $account
            ->getDisplayName(),
          '#url' => Url::fromRoute('entity.user.canonical', [
            'user' => $account
              ->id(),
          ], [
            'language' => $target['language'],
          ]),
          '#attributes' => [
            'title' => isset($target['tooltip']) ? $target['tooltip'] : $this
              ->getTip(),
          ],
        ];
      }
      else {
        $link = [
          '#theme' => 'freelink_error',
          '#plugin' => 'user',
          '#message' => $this
            ->t('User %user not found', [
            '%user' => $target['dest'],
          ]),
        ];
      }
    }
    else {
      $link = [
        '#theme' => 'freelink_error',
        '#plugin' => 'user',
        '#message' => $this
          ->t('Unauthorized to view user profile.'),
      ];
    }
    return $link;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('entity_type.manager'), $container
      ->get('current_user'));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
FreelinkingPluginBase::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides DependentPluginInterface::calculateDependencies
FreelinkingPluginBase::defaultConfiguration public function Gets default configuration for this plugin. Overrides ConfigurableInterface::defaultConfiguration 6
FreelinkingPluginBase::getConfiguration public function Gets this plugin's configuration. Overrides ConfigurableInterface::getConfiguration 1
FreelinkingPluginBase::getFailoverPluginId public function Get the failover plugin ID (if applicable). Overrides FreelinkingPluginInterface::getFailoverPluginId 1
FreelinkingPluginBase::isHidden public function Determine if the plugin is built-in (always on). Overrides FreelinkingPluginInterface::isHidden
FreelinkingPluginBase::setConfiguration public function Sets the configuration for this plugin instance. Overrides ConfigurableInterface::setConfiguration
FreelinkingPluginBase::settingsForm public function Plugin configuration form. Overrides FreelinkingPluginInterface::settingsForm 6
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
User::$currentUser protected property Current user account interface.
User::$entityTypeManager protected property Entity Type Manager.
User::buildLink public function Build a link with the plugin. Overrides FreelinkingPluginInterface::buildLink
User::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
User::getIndicator public function A regular expression string to indicate what to replace for this plugin. Overrides FreelinkingPluginInterface::getIndicator
User::getTip public function Provides tips for this freelinking plugin. Overrides FreelinkingPluginInterface::getTip
User::__construct public function Initialize method. Overrides PluginBase::__construct