Implement academy analytics, billing, and web stories updates

This commit is contained in:
2026-05-26 07:27:29 +02:00
parent 456c3d6bb0
commit 0b33a1b074
177 changed files with 27360 additions and 2685 deletions

View File

@@ -52,9 +52,11 @@ final class SeoFactory
$description = Str::limit($description !== '' ? $description : $title, 160, '…');
$image = $thumbs['xl']['url'] ?? $thumbs['lg']['url'] ?? $thumbs['md']['url'] ?? null;
$keywords = $artwork->tags->pluck('name')->filter()->unique()->values()->all();
$licenseUrl = $this->clean((string) ($artwork->license_url ?? ''));
$publisherName = (string) config('seo.site_name', 'Skinbase');
$publisherUrl = url('/');
$licensePageUrl = route('terms-of-service');
$licenseUrl = $this->clean((string) ($artwork->license_url ?? ''));
$licenseUrl = $licenseUrl !== null ? $licenseUrl : $licensePageUrl;
$imageWidth = $thumbs['xl']['width'] ?? $thumbs['lg']['width'] ?? null;
$imageHeight = $thumbs['xl']['height'] ?? $thumbs['lg']['height'] ?? null;
@@ -83,6 +85,8 @@ final class SeoFactory
'creditText' => $authorName,
'datePublished' => optional($artwork->published_at)->toAtomString(),
'license' => $licenseUrl,
'acquireLicensePage' => $licensePageUrl,
'copyrightNotice' => $authorName,
'keywords' => $keywords !== [] ? $keywords : null,
'representativeOfPage' => true,
], fn (mixed $value): bool => $value !== null && $value !== '' && $value !== []))