sites_simple_sitemap-1.0.0-alpha4/src/SitesSimpleSitemapService.php
src/SitesSimpleSitemapService.php
<?php
namespace Drupal\sites_simple_sitemap;
use Drupal\simple_sitemap\Settings;
use Drupal\sites\SitePluginManager;
/**
* The sites_simple_sitemap.service service.
*/
class SitesSimpleSitemapService implements SitesSimpleSitemapServiceInterface {
/**
* Default sitemap variant.
*/
protected string $defaultSitemapVariant;
/**
* SitesSimpleSitemapService constructor.
*
* @param \Drupal\simple_sitemap\Settings $settings
* The simple_sitemap.settings service.
* @param \Drupal\sites\SitePluginManager $siteManager
* The site manager.
*/
public function __construct(
protected readonly Settings $settings,
protected readonly SitePluginManager $siteManager,
) {
$this->defaultSitemapVariant = $this->getSetting('default_variant', 'default');
}
/**
* {@inheritdoc}
*/
public function generateSitesSitemaps(array $sitemaps): array {
$sites_sitemaps = [];
if (array_key_exists($this->defaultSitemapVariant, $sitemaps)) {
$default_sitemap = $sitemaps[$this->defaultSitemapVariant];
// Add site sitemaps to the list.
foreach ($this->siteManager->getDefinitions() as $site_id => $site_definition) {
$sites_sitemap = clone $default_sitemap;
$new_id = $this->defaultSitemapVariant . ':' . $site_id;
$sites_sitemap->set('id', $new_id);
$sites_sitemaps[$new_id] = $sites_sitemap;
}
}
return $sites_sitemaps;
}
/**
* {@inheritdoc}
*/
public function getSetting(string $name, $default = NULL) {
return $this->settings->get($name, $default);
}
}
