public function ViewsUrlGenerator::getDataSets in Simple XML sitemap (Views integration) 8
File
- src/Plugin/simple_sitemap/UrlGenerator/ViewsUrlGenerator.php, line 141
- Contains Views URL generator.
Class
- ViewsUrlGenerator
- Views URL generator plugin.
Namespace
Drupal\simple_sitemap_views\Plugin\simple_sitemap\UrlGenerator
Code
public function getDataSets() {
$query = $this->viewStorage
->getQuery();
$query
->condition('status', TRUE);
$query
->condition("display.*.display_plugin", $this->simpleSitemapViews
->getDisplayPathPluginIds(), 'IN');
$view_ids = $query
->execute();
if (empty($view_ids)) {
return [];
}
$data_sets = [];
foreach ($this->viewStorage
->loadMultiple($view_ids) as $view_entity) {
$displays = array_filter($view_entity
->get('display'), [
$this->simpleSitemapViews,
'isValidDisplay',
]);
foreach ($displays as $display_id => $display) {
$view = Views::executableFactory()
->get($view_entity);
if (!$view
->setDisplay($display_id)) {
$view
->destroy();
continue;
}
if ($view->display_handler
->isEnabled() && ($settings = $this->simpleSitemapViews
->getSitemapSettings($view))) {
$base_data_set = [
'view' => $view,
'settings' => $settings,
];
$data_sets[] = $base_data_set + [
'arguments' => NULL,
];
if ($args_ids = $this->simpleSitemapViews
->getIndexableArguments($view)) {
$args_ids = $this->simpleSitemapViews
->getArgumentsStringVariations($args_ids);
$condition = new Condition('AND');
$condition
->condition('view_id', $view
->id());
$condition
->condition('display_id', $view->current_display);
$condition
->condition('arguments_ids', $args_ids, 'IN');
$max_links = is_numeric($settings['max_links']) ? $settings['max_links'] : NULL;
$indexed_arguments = $this->simpleSitemapViews
->getArgumentsFromIndex($condition, $max_links, TRUE);
foreach ($indexed_arguments as $index_id => $arguments_info) {
$data_sets[] = $base_data_set + [
'index_id' => $index_id,
'arguments' => $arguments_info['arguments'],
];
}
}
}
}
}
return $data_sets;
}