/**
  * Set up an administrative user account and testing keys.
  */
 public function setUp()
 {
     // Call parent::setUp() allowing test cases to pass further modules.
     parent::setUp();
     $this->admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages', 'administer site configuration', 'administer xmlsitemap', 'access content'));
     $this->drupalLogin($this->admin_user);
     if (!$this->languageManager->getLanguage('fr')) {
         // Add a new language.
         $language = new Language(array('id' => 'fr', 'name' => 'French'));
         language_save($language);
     }
     if (!$this->languageManager->getLanguage('en')) {
         // Add a new language.
         $language = new Language(array('id' => 'en', 'name' => 'English'));
         language_save($language);
     }
     // Create the two different language-context sitemaps.
     $previous_sitemaps = entity_load_multiple('xmlsitemap');
     foreach ($previous_sitemaps as $previous_sitemap) {
         $previous_sitemap->delete();
     }
     $sitemap = $this->entityManager->getStorage('xmlsitemap')->create(array());
     $sitemap->context = array('language' => 'en');
     xmlsitemap_sitemap_save($sitemap);
     $sitemap = $this->entityManager->getStorage('xmlsitemap')->create(array());
     $sitemap->context = array('language' => 'fr');
     xmlsitemap_sitemap_save($sitemap);
 }
 /**
  * {@inheritdoc}
  */
 public function regenerateBatchGenerate($smid, array &$context)
 {
     if (!isset($context['sandbox']['sitemap'])) {
         $sitemap = xmlsitemap_sitemap_load($smid);
         $context['sandbox']['sitemap'] = $sitemap;
         $context['sandbox']['sitemap']->setChunks(1);
         $context['sandbox']['sitemap']->setLinks(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 = $this->generatePage($sitemap, $sitemap->getChunks());
     $context['message'] = t('Now generating %sitemap-url.', array('%sitemap-url' => Url::fromRoute('xmlsitemap.sitemap_xml', [], $sitemap->uri['options'] + array('query' => array('page' => $sitemap->getChunks())))->toString()));
     if ($links) {
         $sitemap->setLinks($sitemap->getLinks() + $links);
         $sitemap->setChunks($sitemap->getChunks() + 1);
     } else {
         // Cleanup the 'extra' empty file.
         $file = xmlsitemap_sitemap_get_file($sitemap, $sitemap->getChunks());
         if (file_exists($file) && $sitemap->getChunks() > 1) {
             file_unmanaged_delete($file);
         }
         $sitemap->setChunks($sitemap->getChunks() - 1);
         // Save the updated chunks and links values.
         $context['sandbox']['max'] = $sitemap->getChunks();
         $sitemap->setUpdated(REQUEST_TIME);
         xmlsitemap_sitemap_get_max_filesize($sitemap);
         xmlsitemap_sitemap_save($sitemap);
     }
     if ($sitemap->getChunks() != $context['sandbox']['max']) {
         $context['finished'] = $sitemap->getChunks() / $context['sandbox']['max'];
     }
 }