/** * 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']; } }