contains( static fn (array $existing): bool => ($existing['slug'] ?? null) === $sectionSlug, )) { continue; } $positionAfter = trim((string) ($definition['position_after'] ?? '')); $anchorIndex = $positionAfter === '' ? false : collect($navigation)->search( static fn (array $existing): bool => ($existing['slug'] ?? null) === $positionAfter, ); array_splice( $navigation, is_int($anchorIndex) ? $anchorIndex + 1 : count($navigation), 0, [$section], ); } foreach ($navigation as &$section) { $sectionSlug = (string) ($section['slug'] ?? ''); foreach ((array) ($pageExtensions[$sectionSlug] ?? []) as $extension) { $extensionSlug = trim((string) ($extension['slug'] ?? '')); if ($extensionSlug === '') { continue; } $exists = collect($section['pages'] ?? [])->contains( static fn (array $page): bool => (string) ($page['slug'] ?? '') === $extensionSlug ); if (! $exists) { $section['pages'][] = $extension; } } } unset($section); $titles = (array) setting('navigation.titles', []); $sectionTitles = (array) ($titles['sections'] ?? []); $pageTitles = (array) ($titles['pages'] ?? []); foreach ($navigation as &$section) { $sectionSlug = $section['slug']; $section['title'] = self::title($sectionTitles[$sectionSlug] ?? null, $section['title']); foreach ($section['pages'] ?? [] as $pageIndex => $page) { $section['pages'][$pageIndex]['title'] = self::title( $pageTitles[$sectionSlug][$page['slug']] ?? null, $page['title'] ); foreach ($page['children'] ?? [] as $childIndex => $child) { $section['pages'][$pageIndex]['children'][$childIndex]['title'] = self::title( $pageTitles[$sectionSlug][$child['slug']] ?? null, $child['title'] ); } } } unset($section); return $navigation; } private static function title($value, string $default): string { $value = trim((string) $value); return $value === '' ? $default : $value; } }