final class TestLinkProvider in JSON:API Hypermedia 8
Class TestLinkProvider.
@JsonapiHypermediaLinkProvider( id = "test_link_provider", deriver = "\Drupal\jsonapi_hypermedia_test_link_providers\Plugin\Derivative\TestLinkProviderDeriver", )
@internal
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\jsonapi_hypermedia\Plugin\LinkProviderBase implements LinkProviderInterface
- class \Drupal\jsonapi_hypermedia_test_link_providers\Plugin\jsonapi_hypermedia\LinkProvider\TestLinkProvider implements ContainerFactoryPluginInterface
- class \Drupal\jsonapi_hypermedia\Plugin\LinkProviderBase implements LinkProviderInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of TestLinkProvider
File
- tests/
modules/ jsonapi_hypermedia_test_link_providers/ src/ Plugin/ jsonapi_hypermedia/ LinkProvider/ TestLinkProvider.php, line 25
Namespace
Drupal\jsonapi_hypermedia_test_link_providers\Plugin\jsonapi_hypermedia\LinkProviderView source
final class TestLinkProvider extends LinkProviderBase implements ContainerFactoryPluginInterface {
/**
* The current user account.
*
* @var \Drupal\Core\Session\AccountInterface
*/
protected $account;
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
$provider = new static($configuration, $plugin_id, $plugin_definition);
$provider
->setCurrentAccount($container
->get('current_user'));
return $provider;
}
/**
* Sets the current account.
*
* @param \Drupal\Core\Session\AccountInterface $account
* The current user account.
*/
protected function setCurrentAccount(AccountInterface $account) {
$this->account = $account;
}
/**
* {@inheritdoc}
*/
public function getLink($context) {
$plugin_definition = $this
->getPluginDefinition();
$link_key = $this
->getLinkKey();
$url = Url::fromUri("https://drupal.org/project/jsonapi_hypermedia/{$link_key}");
$random = (new Random())
->name();
$attributes = array_merge($plugin_definition['_test_target_attributes'] ?? [], [
'randomAttr' => $random,
]);
$access_restricted = !empty($plugin_definition['_test_restrict_access']);
$cacheability = new CacheableMetadata();
$cacheability
->addCacheTags([
'test_jsonapi_hypermedia_cache_tag',
]);
$permission = "view {$this->getLinkKey()} link";
$access_result = $access_restricted ? AccessResult::allowedIfHasPermission($this->account, $permission) : AccessResult::allowed();
return AccessRestrictedLink::createLink($access_result, $cacheability, $url, $this
->getLinkRelationType(), $attributes);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
LinkProviderBase:: |
public | function |
Gets the link object key for the provided link. Overrides LinkProviderInterface:: |
|
LinkProviderBase:: |
public | function |
Gets the link relation type for the provided link. Overrides LinkProviderInterface:: |
1 |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginBase:: |
public | function | Constructs a \Drupal\Component\Plugin\PluginBase object. | 92 |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
TestLinkProvider:: |
protected | property | The current user account. | |
TestLinkProvider:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
TestLinkProvider:: |
public | function |
Adds, alters or removes hyperlinks from a link collection. Overrides LinkProviderInterface:: |
|
TestLinkProvider:: |
protected | function | Sets the current account. |