Frontend-Umbau (Kevin, 06.07.2026), Ergebnis des businessportal24-Audits: - Fake-Anzeigen und Mock-/Fallback-Daten entfernt (focus-ad, feed-ad, highlight-card, press-release-card, featured-releases, press-releases-grid); Sektionen rendern nur noch mit echten Daten oder gar nicht - Newsletter-Strip und Newsletter-Box zurueckgebaut (Feature nachgelagert, vor Reaktivierung DOI-Flow noetig) - Echte Boersendaten: MarketDataService (Yahoo-Finance-Quotes, config/market.php, Cache) + market:refresh alle 15 Min. im Scheduler; live-ticker blendet sich ohne Daten aus - EN-Lokalisierung der Kern-Seiten via lang/de/web.php + lang/en/web.php; Carbon-Locale folgt app()->getLocale() - Web-Tests auf den neuen Frontend-Stand nachgezogen (Suite: 993 gruen) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
1.4 KiB
PHP
42 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Web;
|
|
|
|
use App\Enums\Portal;
|
|
use App\Models\PressRelease;
|
|
use Illuminate\Support\Facades\Cache;
|
|
use Illuminate\Support\Str;
|
|
|
|
/**
|
|
* Ad-Hoc-Ticker-Meldungen der Web-Frontends: die jüngsten veröffentlichten
|
|
* Pressemitteilungen des Portals. Zentral hier statt je Seite, damit der
|
|
* Ticker auf allen Unterseiten identisch gefüllt ist; kurz gecacht, weil
|
|
* der Header auf jeder Seite rendert.
|
|
*/
|
|
class TickerData
|
|
{
|
|
private const CACHE_TTL_SECONDS = 300;
|
|
|
|
/**
|
|
* @return list<array{time: string, text: string}>
|
|
*/
|
|
public function items(Portal $portal, string $language): array
|
|
{
|
|
$cacheKey = sprintf('web.ticker.%s.%s', $portal->value, $language);
|
|
|
|
return Cache::remember($cacheKey, self::CACHE_TTL_SECONDS, function () use ($portal, $language): array {
|
|
return PressRelease::query()
|
|
->forPortalValues([$portal->value, Portal::Both->value])
|
|
->forLanguage($language)
|
|
->visibleInArchive()
|
|
->orderByDesc('published_at')
|
|
->limit(8)
|
|
->get(['id', 'title', 'published_at'])
|
|
->map(static fn (PressRelease $release): array => [
|
|
'time' => $release->published_at?->format('H:i') ?? '',
|
|
'text' => Str::limit((string) $release->title, 70),
|
|
])
|
|
->all();
|
|
});
|
|
}
|
|
}
|