public function SimplesitemapManager::removeSitemapVariants in Simple XML sitemap 8.3
Parameters
null|array|string $variant_names: Limit removal by specific variants.
Return value
$this
Throws
\Drupal\Component\Plugin\Exception\PluginException
1 call to SimplesitemapManager::removeSitemapVariants()
File
- src/
SimplesitemapManager.php, line 249
Class
- SimplesitemapManager
- Class SimplesitemapManager @package Drupal\simple_sitemap
Namespace
Drupal\simple_sitemapCode
public function removeSitemapVariants($variant_names = NULL) {
if (NULL === $variant_names || !empty((array) $variant_names)) {
// Remove sitemap instances.
$this
->removeSitemap($variant_names);
if (NULL === $variant_names) {
// Remove all variants and their bundle settings.
foreach ([
'variants',
'bundle_settings',
'custom_links',
] as $config_name_part) {
foreach ($this->configFactory
->listAll("simple_sitemap.{$config_name_part}.") as $config_name) {
$this->configFactory
->getEditable($config_name)
->delete();
}
}
}
else {
// Remove bundle settings for specific variants.
foreach ((array) $variant_names as $variant_name) {
foreach ($this->configFactory
->listAll("simple_sitemap.bundle_settings.{$variant_name}.") as $config_name) {
$this->configFactory
->getEditable($config_name)
->delete();
}
}
// Remove custom links for specific variants.
foreach ((array) $variant_names as $variant_name) {
foreach ($this->configFactory
->listAll("simple_sitemap.custom_links.{$variant_name}") as $config_name) {
$this->configFactory
->getEditable($config_name)
->delete();
}
}
// Remove specific variants from configuration.
$remove_variants = [];
$variants = $this
->getSitemapVariants();
foreach ((array) $variant_names as $variant_name) {
if (isset($variants[$variant_name])) {
$remove_variants[$variants[$variant_name]['type']][$variant_name] = $variant_name;
}
}
foreach ($remove_variants as $type => $variants_per_type) {
$this->configFactory
->getEditable("simple_sitemap.variants.{$type}")
->set('variants', array_diff_key($this
->getSitemapVariants($type, FALSE), $variants_per_type))
->save();
}
}
// Remove bundle setting overrides for entities.
$query = $this->db
->delete('simple_sitemap_entity_overrides');
if (NULL !== $variant_names) {
$query
->condition('type', (array) $variant_names, 'IN');
}
$query
->execute();
// Remove default variant setting.
if (NULL === $variant_names || in_array($this->settings
->getSetting('default_variant', ''), (array) $variant_names)) {
$this->settings
->saveSetting('default_variant', '');
}
}
return $this;
}