X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fsimple_sitemap%2Fsimple_sitemap.module;fp=web%2Fmodules%2Fcontrib%2Fsimple_sitemap%2Fsimple_sitemap.module;h=fc0c7a39074fef6591aa54b3a41811ec7125ab5c;hp=d10a41d0b2bfdaada51c3074fb04a9a1401b7a57;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/web/modules/contrib/simple_sitemap/simple_sitemap.module b/web/modules/contrib/simple_sitemap/simple_sitemap.module index d10a41d0b..fc0c7a390 100644 --- a/web/modules/contrib/simple_sitemap/simple_sitemap.module +++ b/web/modules/contrib/simple_sitemap/simple_sitemap.module @@ -9,9 +9,14 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\system\MenuInterface; +use Drupal\language\ConfigurableLanguageInterface; /** - * Implements hook_help. + *Implements hook_help. + * + * @param $route_name + * @param \Drupal\Core\Routing\RouteMatchInterface $route_match + * @return \Drupal\Component\Render\MarkupInterface|null */ function simple_sitemap_help($route_name, RouteMatchInterface $route_match) { return $route_name === 'help.page.simple_sitemap' ? @@ -22,14 +27,18 @@ function simple_sitemap_help($route_name, RouteMatchInterface $route_match) { * Implements hook_form_alter. * * Adds sitemap settings to entity types that are supported via plugins. + * + * @param $form + * @param \Drupal\Core\Form\FormStateInterface $form_state + * @param $form_id */ function simple_sitemap_form_alter(&$form, FormStateInterface $form_state, $form_id) { /** * @var Drupal\simple_sitemap\Form\FormHelper $f */ - $f = \Drupal::service('simple_sitemap.form_helper')->processForm($form_state); - if (!$f->alteringForm()) { + $f = \Drupal::service('simple_sitemap.form_helper'); + if (!$f->processForm($form_state)) { return; } @@ -37,12 +46,12 @@ function simple_sitemap_form_alter(&$form, FormStateInterface $form_state, $form '#type' => 'details', '#group' => isset($form['additional_settings']) ? 'additional_settings' : 'advanced', '#title' => t('Simple XML sitemap'), - '#description' => $f->getEntityCategory() == 'instance' ? t('Settings for this entity can be overridden here.') : '', + '#description' => $f->getEntityCategory() === 'instance' ? t('Settings for this entity can be overridden here.') : '', ]; // Attach some js magic to forms. // todo: JS not working on comment entity form, hence disabling. - if ($f->getEntityTypeId() != 'comment' || $f->getEntityCategory() != 'instance') { + if ($f->getEntityTypeId() !== 'comment' || $f->getEntityCategory() !== 'instance') { $form['#attached']['library'][] = 'simple_sitemap/form'; } @@ -58,7 +67,7 @@ function simple_sitemap_form_alter(&$form, FormStateInterface $form_state, $form // Add submission handler. if (isset($form['actions']['submit']['#submit'])) { foreach (array_keys($form['actions']) as $action) { - if ($action != 'preview' + if ($action !== 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') { $form['actions'][$action]['#submit'][] = 'simple_sitemap_entity_form_submit'; @@ -73,13 +82,19 @@ function simple_sitemap_form_alter(&$form, FormStateInterface $form_state, $form /** * Form submission handler called in hook_form_alter. + * + * @param $form + * @param \Drupal\Core\Form\FormStateInterface $form_state */ function simple_sitemap_entity_form_submit($form, FormStateInterface &$form_state) { /** * @var Drupal\simple_sitemap\Form\FormHelper $f */ - $f = \Drupal::service('simple_sitemap.form_helper')->processForm($form_state); + $f = \Drupal::service('simple_sitemap.form_helper'); + if (!$f->processForm($form_state)) { + return; + } $values = $form_state->getValues(); @@ -94,16 +109,20 @@ function simple_sitemap_entity_form_submit($form, FormStateInterface &$form_stat */ $generator = \Drupal::service('simple_sitemap.generator'); + $settings = [ + 'index' => $values['simple_sitemap_index_content'], + 'priority' => $values['simple_sitemap_priority'], + 'changefreq' => $values['simple_sitemap_changefreq'], + 'include_images' => $values['simple_sitemap_include_images'], + ]; + switch ($f->getEntityCategory()) { case 'bundle': $generator->setBundleSettings( $f->getEntityTypeId(), !empty($f->getBundleName()) ? $f->getBundleName() : $f->getFormEntityId(), - [ - 'index' => $values['simple_sitemap_index_content'], - 'priority' => $values['simple_sitemap_priority'] - ] + $settings ); break; @@ -111,10 +130,7 @@ function simple_sitemap_entity_form_submit($form, FormStateInterface &$form_stat $generator->setEntityInstanceSettings( $f->getEntityTypeId(), !empty($f->getInstanceId()) ? $f->getInstanceId() : $f->getFormEntityId(), - [ - 'index' => $values['simple_sitemap_index_content'], - 'priority' => $values['simple_sitemap_priority'] - ] + $settings ); break; } @@ -136,7 +152,30 @@ function simple_sitemap_cron() { */ $generator = \Drupal::service('simple_sitemap.generator'); if ($generator->getSetting('cron_generate')) { - $generator->generateSitemap('backend'); + $interval = (int) $generator->getSetting('cron_generate_interval', 0) * 60 * 60; + $requestTime = \Drupal::service('datetime.time')->getRequestTime(); + if ($interval === 0 || ((\Drupal::state()->get('simple_sitemap.last_cron_generate', 0) + $interval) <= $requestTime)) { + \Drupal::state()->set('simple_sitemap.last_cron_generate', $requestTime); + $generator->generateSitemap('backend'); + } + } +} + +/** + * Implements hook_ENTITY_TYPE_delete(). + * + * When a language is removed from the system remove it also from settings. + */ +function simple_sitemap_configurable_language_delete(ConfigurableLanguageInterface $language) { + + /** + * @var \Drupal\simple_sitemap\Simplesitemap $generator + */ + $generator = \Drupal::service('simple_sitemap.generator'); + $excluded_languages = $generator->getSetting('excluded_languages'); + if (isset($excluded_languages[$language->id()])) { + unset($excluded_languages[$language->id()]); + $generator->saveSetting('excluded_languages', $excluded_languages); } } @@ -162,6 +201,9 @@ function simple_sitemap_entity_delete(EntityInterface $entity) { * Implements hook_entity_bundle_delete(). * * Removes settings of the removed bundle. + * + * @param string $entity_type_id + * @param string $bundle */ function simple_sitemap_entity_bundle_delete($entity_type_id, $bundle) { simple_sitemap_delete_bundle_config($entity_type_id, $bundle); @@ -198,9 +240,9 @@ function simple_sitemap_delete_bundle_config($entity_type_id, $bundle) { // Delete bundle settings. \Drupal::service('config.factory')->getEditable("simple_sitemap.bundle_settings.$entity_type_id.$bundle")->delete(); - $message = "You may want to regenerate your XML sitemap now."; + $message = 'You may want to regenerate your XML sitemap now.'; if ($generator->getSetting('cron_generate')) { - $message .= ' Otherwise the sitemap will be regenerated on the next cron run.'; + $message .= ' Otherwise the sitemap will be regenerated during a future cron run.'; } drupal_set_message(t($message, ['@url' => $GLOBALS['base_url'] . '/admin/config/search/simplesitemap'])); } @@ -212,6 +254,6 @@ function simple_sitemap_delete_bundle_config($entity_type_id, $bundle) { function simple_sitemap_robotstxt() { return [ '# XML sitemap', - 'Sitemap: ' . $GLOBALS['base_url'] . '/sitemap.xml', + 'Sitemap: ' . $GLOBALS['base_url'] . '/sitemap.xml', //todo: Use base URL setting? ]; }