You are here

function xmlsitemap_regenerate_batch_generate in XML sitemap 7.2

Same name and namespace in other branches
  1. 8 xmlsitemap.module \xmlsitemap_regenerate_batch_generate()
  2. 6.2 xmlsitemap.generate.inc \xmlsitemap_regenerate_batch_generate()
  3. 2.x xmlsitemap.module \xmlsitemap_regenerate_batch_generate()

Batch callback; generate all pages of a sitemap.

1 string reference to 'xmlsitemap_regenerate_batch_generate'
xmlsitemap_regenerate_batch in ./xmlsitemap.generate.inc
BATCH OPERATIONS -----------------------------------------------------------.

File

./xmlsitemap.generate.inc, line 341
Sitemap generation and rebuilding functions for the xmlsitemap module.

Code

function xmlsitemap_regenerate_batch_generate($smid, array &$context) {
  if (!isset($context['sandbox']['sitemap'])) {
    $context['sandbox']['sitemap'] = xmlsitemap_sitemap_load($smid);
    $context['sandbox']['sitemap']->chunks = 1;
    $context['sandbox']['sitemap']->links = 0;
    $context['sandbox']['max'] = XMLSITEMAP_MAX_SITEMAP_LINKS;

    // Clear the cache directory for this sitemap before generating any files.
    xmlsitemap_check_directory($context['sandbox']['sitemap']);
    xmlsitemap_clear_directory($context['sandbox']['sitemap']);
  }
  $sitemap =& $context['sandbox']['sitemap'];
  $links = xmlsitemap_generate_page($sitemap, $sitemap->chunks);
  $context['message'] = t('Now generating %sitemap-url.', array(
    '%sitemap-url' => url('sitemap.xml', $sitemap->uri['options'] + array(
      'query' => array(
        'page' => $sitemap->chunks,
      ),
    )),
  ));
  if ($links) {
    $sitemap->links += $links;
    $sitemap->chunks++;
  }
  else {

    // Cleanup the 'extra' empty file.
    $file = xmlsitemap_sitemap_get_file($sitemap, $sitemap->chunks);
    if (file_exists($file) && $sitemap->chunks > 1) {
      file_unmanaged_delete($file);
    }
    $sitemap->chunks--;

    // Save the updated chunks and links values.
    $context['sandbox']['max'] = $sitemap->chunks;
    $sitemap->updated = REQUEST_TIME;
    xmlsitemap_sitemap_get_max_filesize($sitemap);
    xmlsitemap_sitemap_save($sitemap);
  }
  if ($sitemap->chunks != $context['sandbox']['max']) {
    $context['finished'] = $sitemap->chunks / $context['sandbox']['max'];
  }
}