chore: commit remaining workspace changes

This commit is contained in:
2026-05-08 21:51:29 +02:00
parent 8d108b8a76
commit ff96ef796e
97 changed files with 18020 additions and 2196 deletions

View File

@@ -0,0 +1,47 @@
<?php
declare(strict_types=1);
namespace App\Services\Sitemaps\Builders;
use App\Models\AcademyCourse;
use App\Services\Sitemaps\AbstractSitemapBuilder;
use App\Services\Sitemaps\SitemapUrl;
use App\Services\Sitemaps\SitemapUrlBuilder;
use DateTimeInterface;
final class AcademyCoursesSitemapBuilder extends AbstractSitemapBuilder
{
public function __construct(private readonly SitemapUrlBuilder $urls)
{
}
public function name(): string
{
return 'academy-courses';
}
public function items(): array
{
if (! (bool) config('academy.enabled', true)) {
return [];
}
$items = [$this->urls->staticRoute('/academy/courses')];
$details = AcademyCourse::query()
->published()
->orderBy('id')
->cursor()
->map(fn (AcademyCourse $course): SitemapUrl => $this->urls->staticRoute('/academy/courses/' . $course->slug, $course->updated_at ?? $course->published_at))
->values()
->all();
return array_merge($items, $details);
}
public function lastModified(): ?DateTimeInterface
{
return $this->dateTime(AcademyCourse::query()->published()->max('updated_at'));
}
}

View File

@@ -6,6 +6,7 @@ namespace App\Services\Sitemaps;
use App\Services\Sitemaps\Builders\ArtworksSitemapBuilder;
use App\Services\Sitemaps\Builders\AcademyChallengesSitemapBuilder;
use App\Services\Sitemaps\Builders\AcademyCoursesSitemapBuilder;
use App\Services\Sitemaps\Builders\AcademyLessonsSitemapBuilder;
use App\Services\Sitemaps\Builders\AcademyPacksSitemapBuilder;
use App\Services\Sitemaps\Builders\AcademyPromptsSitemapBuilder;
@@ -31,6 +32,7 @@ final class SitemapRegistry
public function __construct(
ArtworksSitemapBuilder $artworks,
AcademyCoursesSitemapBuilder $academyCourses,
AcademyLessonsSitemapBuilder $academyLessons,
AcademyPromptsSitemapBuilder $academyPrompts,
AcademyPacksSitemapBuilder $academyPacks,
@@ -50,6 +52,7 @@ final class SitemapRegistry
) {
$this->builders = [
$artworks->name() => $artworks,
$academyCourses->name() => $academyCourses,
$academyLessons->name() => $academyLessons,
$academyPrompts->name() => $academyPrompts,
$academyPacks->name() => $academyPacks,