CollectionTimeLabel.php 1.73 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Analytics\Block\Adminhtml\System\Config;

use Magento\Framework\App\ObjectManager;

/**
 * Provides label with default Time Zone
 */
class CollectionTimeLabel extends \Magento\Config\Block\System\Config\Form\Field
{
    /**
     * @var \Magento\Framework\Locale\ResolverInterface
     */
    private $localeResolver;

    /**
     * @param \Magento\Backend\Block\Template\Context $context
     * @param array $data
     * @param \Magento\Framework\Locale\ResolverInterface|null $localeResolver
     */
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        array $data = [],
        \Magento\Framework\Locale\ResolverInterface $localeResolver = null
    ) {
        $this->localeResolver = $localeResolver ?:
            ObjectManager::getInstance()->get(\Magento\Framework\Locale\ResolverInterface::class);
        parent::__construct($context, $data);
    }

    /**
     * Add current time zone to comment, properly translated according to locale
     *
     * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
     * @return string
     */
    public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
    {
        $timeZoneCode = $this->_localeDate->getConfigTimezone();
        $locale = $this->localeResolver->getLocale();
        $getLongTimeZoneName = \IntlTimeZone::createTimeZone($timeZoneCode)
            ->getDisplayName(false, \IntlTimeZone::DISPLAY_LONG, $locale);
        $element->setData(
            'comment',
            sprintf("%s (%s)", $getLongTimeZoneName, $timeZoneCode)
        );
        return parent::render($element);
    }
}