*/ 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(); }); } }