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