forked from a64f7bb4-7358-4778-9fbe-3b882c34cc1d/v1
243 lines
6.9 KiB
PHP
243 lines
6.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Installation functions for Sitemap module.
|
|
*/
|
|
|
|
use Drupal\sitemap\Plugin\Sitemap\Vocabulary;
|
|
|
|
/**
|
|
* Change sitemap configuration page permission to administer sitemap.
|
|
*/
|
|
function sitemap_update_8101() {
|
|
$roles = user_roles(FALSE, 'administer site configuration');
|
|
if (!empty($roles)) {
|
|
foreach ($roles as $rid => $role) {
|
|
user_role_grant_permissions($rid, ['administer sitemap']);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Update the CSS configuration setting to reflect the change in option wording.
|
|
*/
|
|
function sitemap_update_8102(&$sandbox) {
|
|
$config_factory = \Drupal::configFactory();
|
|
$config = $config_factory->getEditable('sitemap.settings');
|
|
if ($config->get('css')) {
|
|
$css = ($config->get('css') == TRUE) ? FALSE : TRUE;
|
|
$config->set('css', $css);
|
|
}
|
|
$config->save();
|
|
}
|
|
|
|
/**
|
|
* Update configuration for 2.x.
|
|
*/
|
|
function sitemap_update_8200(&$sandbox) {
|
|
$config_factory = \Drupal::configFactory();
|
|
$config = $config_factory->getEditable('sitemap.settings');
|
|
|
|
// Update the config key for the CSS option.
|
|
$config->set('include_css', $config->get('css'));
|
|
$config->clear('css');
|
|
|
|
// Remove the config for the RSS position option.
|
|
$show_rss = (boolean) $config->get('show_rss_links');
|
|
$config->clear('show_rss_links');
|
|
|
|
$plugins = [];
|
|
$show_titles = $config->get('show_titles');
|
|
$order = $config->get('order');
|
|
$config->clear('show_titles');
|
|
$config->clear('order');
|
|
|
|
// Update to the frontpage plugin.
|
|
$plugins['frontpage'] = [
|
|
'enabled' => (bool) $config->get('show_front'),
|
|
'weight' => $order['front'] ?? 0,
|
|
'settings' => [
|
|
'title' => $show_titles ? 'Front page' : '',
|
|
'rss' => $config->get('rss_front') && $show_rss ? '/' . $config->get('rss_front') : '',
|
|
],
|
|
];
|
|
$config->clear('show_front');
|
|
$config->clear('rss_front');
|
|
|
|
// Update to the book plugin.
|
|
if ($books = $config->get('show_books')) {
|
|
foreach ($books as $bid => $enabled) {
|
|
$plugins['book:' . $bid] = [
|
|
'enabled' => (bool) $enabled,
|
|
'weight' => $order['books_' . $bid] ?? 0,
|
|
'settings' => [
|
|
'title' => sitemap_book_title_update($bid, $show_titles),
|
|
'show_expanded' => $config->get('books_expanded'),
|
|
],
|
|
];
|
|
}
|
|
}
|
|
$config->clear('show_books');
|
|
$config->clear('books_expanded');
|
|
|
|
// Update to the menu plugin.
|
|
if ($menus = $config->get('show_menus')) {
|
|
foreach ($menus as $menu_id => $enabled) {
|
|
$plugins['menu:' . $menu_id] = [
|
|
'enabled' => (bool) $enabled,
|
|
'weight' => $order['menus_' . $menu_id] ?? 0,
|
|
'settings' => [
|
|
'title' => sitemap_menu_title_update($menu_id, $show_titles),
|
|
'show_disabled' => $config->get('show_menus_hidden'),
|
|
],
|
|
];
|
|
}
|
|
}
|
|
$config->clear('show_menus');
|
|
$config->clear('show_menus_hidden');
|
|
|
|
// Update to the vocabulary plugin.
|
|
if ($vocabs = $config->get('show_vocabularies')) {
|
|
if (\Drupal::service('module_handler')->moduleExists('forum')) {
|
|
$forumVid = \Drupal::config('forum.settings')->get('vocabulary');
|
|
}
|
|
foreach ($vocabs as $vid => $enabled) {
|
|
$plugins['vocabulary:' . $vid] = [
|
|
'enabled' => (bool) $enabled,
|
|
'weight' => $order['vocabularies_' . $vid] ?? 0,
|
|
'settings' => [
|
|
'title' => $show_titles ? sitemap_vocab_title_update($vid) : '',
|
|
'show_description' => $config->get('show_description'),
|
|
'show_count' => $config->get('show_count'),
|
|
'term_depth' => sitemap_vocab_depth_update($config->get('vocabulary_depth')),
|
|
'term_count_threshold' => isset($formVid) && $forumVid == $vid ? sitemap_vocab_threshold_update($config->get('forum_threshold')) : sitemap_vocab_threshold_update($config->get('term_threshold')),
|
|
'customize_link' => $config->get('vocabulary_show_links'),
|
|
'term_link' => Vocabulary::DEFAULT_TERM_LINK,
|
|
'always_link' => $config->get('vocabulary_show_links'),
|
|
'enable_rss' => (bool) sitemap_vocab_depth_update($config->get('rss_taxonomy')),
|
|
'rss_link' => Vocabulary::DEFAULT_TERM_RSS_LINK,
|
|
'rss_depth' => sitemap_vocab_depth_update($config->get('rss_taxonomy')),
|
|
],
|
|
];
|
|
}
|
|
}
|
|
$config->clear('show_vocabularies');
|
|
$config->clear('show_description');
|
|
$config->clear('show_count');
|
|
$config->clear('vocabulary_depth');
|
|
$config->clear('vocabulary_show_links');
|
|
$config->clear('term_threshold');
|
|
$config->clear('forum_threshold');
|
|
$config->clear('rss_taxonomy');
|
|
|
|
$config->set('plugins', $plugins);
|
|
|
|
$config->save(TRUE);
|
|
}
|
|
|
|
/**
|
|
* Helper function to get a book title for the 2.x settings update.
|
|
*
|
|
* @param int $bid
|
|
* The book id.
|
|
* @param bool $show_title
|
|
* Determines if the title is shown.
|
|
*
|
|
* @return string
|
|
* Returns the book label.
|
|
*/
|
|
function sitemap_book_title_update($bid, $show_title) {
|
|
if (!$show_title) {
|
|
return '';
|
|
}
|
|
else {
|
|
$book = \Drupal::service('entity_type.manager')->getStorage('node')->load($bid);
|
|
if ($book) {
|
|
return $book->label();
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Helper function to get a menu title from 1.x menu settings.
|
|
*
|
|
* @param string $menu_id
|
|
* The menu's id.
|
|
* @param bool $show_title
|
|
* Determines if the title is shown.
|
|
*
|
|
* @return string
|
|
* Returns the title.
|
|
*/
|
|
function sitemap_menu_title_update($menu_id, $show_title) {
|
|
$config_factory = \Drupal::configFactory();
|
|
$config = $config_factory->getEditable('system.menu.' . $menu_id);
|
|
|
|
$title = '';
|
|
if ($show_title) {
|
|
if ($thirdParty = $config->get('third_party_settings')) {
|
|
if (isset($thirdParty['sitemap']) && $setting = $thirdParty['sitemap']) {
|
|
if (isset($setting['sitemap_display_name'])) {
|
|
$title = $setting['sitemap_display_name'];
|
|
}
|
|
}
|
|
}
|
|
if (empty($title)) {
|
|
$title = $config->get('label');
|
|
}
|
|
}
|
|
|
|
$config->clear('third_party_settings.sitemap');
|
|
$config->save();
|
|
return $title;
|
|
}
|
|
|
|
/**
|
|
* Helper function to get a vocabulary title for the 2.x settings update.
|
|
*
|
|
* @param string $vid
|
|
* The vocabulary id.
|
|
*
|
|
* @return string
|
|
* Returns the vocabulary name.
|
|
*/
|
|
function sitemap_vocab_title_update($vid) {
|
|
$config_factory = \Drupal::configFactory();
|
|
$config = $config_factory->getEditable('taxonomy.vocabulary.' . $vid);
|
|
|
|
return $config->get('name');
|
|
}
|
|
|
|
/**
|
|
* Helper function to update the term_depth setting.
|
|
*
|
|
* @param int $value
|
|
* The new Deph vocabulary value.
|
|
*
|
|
* @return int
|
|
* Returns the value.
|
|
*/
|
|
function sitemap_vocab_depth_update($value) {
|
|
if ($value == -1 || $value > Vocabulary::DEPTH_MAX) {
|
|
return Vocabulary::DEPTH_MAX;
|
|
}
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* Helper function to update the term_threshold and forum_threshold settings.
|
|
*
|
|
* @param int $value
|
|
* The value to update the term_threshold and forum_threshold settings.
|
|
*
|
|
* @return int
|
|
* Returns the value.
|
|
*/
|
|
function sitemap_vocab_threshold_update($value) {
|
|
if ($value == -1) {
|
|
return Vocabulary::THRESHOLD_DISABLED;
|
|
}
|
|
return $value;
|
|
}
|