vendor/pimcore/pimcore/models/Document/Page.php line 24

  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Pimcore
  5.  *
  6.  * This source file is available under two different licenses:
  7.  * - GNU General Public License version 3 (GPLv3)
  8.  * - Pimcore Commercial License (PCL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  13.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  14.  */
  15. namespace Pimcore\Model\Document;
  16. use Pimcore\Messenger\GeneratePagePreviewMessage;
  17. /**
  18.  * @method \Pimcore\Model\Document\Page\Dao getDao()
  19.  */
  20. class Page extends PageSnippet
  21. {
  22.     /**
  23.      * Contains the title of the page (meta-title)
  24.      *
  25.      * @internal
  26.      *
  27.      * @var string
  28.      */
  29.     protected string $title '';
  30.     /**
  31.      * Contains the description of the page (meta-description)
  32.      *
  33.      * @internal
  34.      *
  35.      * @var string
  36.      */
  37.     protected string $description '';
  38.     /**
  39.      * {@inheritdoc}
  40.      */
  41.     protected string $type 'page';
  42.     /**
  43.      * @internal
  44.      *
  45.      * @var string|null
  46.      */
  47.     protected ?string $prettyUrl null;
  48.     public function getDescription(): string
  49.     {
  50.         return $this->description;
  51.     }
  52.     public function getTitle(): string
  53.     {
  54.         return \Pimcore\Tool\Text::removeLineBreaks($this->title);
  55.     }
  56.     public function setDescription(string $description): static
  57.     {
  58.         $this->description str_replace("\n"' '$description);
  59.         return $this;
  60.     }
  61.     public function setTitle(string $title): static
  62.     {
  63.         $this->title $title;
  64.         return $this;
  65.     }
  66.     public function getFullPath(bool $force false): string
  67.     {
  68.         $path parent::getFullPath($force);
  69.         // do not use pretty url's when in admin, the current document is wrapped by a hardlink or this document isn't in the current site
  70.         if (!\Pimcore::inAdmin() && !($this instanceof Hardlink\Wrapper\WrapperInterface) && \Pimcore\Tool\Frontend::isDocumentInCurrentSite($this)) {
  71.             // check for a pretty url
  72.             $prettyUrl $this->getPrettyUrl();
  73.             if (!empty($prettyUrl) && strlen($prettyUrl) > 1) {
  74.                 return $prettyUrl;
  75.             }
  76.         }
  77.         return $path;
  78.     }
  79.     public function setPrettyUrl(?string $prettyUrl): static
  80.     {
  81.         if (!$prettyUrl) {
  82.             $this->prettyUrl null;
  83.         } else {
  84.             $this->prettyUrl '/' trim($prettyUrl' /');
  85.             if (strlen($this->prettyUrl) < 2) {
  86.                 $this->prettyUrl null;
  87.             }
  88.         }
  89.         return $this;
  90.     }
  91.     public function getPrettyUrl(): ?string
  92.     {
  93.         return $this->prettyUrl;
  94.     }
  95.     public function getPreviewImageFilesystemPath(): string
  96.     {
  97.         return PIMCORE_SYSTEM_TEMP_DIRECTORY '/document-page-previews/document-page-screenshot-' $this->getId() . '@2x.jpg';
  98.     }
  99.     public function save(array $parameters = []): static
  100.     {
  101.         $page parent::save($parameters);
  102.         // Dispatch page preview message, if preview is enabled.
  103.         $documentsConfig \Pimcore\Config::getSystemConfiguration('documents');
  104.         if ($documentsConfig['generate_preview'] ?? false) {
  105.             \Pimcore::getContainer()->get('messenger.bus.pimcore-core')->dispatch(
  106.                 new GeneratePagePreviewMessage($this->getId(), \Pimcore\Tool::getHostUrl())
  107.             );
  108.         }
  109.         return $page;
  110.     }
  111. }