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/rentman2019.komma.pro/app/Komma/Kms/Composers/SidebarMenuComposer.php
<?php

namespace App\Komma\Kms\Composers;

/**
 * @author      Komma <info@komma.pro>
 * @copyright   (c) 2012-2016, Komma
 */

use App\Komma\Kms\ActionLog\ActionLog;
use App\Komma\Shop\Bridges\SideBarShopMenuComposerBridge;
use App\Komma\SiteConfig\Models\SiteConfig;
use App\Komma\Sites\Models\Site;
use App\Komma\Sites\SiteServiceInterface;
use App\Komma\Users\Models\User;

class SidebarMenuComposer
{
    /** @var SiteServiceInterface */
    protected $siteService;

    public function __construct()
    {
        $this->siteService = \App::make(SiteServiceInterface::class);
    }

    public function compose($view)
    {
        $viewData = $view->getData();

        //$currentSectionSlug = $this->getCurrentSectionSlug();
        $currentSectionSlug = isset($viewData['section']) ? $viewData['section']->getSlug() : $this->getCurrentSectionSlug();

        $currentSectionSubSlug = $this->getCurrentSectionSubSlug();

        //Generate the base menu structure
//        $menuStructure = $this->getBaseItems($currentSectionSlug, $currentSectionSubSlug);

        //Load all the available sites and the current
        $sites = $this->siteService->getSites();
        $site = $sites->first();
        $currentSiteSlug = $this->siteService->getCurrentSite()->slug;

//        $siteMenus = [];
        //If there is only one, merge the siteSub items, so it is not a sub menu
//        if ($sites->count() == 1) {
//            $menuStructure = array_merge($menuStructure, $this->getSiteSubItems($sites->first(), $currentSiteSlug, $currentSectionSlug));
//        } //If there are multiple sites, loop and ad these as an sub menu
//        else {
//            foreach ($sites as $site) {
//                //We put all site items in a submenu for a site except for the default site.
//                if($site->exists) {
//                    $siteMenus[] = [
//                        'name' => $site->name,
//                        'subItems' => $this->getSiteSubItems($site, $currentSiteSlug, $currentSectionSlug),
//                        'active' => ($site->slug == $currentSiteSlug)
//                    ];
//                }
//            }
//        }

//        $menuStructure = array_merge($menuStructure, $siteMenus);

        $menuStructure = [];

        if (\Auth::user()->can('isSuperAdmin', User::class)) {
            $menuStructure = array_merge([
                [
                    'name'   => trans('kms/sidebarMenu.users'),
                    'url'    => route('users.index'),
                    'active' => ('users' == $currentSectionSlug),
                ],
                [
                    'name'   => trans('kms/sidebarMenu.sites'),
                    'url'    => route('sites.index'),
                    'active' => ('sites' == $currentSectionSlug),
                ],
            ]);
        }

        $menuStructure = array_merge($menuStructure, [
            [
                'name'   => trans('kms/sidebarMenu.announcements'),
                'url'    => route('announcements.index'),
                'active' => ('announcements' == $currentSectionSlug),
            ],
            [
                'name'   => trans('kms/sidebarMenu.pages'),
                'url'    => route('pages.index', ['siteSlug' => $site->slug]),
                'active' => ('pages' == $currentSectionSlug && $site->slug == $currentSiteSlug),
            ],
            [
                'name'   => trans('kms/sidebarMenu.employees'),
                'url'    => route('employees.index'),
                'active' => ('employees' == $currentSectionSlug),
            ],

            [
                'name'     => trans('kms/sidebarMenu.pricing'),
                'active'   => in_array($currentSectionSlug, ['packages', 'pricinglabels', 'inventories', 'crews', 'pricingproducts']),
                'subItems' => [
                    [
                        'name'   => trans('kms/sidebarMenu.packages'),
                        'url'    => route('packages.index', ['siteSlug' => $site->slug]),
                        'active' => ('packages' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                    [
                        'name'   => trans('kms/sidebarMenu.inventory'),
                        'url'    => route('inventories.index', ['siteSlug' => $site->slug]),
                        'active' => ('inventories' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                    [
                        'name'   => trans('kms/sidebarMenu.crew'),
                        'url'    => route('crews.index', ['siteSlug' => $site->slug]),
                        'active' => ('crews' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                    [
                        'name'   => trans('kms/sidebarMenu.pricing_product'),
                        'url'    => route('pricingproducts.index', ['siteSlug' => $site->slug]),
                        'active' => ('pricingproducts' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                    [
                        'name'   => trans('kms/sidebarMenu.pricinglabels'),
                        'url'    => route('pricinglabels.index'),
                        'active' => ('pricinglabels' == $currentSectionSlug),
                    ],
                ],
            ],

            [
                'name'   => trans('kms/sidebarMenu.posts'),
                'url'    => route('posts.index'),
                'active' => ('posts' == $currentSectionSlug),
            ],
            [
                'name'   => trans('kms/sidebarMenu.trainings'),
                'url'    => route('trainings.index'),
                'active' => ('trainings' == $currentSectionSlug),
            ],
            [
                'name'   => trans('kms/sidebarMenu.updates'),
                'url'    => route('updates.index', ['siteSlug' => $site->slug]),
                'active' => ('updates' == $currentSectionSlug && $site->slug == $currentSiteSlug),
            ],
            [
                'name'   => trans('kms/sidebarMenu.integrations'),
                'url'    => route('integrations.index', ['siteSlug' => $site->slug]),
                'active' => ('integrations' == $currentSectionSlug && $site->slug == $currentSiteSlug),
            ],
            [
                'name'     => trans('kms/sidebarMenu.webinars'),
                'active'   => in_array($currentSectionSlug, ['webinars', 'webinarTabs']),
                'subItems' => [
                    [
                        'name'   => trans('kms/sidebarMenu.webinars'),
                        'url'    => route('webinars.index', ['siteSlug' => $site->slug]),
                        'active' => ('webinars' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                    [
                        'name'   => trans('kms/sidebarMenu.webinar_tags'),
                        'url'    => route('webinartags.index', ['siteSlug' => $site->slug]),
                        'active' => ('webinarTags' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                ],
            ],
            [
                'name'   => trans('kms/sidebarMenu.careersjobs'),
                'url'    => route('careersjobs.index', ['siteSlug' => $site->slug]),
                'active' => ('careersjobs' == $currentSectionSlug && $site->slug == $currentSiteSlug),
            ],
            //            [
            //                'name'   => trans('kms/sidebarMenu.jobs'),
            //                'url'    => route('jobs.index', ['siteSlug' => $site->slug]),
            //                'active' => ('jobs' == $currentSectionSlug && $site->slug == $currentSiteSlug),
            //            ],
            [
                'name'     => trans('kms/sidebarMenu.customers'),
                'active'   => in_array($currentSectionSlug, ['customerstories', 'customerlogos']),
                'subItems' => [
                    [
                        'name'   => trans('kms/sidebarMenu.customerstories'),
                        'url'    => route('customerstories.index', ['siteSlug' => $site->slug]),
                        'active' => ('customerstories' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                    [
                        'name'   => trans('kms/sidebarMenu.customerlogos'),
                        'url'    => route('customerlogos.index', ['siteSlug' => $site->slug]),
                        'active' => ('customerlogos' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                ],
            ],
            [
                'name'     => trans('kms/sidebarMenu.products'),
                'active'   => in_array($currentSectionSlug, ['productgroups', 'products']),
                'subItems' => [
                    [
                        'name'   => trans('kms/sidebarMenu.products'),
                        'url'    => route('products.index', ['siteSlug' => $site->slug]),
                        'active' => ('products' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                    [
                        'name'   => trans('kms/sidebarMenu.productGroups'),
                        'url'    => route('productgroups.index'),
                        'active' => ('productgroups' == $currentSectionSlug),
                    ],
                ],
            ],
            [
                'name'     => trans('kms/sidebarMenu.solutions'),
                'active'   => in_array($currentSectionSlug, ['solutiongroups', 'solutions']),
                'subItems' => [
                    [
                        'name'   => trans('kms/sidebarMenu.solutions'),
                        'url'    => route('solutions.index', ['siteSlug' => $site->slug]),
                        'active' => ('solutions' == $currentSectionSlug && $site->slug == $currentSiteSlug),
                    ],
                    [
                        'name'   => trans('kms/sidebarMenu.solutionGroups'),
                        'url'    => route('solutiongroups.index'),
                        'active' => ('solutiongroups' == $currentSectionSlug),
                    ],
                ],
            ],
            [
                'name'   => 'Files',
                'url'    => route('files.index'),
                'active' => ('file' == $currentSectionSlug),
            ],
        ]);

        if (\Auth::user()->can('index', SiteConfig::class)) {
            $menuStructure = array_merge($menuStructure, [
                [
                    'name'   => trans('kms/sidebarMenu.siteConfig'),
                    'url'    => route('siteconfig.index'),
                    'active' => ('siteconfig' == $currentSectionSlug),
                ],
            ]);
        }

        $view->with('menuStructure', $menuStructure);
    }

    protected function getCurrentSectionSlug()
    {
        $route = explode('/', \Route::current()->uri());
        if (\Route::current()->parameter('site')) {
            return $route[2];
        }

        return isset($route[1]) ? $route[1] : null;
    }

    protected function getCurrentSectionSubSlug()
    {
        $route = explode('/', \Route::current()->uri());
        if (\Route::current()->parameter('site')) {
            if (isset($route[3])) {
                return $route[3];
            }
        }

        return isset($route[2]) ? $route[2] : null;
    }

    // =============================================== To keep it simple we created the getMenuStructure
    // =============================================== So the ones below shouldn't be used...

    /**
     * This functions will return the basic menu items
     *
     * @param $currentSectionSlug
     * @param $currentSectionSubSlug
     * @return array
     */
    protected function getBaseItems($currentSectionSlug, $currentSectionSubSlug)
    {
        $items = [];

//        $items[] = [
//            'name' => \Lang::get('kms/SidebarMenu.dashboard'),
        ////            'url' => route('kms.dashboard.index'),
//            'url' => route('dashboard.index'),
//            'active' => ('' == $currentSectionSlug)
//        ];

        $items[] = [
            'name'   => trans('kms/sidebarMenu.users'),
            'url'    => route('users.index'),
            'active' => ('users' == $currentSectionSlug),
        ];

        $items[] = [
            'name'   => trans('kms/sidebarMenu.posts'),
            'url'    => route('posts.index'),
            'active' => ('posts' == $currentSectionSlug),
        ];

        $items[] = [
            'name'   => trans('kms/sidebarMenu.productGroups'),
            'url'    => route('productgroups.index'),
            'active' => ('productgroups' == $currentSectionSlug),
        ];

//        $items[] = [
//            'name' => __('kms/transfer.transfer'),
//            'url' => route('transfer.index'),
//            'active' => ('transfer' == $currentSectionSlug)
//        ];
//        if (\Auth::user()->can('viewLogs', ActionLog::class)) {
//            $items[] = [
//                'name' => __('kms/actionlog.section.title'),
//                'url' => route('actionlog.index'),
//                'active' => ('actionlog' == $currentSectionSlug)
//            ];
//        }

        // Allow site(s) editing only for SuperAdmin
//        if (\Auth::user()->can('editSites', User::class)) {
//            $items[] = [
//                'name' => trans('kms/sidebarMenu.sites'),
//                'url' => route('sites.index'),
//                'active' => ('sites' == $currentSectionSlug)
//            ];
//        }

        /**
         * Doesn't mean that if the environment setting shop is true the shop is installed
         * To install the shop, go to:
         * app / Komma / Shop / Readme.txt
         */
//        if(\Config::get('app.isShop')){
//            $items = array_merge($items, SideBarShopMenuComposerBridge::get($currentSectionSlug));
//        }

        return $items;
    }

    /**
     * This will return the site specific items
     *
     * @param $site
     * @param $currentSiteSlug
     * @param $currentSectionSlug
     * @return array
     */
    protected function getSiteSubItems(Site $site, $currentSiteSlug, $currentSectionSlug)
    {
        $items = [
            [
                'name'   => trans('kms/sidebarMenu.pages'),
                'url'    => route('pages.index', ['siteSlug' => $site->slug]),
                'active' => ('pages' == $currentSectionSlug && $site->slug == $currentSiteSlug),
            ],
        ];

        return $items;
    }
}