HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/beat-the-barn.komma.nl/app/Pages/PageController.php
<?php

namespace App\Pages;

use App\Base\Controller;
use App\Meals\Models\Meal;
use App\Pages\Models\Page;
use Illuminate\Database\Eloquent\Collection;
use Komma\KMS\Components\ComponentService;

final class PageController extends Controller
{
    const DEFAULT_VIEW = 'templates.default';

    /**
     * @param Page $page
     * @return \Illuminate\Contracts\View\View
     */
    public function show(Page $page)
    {
        // Get the page through the set links if translation isn't defined
        if(!isset($page->translation)) $page = $this->links->{$page->code_name}->node;

        /** @var ComponentService $componentService */
        $componentService = app(ComponentService::class);
        $components = $componentService->getViewComponents($page->translation);

        // Make language menu for given page
        $languageMenu = $this->pageService->makeLanguageSwitchForPage($this->links->{$page->code_name}, $this->links->home);

        $view = 'templates.' . $page->code_name;
        if( ! view()->exists($view)) {
            $view = self::DEFAULT_VIEW;
        }

        if($page->getDepth() > 1) {
            $page->parent = $this->links->{$page->getParent()->code_name}->node;

            if($view === self::DEFAULT_VIEW) {
                $page->load('images');
                $view = 'templates.' . $page->parent->code_name . '_detail';
            }
        }

        // Pre view object
        $viewData = [
            'components' => $components,
            'links' => $this->links,
            'languageMenu' => $languageMenu,
            'page' => $page,
        ];

        $view = view($view, $viewData);

        // Inject sub menu if page has children, or has a parent
        if($page->rgt != $page->lft + 1) $view = $view->with(['subMenu' => $this->loadSubmenu($page)]);
        elseif(isset($page->parent)) $view = $view->with(['subMenu' => $this->loadSubmenu($page->parent)]);
        return $view;
    }

    private function loadSubmenu(Page $page)
    {
        $children = $page->findChildren();

        $subMenu = [];
        foreach ($children as $child) {
            if(empty($this->links->{$child->code_name})) continue;
            $subMenu[] = $this->links->{$child->code_name}->node;
        }

        $subMenu = Collection::make($subMenu);
        $subMenu->load('images');

        return $subMenu;
    }

}