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/farmfun.komma.pro/app/Komma/Pages/PageService.php
<?php

namespace App\Komma\Pages;

use App\Komma\Base\Service;
use App\Komma\Pages\Models\Page;

final class PageService extends Service
{
    /**
     * @param int $id
     * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Relations\HasMany|object|null
     */
    public function getPage(int $id)
    {
        // Find all pages
        if (! $page = $this->site
            ->pages()
            ->where('active', 1)
            ->where('id', $id)
            ->first()
        ) {
            abort(404);
        }

        return $page;
    }

    /**
     * Fetch translated page routes
     *
     * @return object | bool
     */
    public function getAllTranslatedPageRoutes()
    {
        // Find all pages
        if (! $pages = $this->site
            ->pages()
            ->where('active', 1)
            ->where('lft', '!=', 1)
            ->orderBy('lft', 'asc')
            ->with('translation')
            ->with('translation.route')
            ->get()
        ) {
            return false;
        }

        $routes = [];

        // Loop through pages
        foreach ($pages as $key => $page) {
            if (isset($page->translation) && isset($page->translation->route)) {
                $routes[$page->code_name] = (object) [
                    'page_id' => $page->id,
                    'name' => $page->translation->name,
                    'route' => $page->translation->route->alias,
                    'node' => $page,
                ];
            }
        }

        return (object) $routes;
    }

    /**
     * Generate a sub navigation (children) through the page
     *
     * @param Page $page
     * @param $links
     * @return array
     */
    public function getSubNav(Page $page, $links)
    {
        $subNav = [];

        $children = $page->findChildren();
        foreach ($children as $child) {
            $subNav[] = $links->{$child->code_name};
        }

        return $subNav;
    }

    public function makeLanguageSwitchForPage($page, $home = null)
    {
        $languageMenu = [];

        $pageTranslations = $page->node->translations->keyBy('language_id');

        if (! empty($home)) {
            $homeTranslations = $home->node->translations->keyBy('language_id');
        }

        foreach ($this->site->languages as $language) {
            if ($pageTranslation = $pageTranslations->get($language->id)) {
                if (isset($pageTranslation->route)) {
                    if ($pageTranslation->route->alias != '/') {
                        $languageMenu[$language->iso_2] = $pageTranslation->route->alias;
                    } else {
                        $languageMenu[$language->iso_2] = $pageTranslation->route->alias;
                    }
                }
                continue;
            }

            // If page hasn't a translation grab the home route (should always exists
            if (! empty($home) && $homeTranslation = $homeTranslations->get($language->id)) {
                if ($homeTranslation->route->alias != '/') {
                    $languageMenu[$language->iso_2] = $homeTranslation->route->alias;
                } else {
                    $languageMenu[$language->iso_2] = $homeTranslation->route->alias;
                }
                continue;
            }
        }

        return $languageMenu;
    }
}