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/topswtw.komma.pro/app/KommaApp/Shop/Modules/MetaData/MetaDataService.php
<?php


namespace KommaApp\Shop\Modules\MetaData;


use KommaApp\Shop\Categories\CategoryService;
use KommaApp\Shop\Pages\PageService;
use KommaApp\Shop\Products\ProductService;

class MetaDataService
{
    /**
     * @var PageService
     */
    private $pageService;
    /**
     * @var ProductService
     */
    private $productService;
    /**
     * @var CategoryService
     */
    private $categoryService;

    /**
     * @param PageService $pageService
     * @param ProductService $productService
     * @param CategoryService $categoryService
     * @internal param CategoryRepository $categoryRepository
     */
    public function __construct(PageService $pageService,
                                ProductService $productService,
                                CategoryService $categoryService)
    {
        $this->pageService = $pageService;
        $this->productService = $productService;
        $this->categoryService = $categoryService;
    }
    public function title()
    {
        $title = $this->generateTitle();
        return $title;
    }

    public function description()
    {
        $description = $this->generateDescription();

        return $description;
    }

    /*
     * Generate title
     */
    protected function generateTitle()
    {
        $routeData = \Shop::getRouteData();

        $title = '';
        switch($routeData->routable_type)
        {
            case 'Komma\Kms\Pages\Models\PageTranslation':
                $node = $this->pageService->getNodeById($routeData->routable->page_id);

                $title .= ($node->meta_title) ? $node->meta_title : $node->name;
                $title .= ' | ';
                //todo: Metadata overschrijving is tijdelijk uigezet houden of niet?
//                if( \Lang::has('metaData.title.' . $node->code_name)){
//                    return  \Lang::get('metaData.title.' . $node->code_name,['name' => \Lang::get('tops.name')]);
//                }

                break;
            case 'Komma\Kms\Categories\Models\CategoryTranslation':
                $node = $this->categoryService->getNodeById($routeData->routable->category_id);
                //Is there an meta title, return this
                if($node->meta_title) return $node->meta_title;
                $title .= $node->name . ' | ';

                break;
            case 'Komma\Kms\Products\Models\ShopProductTranslation':
                $productEntity = $this->productService->getByRoutableId($routeData->routable_id);
                //Is there an meta title, return this
                if($productEntity->meta_title) return $productEntity->meta_title;
                $node = $this->categoryService->getNodeById($routeData->category_id);
                $title .= $productEntity->name . ' | ' . $node->name . ' | ';
                break;
            default:
                return false;
        }

        // Add categories
        while($parent = $node->getParent())
        {
            $title .= $parent->name . ' | ';
            $node = $parent;
        }

        //check if the topsname (case insensive) is already in the title
        if (stripos($title,\Lang::get('tops.name_without_bv')) === false) {
            // Add TOPS-Name
            $title .= \Lang::get('tops.name_without_bv');
        }

        //trim last |
        $title = rtrim($title,' | ');

        return $title;
    }

    /*
     * Generate description
     */
    protected function generateDescription()
    {
        $routeData = \Shop::getRouteData();
        switch($routeData->routable_type)
        {
            case 'Komma\Kms\Pages\Models\PageTranslation':
                $node = $this->pageService->getNodeById($routeData->routable->page_id);

                if($node->meta_description != '')
                    return $node->meta_description;

                // Custom description
                if( \Lang::has('metaData.description.' . $node->code_name))
                    return  \Lang::get('metaData.description.' . $node->code_name);

                // Default home description
                if( \Lang::has('metaData.description.home'))
                    return  \Lang::get('metaData.description.home');

                break;
            case 'Komma\Kms\Categories\Models\CategoryTranslation':
                $node = $this->categoryService->getNodeById($routeData->routable->category_id);
                //Is there an meta description, return this
                if($node->meta_description)  return $node->meta_description;
                return strip_tags($node->description);

                break;
            case 'Komma\Kms\Products\Models\ShopProductTranslation':
                $productEntity = $this->productService->getByRoutableId($routeData->routable_id);
                //Is there an meta_description, return this
                if($productEntity->meta_description) return $productEntity->meta_description;
                return strip_tags($productEntity->description);
                break;
            default:
                return false;
        }
    }

}