Файл: app/Http/Controllers/SitemapController.php
Строк: 36
<?php
declare(strict_types=1);
namespace AppHttpControllers;
use AppClassesRegistry;
use IlluminateHttpResponse;
class SitemapController extends Controller
{
private function getAllPages(): array
{
return array_keys(Registry::$sitemapPages);
}
/**
* Генерирует главную страницу
*/
public function index(): Response
{
$locs = [];
foreach ($this->getAllPages() as $page) {
$data = $this->getPageData($page);
if ($data) {
$locs[] = [
'loc' => config('app.url') . '/sitemap/' . $page . '.xml',
'lastmod' => $data[0]['lastmod'],
];
}
}
return response()
->view('sitemap/index', compact('locs'))
->header('Content-Type', 'application/xml; charset=utf-8');
}
/**
* Вызывает страницу
*/
public function page(string $page): Response
{
if (! in_array($page, $this->getAllPages(), true)) {
abort(404);
}
return response()
->view('sitemap/url', ['locs' => $this->getPageData($page)])
->header('Content-Type', 'application/xml; charset=utf-8');
}
private function getPageData(string $page): array
{
return (Registry::$sitemapPages[$page])();
}
}