vendor/pimcore/pimcore/models/Document/Editable/Date.php line 24

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 Carbon\Carbon;
  16. use Pimcore\Model;
  17. /**
  18.  * @method \Pimcore\Model\Document\Editable\Dao getDao()
  19.  */
  20. class Date extends Model\Document\Editable implements EditmodeDataInterface
  21. {
  22.     /**
  23.      * Contains the date
  24.      *
  25.      * @internal
  26.      *
  27.      * @var Carbon|null
  28.      */
  29.     protected $date;
  30.     /**
  31.      * {@inheritdoc}
  32.      */
  33.     public function getType()
  34.     {
  35.         return 'date';
  36.     }
  37.     /**
  38.      * {@inheritdoc}
  39.      */
  40.     public function getData()
  41.     {
  42.         return $this->date;
  43.     }
  44.     /**
  45.      * @return Carbon|null
  46.      */
  47.     public function getDate()
  48.     {
  49.         return $this->getData();
  50.     }
  51.     /**
  52.      * {@inheritdoc}
  53.      */
  54.     public function getDataEditmode() /** : mixed */
  55.     {
  56.         if ($this->date) {
  57.             return $this->date->getTimestamp();
  58.         }
  59.         return null;
  60.     }
  61.     /**
  62.      * {@inheritdoc}
  63.      */
  64.     public function frontend()
  65.     {
  66.         if ($this->date instanceof Carbon) {
  67.             if (isset($this->config['outputFormat']) && $this->config['outputFormat']) {
  68.                 return $this->date->formatLocalized($this->config['outputFormat']);
  69.             } else {
  70.                 if (isset($this->config['format']) && $this->config['format']) {
  71.                     $format $this->config['format'];
  72.                 } else {
  73.                     $format 'Y-m-d\TH:i:sO'// ISO8601
  74.                 }
  75.                 return $this->date->format($format);
  76.             }
  77.         }
  78.     }
  79.     /**
  80.      * {@inheritdoc}
  81.      */
  82.     public function getDataForResource()
  83.     {
  84.         if ($this->date) {
  85.             return $this->date->getTimestamp();
  86.         }
  87.         return null;
  88.     }
  89.     /**
  90.      * {@inheritdoc}
  91.      */
  92.     public function setDataFromResource($data)
  93.     {
  94.         if ($data) {
  95.             $this->setDateFromTimestamp($data);
  96.         }
  97.         return $this;
  98.     }
  99.     /**
  100.      * {@inheritdoc}
  101.      */
  102.     public function setDataFromEditmode($data)
  103.     {
  104.         if (strlen($data) > 5) {
  105.             $timestamp strtotime($data);
  106.             $this->setDateFromTimestamp($timestamp);
  107.         }
  108.         return $this;
  109.     }
  110.     /**
  111.      * {@inheritdoc}
  112.      */
  113.     public function isEmpty()
  114.     {
  115.         if ($this->date) {
  116.             return false;
  117.         }
  118.         return true;
  119.     }
  120.     /**
  121.      * @param int $timestamp
  122.      */
  123.     private function setDateFromTimestamp($timestamp)
  124.     {
  125.         $this->date = new Carbon();
  126.         $this->date->setTimestamp($timestamp);
  127.     }
  128. }