vendor/pimcore/pimcore/models/Document/Editable/Wysiwyg.php line 26

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.  * @category   Pimcore
  12.  * @package    Document
  13.  *
  14.  * @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  15.  * @license    http://www.pimcore.org/license     GPLv3 and PEL
  16.  */
  17. namespace Pimcore\Model\Document\Editable;
  18. use Pimcore\Model;
  19. use Pimcore\Tool\Text;
  20. /**
  21.  * @method \Pimcore\Model\Document\Editable\Dao getDao()
  22.  */
  23. class Wysiwyg extends Model\Document\Editable
  24. {
  25.     /**
  26.      * Contains the text
  27.      *
  28.      * @var string
  29.      */
  30.     public $text;
  31.     /**
  32.      * @see EditableInterface::getType
  33.      *
  34.      * @return string
  35.      */
  36.     public function getType()
  37.     {
  38.         return 'wysiwyg';
  39.     }
  40.     /**
  41.      * @see EditableInterface::getData
  42.      *
  43.      * @return mixed
  44.      */
  45.     public function getData()
  46.     {
  47.         return $this->text;
  48.     }
  49.     /**
  50.      * Converts the data so it's suitable for the editmode
  51.      *
  52.      * @return mixed
  53.      */
  54.     public function getDataEditmode()
  55.     {
  56.         $document $this->getDocument();
  57.         return Text::wysiwygText($this->text, [
  58.             'document' => $document,
  59.             'context' => $this,
  60.         ]);
  61.     }
  62.     /**
  63.      * @see EditableInterface::frontend
  64.      *
  65.      * @return string
  66.      */
  67.     public function frontend()
  68.     {
  69.         $document $this->getDocument();
  70.         return Text::wysiwygText($this->text, [
  71.                 'document' => $document,
  72.                 'context' => $this,
  73.             ]);
  74.     }
  75.     /**
  76.      * @see EditableInterface::setDataFromResource
  77.      *
  78.      * @param string $data
  79.      *
  80.      * @return $this
  81.      */
  82.     public function setDataFromResource($data)
  83.     {
  84.         $this->text $data;
  85.         return $this;
  86.     }
  87.     /**
  88.      * @see EditableInterface::setDataFromEditmode
  89.      *
  90.      * @param string $data
  91.      *
  92.      * @return $this
  93.      */
  94.     public function setDataFromEditmode($data)
  95.     {
  96.         $this->text $data;
  97.         return $this;
  98.     }
  99.     /**
  100.      * @return bool
  101.      */
  102.     public function isEmpty()
  103.     {
  104.         return empty($this->text);
  105.     }
  106.     /**
  107.      * @deprecated
  108.      *
  109.      * @param Model\Webservice\Data\Document\Element $wsElement
  110.      * @param Model\Document\PageSnippet $document
  111.      * @param array $params
  112.      * @param Model\Webservice\IdMapperInterface|null $idMapper
  113.      *
  114.      * @throws \Exception
  115.      */
  116.     public function getFromWebserviceImport($wsElement$document null$params = [], $idMapper null)
  117.     {
  118.         $data $this->sanitizeWebserviceData($wsElement->value);
  119.         if ($data->text === null or is_string($data->text)) {
  120.             $this->text $data->text;
  121.         } else {
  122.             throw new \Exception('cannot get values from web service import - invalid data');
  123.         }
  124.     }
  125.     /**
  126.      * @return array
  127.      */
  128.     public function resolveDependencies()
  129.     {
  130.         return Text::getDependenciesOfWysiwygText($this->text);
  131.     }
  132.     /**
  133.      * @param Model\Document\PageSnippet $ownerDocument
  134.      * @param array $blockedTags
  135.      *
  136.      * @return array
  137.      */
  138.     public function getCacheTags($ownerDocument$blockedTags = [])
  139.     {
  140.         return Text::getCacheTagsOfWysiwygText($this->text$blockedTags);
  141.     }
  142.     /**
  143.      * Rewrites id from source to target, $idMapping contains
  144.      * array(
  145.      *  "document" => array(
  146.      *      SOURCE_ID => TARGET_ID,
  147.      *      SOURCE_ID => TARGET_ID
  148.      *  ),
  149.      *  "object" => array(...),
  150.      *  "asset" => array(...)
  151.      * )
  152.      *
  153.      * @param array $idMapping
  154.      *
  155.      * @return string|void
  156.      *
  157.      * @todo: no rewriteIds method ever returns anything, why this one?
  158.      */
  159.     public function rewriteIds($idMapping)
  160.     {
  161.         $html str_get_html($this->text);
  162.         if (!$html) {
  163.             return $this->text;
  164.         }
  165.         $s $html->find('a[pimcore_id],img[pimcore_id]');
  166.         if ($s) {
  167.             foreach ($s as $el) {
  168.                 if ($el->href || $el->src) {
  169.                     $type $el->pimcore_type;
  170.                     $id = (int) $el->pimcore_id;
  171.                     if (array_key_exists($type$idMapping)) {
  172.                         if (array_key_exists($id$idMapping[$type])) {
  173.                             $el->outertext str_replace('="' $el->pimcore_id '"''="' $idMapping[$type][$id] . '"'$el->outertext);
  174.                         }
  175.                     }
  176.                 }
  177.             }
  178.         }
  179.         $this->text $html->save();
  180.         $html->clear();
  181.         unset($html);
  182.         return;
  183.     }
  184. }
  185. class_alias(Wysiwyg::class, 'Pimcore\Model\Document\Tag\Wysiwyg');