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
  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.      * Converts the data so it's suitable for the editmode
  52.      *
  53.      * @return int|null
  54.      */
  55.     public function getDataEditmode()
  56.     {
  57.         if ($this->date) {
  58.             return $this->date->getTimestamp();
  59.         }
  60.         return null;
  61.     }
  62.     /**
  63.      * {@inheritdoc}
  64.      */
  65.     public function frontend()
  66.     {
  67.         $format null;
  68.         if (isset($this->config['outputFormat']) && $this->config['outputFormat']) {
  69.             $format $this->config['outputFormat'];
  70.         } elseif (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.         if ($this->date instanceof \DateTimeInterface) {
  76.             return $this->date->formatLocalized($format);
  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\Carbon();
  126.         $this->date->setTimestamp($timestamp);
  127.     }
  128. }