ArbitraryUrlGenerator.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGenerator;
  3. use Drupal\simple_sitemap\Logger;
  4. use Drupal\simple_sitemap\Simplesitemap;
  5. use Drupal\Core\Extension\ModuleHandler;
  6. use Symfony\Component\DependencyInjection\ContainerInterface;
  7. /**
  8. * Class ArbitraryUrlGenerator
  9. * @package Drupal\simple_sitemap\Plugin\simple_sitemap\UrlGenerator
  10. *
  11. * @UrlGenerator(
  12. * id = "arbitrary",
  13. * label = @Translation("Arbitrary URL generator"),
  14. * description = @Translation("Generates URLs from data sets collected in the hook_arbitrary_links_alter hook."),
  15. * )
  16. */
  17. class ArbitraryUrlGenerator extends UrlGeneratorBase {
  18. protected $moduleHandler;
  19. /**
  20. * ArbitraryUrlGenerator constructor.
  21. * @param array $configuration
  22. * @param $plugin_id
  23. * @param $plugin_definition
  24. * @param \Drupal\simple_sitemap\Simplesitemap $generator
  25. * @param \Drupal\simple_sitemap\Logger $logger
  26. * @param \Drupal\Core\Extension\ModuleHandler $module_handler
  27. */
  28. public function __construct(
  29. array $configuration,
  30. $plugin_id,
  31. $plugin_definition,
  32. Simplesitemap $generator,
  33. Logger $logger,
  34. ModuleHandler $module_handler
  35. ) {
  36. parent::__construct(
  37. $configuration,
  38. $plugin_id,
  39. $plugin_definition,
  40. $generator,
  41. $logger
  42. );
  43. $this->moduleHandler = $module_handler;
  44. }
  45. public static function create(
  46. ContainerInterface $container,
  47. array $configuration,
  48. $plugin_id,
  49. $plugin_definition) {
  50. return new static(
  51. $configuration,
  52. $plugin_id,
  53. $plugin_definition,
  54. $container->get('simple_sitemap.generator'),
  55. $container->get('simple_sitemap.logger'),
  56. $container->get('module_handler')
  57. );
  58. }
  59. /**
  60. * @inheritdoc
  61. */
  62. public function getDataSets() {
  63. $arbitrary_links = [];
  64. $sitemap_variant = $this->sitemapVariant;
  65. $this->moduleHandler->alter('simple_sitemap_arbitrary_links', $arbitrary_links, $sitemap_variant);
  66. return array_values($arbitrary_links);
  67. }
  68. /**
  69. * @inheritdoc
  70. */
  71. protected function processDataSet($data_set) {
  72. return $data_set;
  73. }
  74. }