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);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc