vendor/pimcore/pimcore/models/Document/Editable/Embed.php line 23

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 Commercial License (PCL)
  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 PCL
  13.  */
  14. namespace Pimcore\Model\Document\Editable;
  15. use Pimcore\Model;
  16. /**
  17.  * @method \Pimcore\Model\Document\Editable\Dao getDao()
  18.  */
  19. class Embed extends Model\Document\Editable
  20. {
  21.     /**
  22.      * @internal
  23.      *
  24.      * @var string
  25.      */
  26.     protected $url;
  27.     /**
  28.      * {@inheritdoc}
  29.      */
  30.     public function getType()
  31.     {
  32.         return 'embed';
  33.     }
  34.     /**
  35.      * {@inheritdoc}
  36.      */
  37.     public function getData()
  38.     {
  39.         return [
  40.             'url' => $this->url,
  41.         ];
  42.     }
  43.     /**
  44.      * @return string
  45.      */
  46.     public function getUrl()
  47.     {
  48.         return $this->url;
  49.     }
  50.     /**
  51.      * {@inheritdoc}
  52.      */
  53.     public function getDataForResource()
  54.     {
  55.         return [
  56.             'url' => $this->url,
  57.         ];
  58.     }
  59.     /**
  60.      * {@inheritdoc}
  61.      */
  62.     public function frontend()
  63.     {
  64.         if ($this->url) {
  65.             $config $this->getConfig();
  66.             if (!isset($config['params'])) {
  67.                 $config['params'] = [];
  68.             }
  69.             foreach (['width''height'] as $property) {
  70.                 if (isset($config[$property])) {
  71.                     $config['params'][$property] = $config[$property];
  72.                 }
  73.             }
  74.             $cacheKey 'doc_embed_' crc32(serialize([$this->url$config]));
  75.             if (!$html \Pimcore\Cache::load($cacheKey)) {
  76.                 $embera = new \Embera\Embera($config);
  77.                 $html $embera->autoEmbed($this->url);
  78.                 \Pimcore\Cache::save($html$cacheKey, ['embed'], 864001true);
  79.             }
  80.             return $html;
  81.         }
  82.         return '';
  83.     }
  84.     /**
  85.      * {@inheritdoc}
  86.      */
  87.     public function admin()
  88.     {
  89.         $html parent::admin();
  90.         // get frontendcode for preview
  91.         // put the video code inside the generic code
  92.         $html str_replace('</div>'$this->frontend() . '</div>'$html);
  93.         return $html;
  94.     }
  95.     /**
  96.      * {@inheritdoc}
  97.      */
  98.     public function setDataFromResource($data)
  99.     {
  100.         if (!empty($data)) {
  101.             $data \Pimcore\Tool\Serialize::unserialize($data);
  102.         }
  103.         $this->url $data['url'];
  104.         return $this;
  105.     }
  106.     /**
  107.      * {@inheritdoc}
  108.      */
  109.     public function setDataFromEditmode($data)
  110.     {
  111.         if ($data['url']) {
  112.             $this->url $data['url'];
  113.         }
  114.         return $this;
  115.     }
  116.     /**
  117.      * {@inheritdoc}
  118.      */
  119.     public function isEmpty()
  120.     {
  121.         if ($this->url) {
  122.             return false;
  123.         }
  124.         return true;
  125.     }
  126. }