You are here

function simple_sitemap_cron in Simple XML sitemap 4.x

Same name and namespace in other branches
  1. 8.3 simple_sitemap.module \simple_sitemap_cron()
  2. 8.2 simple_sitemap.module \simple_sitemap_cron()

Implements hook_cron().

File

./simple_sitemap.module, line 146
Main module file containing hooks.

Code

function simple_sitemap_cron() {

  /** @var \Drupal\simple_sitemap\Settings $settings */
  $settings = \Drupal::service('simple_sitemap.settings');
  if ($settings
    ->get('cron_generate')) {
    $interval = (int) $settings
      ->get('cron_generate_interval', 0) * 60 * 60;
    $request_time = \Drupal::service('datetime.time')
      ->getRequestTime();
    $generation_in_progress = \Drupal::service('simple_sitemap.queue_worker')
      ->generationInProgress();
    $state = \Drupal::state();
    if ($interval === 0 || $generation_in_progress || $state
      ->get('simple_sitemap.last_cron_generate', 0) + $interval <= $request_time) {
      if (!$generation_in_progress) {
        $state
          ->set('simple_sitemap.last_cron_generate', $request_time);
      }

      /** @var \Drupal\simple_sitemap\Manager\Generator $generator */
      $generator = \Drupal::service('simple_sitemap.generator');
      $generator
        ->generateSitemap(QueueWorker::GENERATE_TYPE_CRON);
    }
  }
}