Files
omg-wtf-ai/app/Http/Controllers/SitemapController.php
T
2026-08-11 00:42:46 +03:00

45 lines
1.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Category;
use App\Models\McpServer;
use App\Models\Page;
use App\Models\Post;
use App\Models\Skill;
use App\Models\Tag;
use App\Models\Tool;
use Illuminate\Http\Response;
class SitemapController extends Controller
{
public function index(): Response
{
$posts = Post::published()->get(['slug', 'updated_at']);
$categories = Category::all(['slug', 'updated_at']);
$tags = Tag::all(['slug', 'updated_at']);
$tools = Tool::approved()->get(['slug', 'updated_at']);
$toolCategories = array_keys(config('tools.categories'));
$mcpServers = McpServer::approved()->get(['slug', 'updated_at']);
$mcpServerCategories = array_keys(config('mcp_servers.categories'));
$skills = Skill::approved()->get(['slug', 'updated_at']);
$skillCategories = array_keys(config('skills.categories'));
$pages = Page::published()->get(['slug', 'updated_at']);
$xml = view('sitemap', [
'posts' => $posts,
'categories' => $categories,
'tags' => $tags,
'tools' => $tools,
'toolCategories' => $toolCategories,
'mcpServers' => $mcpServers,
'mcpServerCategories' => $mcpServerCategories,
'skills' => $skills,
'skillCategories' => $skillCategories,
'pages' => $pages,
])->render();
return response($xml, 200)->header('Content-Type', 'application/xml; charset=UTF-8');
}
}