src/Website/LinkGenerator/ProductLinkGenerator.php line 35

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Enterprise License (PEL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PEL
  13.  */
  14. namespace App\Website\LinkGenerator;
  15. use App\Model\Product\AccessoryPart;
  16. use App\Model\Product\Car;
  17. use App\Website\Tool\ForceInheritance;
  18. use App\Website\Tool\Text;
  19. use Pimcore\Bundle\EcommerceFrameworkBundle\Model\ProductInterface;
  20. use Pimcore\Model\DataObject\ClassDefinition\LinkGeneratorInterface;
  21. use Pimcore\Model\DataObject\Concrete;
  22. use Pimcore\Model\Document;
  23. class ProductLinkGenerator extends AbstractProductLinkGenerator implements LinkGeneratorInterface
  24. {
  25.     /**
  26.      * @param Concrete $object
  27.      * @param array $params
  28.      *
  29.      * @return string
  30.      */
  31.     public function generate(Concrete $object, array $params = []): string
  32.     {
  33.         if (!($object instanceof Car || $object instanceof AccessoryPart)) {
  34.             throw new \InvalidArgumentException('Given object is no Car');
  35.         }
  36.         if (isset($params['document']) && $params['document'] instanceof Document) {
  37.             $this->document $params['document'];
  38.         }
  39.         return $this->doGenerate($object$params);
  40.     }
  41.     /**
  42.      * @param ProductInterface $object
  43.      * @param array $params
  44.      * @return string
  45.      */
  46.     public function generateWithMockup(ProductInterface $object, array $params = []): string {
  47.         return $this->doGenerate($object$params);
  48.     }
  49.     /**
  50.      * @param $object
  51.      * @param $params
  52.      * @return string
  53.      */
  54.     protected function doGenerate($object$params): string
  55.     {
  56.         return ForceInheritance::run(function () use ($object$params) {
  57.             if(!empty($object->getUrlSlug())) {
  58.                 return current($object->getUrlSlug())->getSlug();
  59.             }
  60.             return $this->pimcoreUrl->__invoke(
  61.                 [
  62.                     'productname' => Text::toUrl($object->getOSName() ? $object->getOSName() : 'product'),
  63.                     'product' => $object->getId(),
  64.                     'path' => $this->getNavigationPath($object->getMainCategory(), $params['rootCategory'] ?? null),
  65.                     'page' => null
  66.                 ],
  67.                 'shop-detail',
  68.                 true
  69.             );
  70.         });
  71.     }
  72. }