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/kommabasic.nl/vendor/komma/kms/src/Menu/KmsMenuItem.php
<?php declare(strict_types=1);


namespace Komma\KMS\Menu;

use Illuminate\Support\Collection;

/**
 * ClassKmsMenuItem
 *
 * Represents a menu item
 *
 * @package Komma\KMS\Menu
 */
class KmsMenuItem
{
    private string $name = '';
    private bool $isSeparator = false;
    private KmsMenuItem $parent;
    private Collection $subItems;
    private string $url;
    private string $modelSlug;
    private string $siteSlug;

    /**
     * @return string
     */
    public function getName(): string
    {
        return $this->name;
    }

    /**
     * @param string $name
     * @return KmsMenuItem
     */
    public function setName(string $name): KmsMenuItem
    {
        $this->name = $name;
        return $this;
    }

    /**
     * @return bool
     */
    public function isSeparator(): bool
    {
        return $this->isSeparator;
    }

    /**
     * @param bool $isSeparator
     * @return KmsMenuItem
     */
    public function setIsSeparator(bool $isSeparator): KmsMenuItem
    {
        $this->isSeparator = $isSeparator;
        return $this;
    }

    public function isActive(string $modelSlug = null, string $siteSlug = null): bool
    {
        if(!isset($this->modelSlug)) return false;

        if(!empty($siteSlug) && isset($this->siteSlug) && $this->modelSlug == $modelSlug && $this->siteSlug == $siteSlug ) return true;
        elseif(empty($siteSlug) && $this->modelSlug == $modelSlug) return true;
        return false;
    }

    /**
     * @return Collection
     */
    public function getSubItems(): Collection
    {
        return $this->subItems;
    }

    /**
     * @param Collection $subItems
     * @return KmsMenuItem
     */
    public function setSubItems(Collection $subItems):KmsMenuItem
    {
        $this->subItems = $subItems;
        foreach ($this->subItems as $subItem) $subItem->parent = $this;
        return $this;
    }

    public function hasSubItems(): bool
    {
        if(isset($this->subItems) && $this->subItems->isNotEmpty()) return true;
        return false;
    }

    /**
     * @param string $url
     * @return KmsMenuItem
     */
    public function setUrl(string $url):KmsMenuItem
    {
        $this->url = $url;
        return $this;
    }

    /**
     * @return string
     */
    public function getUrl(): string
    {
        return $this->url;
    }

    /**
     * @param string $modelSlug
     * @return KmsMenuItem
     */
    public function setModelSlug(string $modelSlug): KmsMenuItem
    {
        $this->modelSlug = $modelSlug;
        return $this;
    }

    /**
     * @param string $siteSlug
     * @return KmsMenuItem
     */
    public function setSiteSlug(string $siteSlug): KmsMenuItem
    {
        $this->siteSlug = $siteSlug;
        return $this;
    }

    /**
     * @param  string|null  $modelSlug
     * @param  string|null  $siteSlug
     * @return bool
     */
    public function hasActiveSubItems(string $modelSlug = null, string $siteSlug = null): bool
    {
        if(!$this->hasSubItems()) return false;

        /** @var KmsMenuItem $subItem */
        foreach($this->subItems as $subItem) {
            if($subItem->isActive($modelSlug, $siteSlug)) return true;
        }
        return false;
    }
}