From c97aeab7d2d72e023f26bb19a66fce8d2be47b58 Mon Sep 17 00:00:00 2001 From: kiat ng Date: Tue, 6 Apr 2021 10:06:16 +0800 Subject: [PATCH] Fixed incorrect datetime in block. --- .../Block/Customer/Edit/Tab/View.php | 17 +++++------ app/code/core/Mage/Core/Block/Abstract.php | 5 ++-- app/code/core/Mage/Core/Helper/Data.php | 28 ++++++++++--------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/View.php b/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/View.php index be686dc4eda..0f48d398283 100644 --- a/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/View.php +++ b/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/View.php @@ -78,11 +78,9 @@ public function getCustomerLog() */ public function getCreateDate() { - if ( ! $this->getCustomer()->getCreatedAt()) { - return null; - } - return $this->_getCoreHelper()->formatDate($this->getCustomer()->getCreatedAt(), - Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); + return ($date = $this->getCustomer()->getCreatedAt()) + ? $this->formatDate($date, Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true, false) + : null; } public function getStoreCreateDate() @@ -111,11 +109,9 @@ public function getStoreCreateDateTimezone() */ public function getLastLoginDate() { - $date = $this->getCustomerLog()->getLoginAtTimestamp(); - if ($date) { - return Mage::helper('core')->formatDate($date, Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); - } - return Mage::helper('customer')->__('Never'); + return ($date = $this->getCustomerLog()->getLoginAtTimestamp()) + ? $this->formatDate($date, Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true, false) + : Mage::helper('customer')->__('Never'); } public function getStoreLastLoginDate() @@ -218,6 +214,7 @@ public function isHidden() } /** + * @deprecated * Return instance of core helper * * @return Mage_Core_Helper_Data diff --git a/app/code/core/Mage/Core/Block/Abstract.php b/app/code/core/Mage/Core/Block/Abstract.php index 606497a9b80..35798564a26 100644 --- a/app/code/core/Mage/Core/Block/Abstract.php +++ b/app/code/core/Mage/Core/Block/Abstract.php @@ -1128,11 +1128,12 @@ public function helper($name) * @param string $date * @param string $format * @param bool $showTime + * @param bool $useTimezone * @return string */ - public function formatDate($date = null, $format = Mage_Core_Model_Locale::FORMAT_TYPE_SHORT, $showTime = false) + public function formatDate($date = null, $format = Mage_Core_Model_Locale::FORMAT_TYPE_SHORT, $showTime = false, $useTimezone = true) { - return $this->helper('core')->formatDate($date, $format, $showTime); + return $this->helper('core')->formatDate($date, $format, $showTime, $useTimezone); } /** diff --git a/app/code/core/Mage/Core/Helper/Data.php b/app/code/core/Mage/Core/Helper/Data.php index 538287948b3..e3d62ad4e8a 100644 --- a/app/code/core/Mage/Core/Helper/Data.php +++ b/app/code/core/Mage/Core/Helper/Data.php @@ -155,30 +155,32 @@ public function formatPrice($price, $includeContainer = true) /** * Format date using current locale options and time zone. * - * @param string|Zend_Date|null $date + * @param string|Zend_Date|null $date If empty, return current datetime. * @param string $format See Mage_Core_Model_Locale::FORMAT_TYPE_* constants * @param bool $showTime Whether to include time + * @param bool $useTimezone Convert to local datetime? * @return string */ - public function formatDate($date = null, $format = Mage_Core_Model_Locale::FORMAT_TYPE_SHORT, $showTime = false) + public function formatDate($date = null, $format = Mage_Core_Model_Locale::FORMAT_TYPE_SHORT, $showTime = false, $useTimezone = true) { if (!in_array($format, $this->_allowedFormats, true)) { return $date; } - if (!($date instanceof Zend_Date) && $date && !strtotime($date)) { - return ''; - } - if (is_null($date)) { - $date = Mage::app()->getLocale()->date(Mage::getSingleton('core/date')->gmtTimestamp(), null, null); + if (empty($date)) { + $date = Mage::app()->getLocale()->date(Mage::getSingleton('core/date')->gmtTimestamp(), null, null, $useTimezone); + } elseif (is_int($date)) { + $date = Mage::app()->getLocale()->date($date, null, null, $useTimezone); } elseif (!$date instanceof Zend_Date) { - $date = Mage::app()->getLocale()->date(strtotime($date), null, null); + if ($time = strtotime($date)) { + $date = Mage::app()->getLocale()->date($time, null, null, $useTimezone); + } else { + return ''; + } } - if ($showTime) { - $format = Mage::app()->getLocale()->getDateTimeFormat($format); - } else { - $format = Mage::app()->getLocale()->getDateFormat($format); - } + $format = $showTime + ? Mage::app()->getLocale()->getDateTimeFormat($format) + : Mage::app()->getLocale()->getDateFormat($format); return $date->toString($format); }