abstract class EntityUrlGeneratorBase in Simple XML sitemap 8.3
Same name and namespace in other branches
- 4.x src/Plugin/simple_sitemap/UrlGenerator/EntityUrlGeneratorBase.php \Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGenerator\EntityUrlGeneratorBase
Class EntityUrlGeneratorBase @package Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGenerator
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\simple_sitemap\Plugin\simple_sitemap\SimplesitemapPluginBase implements PluginInspectionInterface, ContainerFactoryPluginInterface
- class \Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGenerator\UrlGeneratorBase implements UrlGeneratorInterface
- class \Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGenerator\EntityUrlGeneratorBase
- class \Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGenerator\UrlGeneratorBase implements UrlGeneratorInterface
- class \Drupal\simple_sitemap\Plugin\simple_sitemap\SimplesitemapPluginBase implements PluginInspectionInterface, ContainerFactoryPluginInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of EntityUrlGeneratorBase
1 file declares its use of EntityUrlGeneratorBase
- ViewsUrlGenerator.php in modules/
simple_sitemap_views/ src/ Plugin/ simple_sitemap/ UrlGenerator/ ViewsUrlGenerator.php
File
- src/
Plugin/ simple_sitemap/ UrlGenerator/ EntityUrlGeneratorBase.php, line 22
Namespace
Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGeneratorView source
abstract class EntityUrlGeneratorBase extends UrlGeneratorBase {
/**
* @var \Drupal\Core\Language\LanguageInterface[]
*/
protected $languages;
/**
* @var string
*/
protected $defaultLanguageId;
/**
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* @var \Drupal\Core\Entity\EntityInterface|null
*/
protected $anonUser;
/**
* @var \Drupal\simple_sitemap\EntityHelper
*/
protected $entityHelper;
/**
* @var bool
*/
protected $isMultilingualSitemap;
/**
* UrlGeneratorBase constructor.
* @param array $configuration
* @param $plugin_id
* @param $plugin_definition
* @param \Drupal\simple_sitemap\Simplesitemap $generator
* @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* @param \Drupal\simple_sitemap\Logger $logger
* @param \Drupal\simple_sitemap\EntityHelper $entityHelper
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, Simplesitemap $generator, Logger $logger, LanguageManagerInterface $language_manager, EntityTypeManagerInterface $entity_type_manager, EntityHelper $entityHelper) {
parent::__construct($configuration, $plugin_id, $plugin_definition, $generator, $logger);
$this->languages = $language_manager
->getLanguages();
$this->defaultLanguageId = $language_manager
->getDefaultLanguage()
->getId();
$this->entityTypeManager = $entity_type_manager;
$this->anonUser = new AnonymousUserSession();
$this->entityHelper = $entityHelper;
$this->isMultilingualSitemap = SitemapGeneratorBase::isMultilingualSitemap();
}
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('simple_sitemap.generator'), $container
->get('simple_sitemap.logger'), $container
->get('language_manager'), $container
->get('entity_type.manager'), $container
->get('simple_sitemap.entity_helper'));
}
/**
* @param array $path_data
* @param \Drupal\Core\Url $url_object
* @return array
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
protected function getUrlVariants(array $path_data, Url $url_object) {
$url_variants = [];
if (!$this->isMultilingualSitemap || !$url_object
->isRouted()) {
// Not a routed URL or URL language negotiation disabled: Including only default variant.
$alternate_urls = $this
->getAlternateUrlsForDefaultLanguage($url_object);
}
elseif ($this->settings['skip_untranslated'] && ($entity = $this->entityHelper
->getEntityFromUrlObject($url_object)) instanceof ContentEntityInterface) {
/** @var ContentEntityInterface $entity */
$translation_languages = $entity
->getTranslationLanguages();
if (isset($translation_languages[Language::LANGCODE_NOT_SPECIFIED]) || isset($translation_languages[Language::LANGCODE_NOT_APPLICABLE])) {
// Content entity's language is unknown: Including only default variant.
$alternate_urls = $this
->getAlternateUrlsForDefaultLanguage($url_object);
}
else {
// Including only translated variants of content entity.
$alternate_urls = $this
->getAlternateUrlsForTranslatedLanguages($entity, $url_object);
}
}
else {
// Not a content entity or including all untranslated variants.
$alternate_urls = $this
->getAlternateUrlsForAllLanguages($url_object);
}
foreach ($alternate_urls as $langcode => $url) {
$url_variants[] = $path_data + [
'langcode' => $langcode,
'url' => $url,
'alternate_urls' => $alternate_urls,
];
}
return $url_variants;
}
/**
* @param \Drupal\Core\Url $url_object
* @return array
*/
protected function getAlternateUrlsForDefaultLanguage(Url $url_object) {
$alternate_urls = [];
if ($url_object
->access($this->anonUser)) {
$alternate_urls[$this->defaultLanguageId] = $this
->replaceBaseUrlWithCustom($url_object
->setAbsolute()
->setOption('language', $this->languages[$this->defaultLanguageId])
->toString());
}
return $alternate_urls;
}
/**
* @param \Drupal\Core\Entity\ContentEntityInterface $entity
* @param \Drupal\Core\Url $url_object
* @return array
*/
protected function getAlternateUrlsForTranslatedLanguages(ContentEntityInterface $entity, Url $url_object) {
$alternate_urls = [];
/** @var Language $language */
foreach ($entity
->getTranslationLanguages() as $language) {
if (!isset($this->settings['excluded_languages'][$language
->getId()]) || $language
->isDefault()) {
if ($entity
->getTranslation($language
->getId())
->access('view', $this->anonUser)) {
$alternate_urls[$language
->getId()] = $this
->replaceBaseUrlWithCustom($url_object
->setAbsolute()
->setOption('language', $language)
->toString());
}
}
}
return $alternate_urls;
}
/**
* @param \Drupal\Core\Url $url_object
* @return array
*/
protected function getAlternateUrlsForAllLanguages(Url $url_object) {
$alternate_urls = [];
if ($url_object
->access($this->anonUser)) {
foreach ($this->languages as $language) {
if (!isset($this->settings['excluded_languages'][$language
->getId()]) || $language
->isDefault()) {
$alternate_urls[$language
->getId()] = $this
->replaceBaseUrlWithCustom($url_object
->setAbsolute()
->setOption('language', $language)
->toString());
}
}
}
return $alternate_urls;
}
/**
* @param mixed $data_set
* @return array
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
public function generate($data_set) {
$path_data = $this
->processDataSet($data_set);
if (isset($path_data['url']) && $path_data['url'] instanceof Url) {
$url_object = $path_data['url'];
unset($path_data['url']);
return $this
->getUrlVariants($path_data, $url_object);
}
return FALSE !== $path_data ? [
$path_data,
] : [];
}
/**
* @param \Drupal\Core\Entity\ContentEntityInterface $entity
*
* @return array
*/
protected function getEntityImageData(ContentEntityInterface $entity) {
$image_data = [];
foreach ($entity
->getFieldDefinitions() as $field) {
if ($field
->getType() === 'image') {
foreach ($entity
->get($field
->getName())
->getValue() as $value) {
if (!empty($file = File::load($value['target_id']))) {
$image_data[] = [
'path' => $this
->replaceBaseUrlWithCustom(file_create_url($file
->getFileUri())),
'alt' => $value['alt'],
'title' => $value['title'],
];
}
}
}
}
return $image_data;
}
}
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 | |
EntityUrlGeneratorBase:: |
protected | property | ||
EntityUrlGeneratorBase:: |
protected | property | ||
EntityUrlGeneratorBase:: |
protected | property | ||
EntityUrlGeneratorBase:: |
protected | property | ||
EntityUrlGeneratorBase:: |
protected | property | ||
EntityUrlGeneratorBase:: |
protected | property | ||
EntityUrlGeneratorBase:: |
public static | function |
Creates an instance of the plugin. Overrides UrlGeneratorBase:: |
4 |
EntityUrlGeneratorBase:: |
public | function |
Overrides UrlGeneratorBase:: |
1 |
EntityUrlGeneratorBase:: |
protected | function | ||
EntityUrlGeneratorBase:: |
protected | function | ||
EntityUrlGeneratorBase:: |
protected | function | ||
EntityUrlGeneratorBase:: |
protected | function | ||
EntityUrlGeneratorBase:: |
protected | function | ||
EntityUrlGeneratorBase:: |
public | function |
UrlGeneratorBase constructor. Overrides UrlGeneratorBase:: |
4 |
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. | |
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. | |
UrlGeneratorBase:: |
protected | property | ||
UrlGeneratorBase:: |
protected | property | ||
UrlGeneratorBase:: |
protected | property | ||
UrlGeneratorBase:: |
protected | property | ||
UrlGeneratorBase:: |
abstract public | function |
Overrides UrlGeneratorInterface:: |
5 |
UrlGeneratorBase:: |
abstract protected | function | 5 | |
UrlGeneratorBase:: |
protected | function | ||
UrlGeneratorBase:: |
public | function |
Overrides UrlGeneratorInterface:: |
|
UrlGeneratorBase:: |
public | function |
Overrides UrlGeneratorInterface:: |