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;
}
}
}