Magento 1.9 Invalid Client Dates and Last Login Dates

I am running Magento v.1.9.0.1, and I am facing a problem with the dates displayed when editing the client through the administrative area. For instance,

Last Login: February 11, 7791 4:23:48 μ.μ.
Last Entrance (Europe / Istanbul): February 09, 2015 3:16:31 μ.μ.
The account was created on: September 02, 2015 4:16:11 μ.μ.

Customer registered on February 9, 2015. I searched and found topics about other versions of Magento that say that for some dates Magento changes the dates, hence the difference between the actual creation date (02/09/2015) and the post creation date (02/09/2015).

I could not find anything about version 1.9 or anything that was reported for the last entry (7791!).

Is there a fix for this problem?

Thank you for your time.

+6
source share
3 answers

Faced the same problem in Magento 1.8.1 and is used below to determine the account creation date and the last login date. Because some of them, like Magento, are being converted every day and month at the moment in the client editing section. Path: app\code\core\Mage\Adminhtml\Block\Customer\Edit\Tab\View.php Override the methods described above:

  public function getCreateDate() { $cutomerId = $this->getRequest()->getParam('id'); $connection = Mage::getSingleton('core/resource')->getConnection('core_read'); $select = $connection->select() ->from('customer_entity', array('created_at')) ->where('entity_id=?',$cutomerId); $rowArray = $connection->fetchRow($select); return $this->_getCoreHelper()->formatDate($rowArray['created_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); } public function getStoreCreateDate() { $cutomerId = $this->getRequest()->getParam('id'); $connection = Mage::getSingleton('core/resource')->getConnection('core_read'); $select = $connection->select() ->from('customer_entity', array('created_at')) ->where('entity_id=?',$cutomerId); $rowArray = $connection->fetchRow($select); return $this->_getCoreHelper()->formatDate($rowArray['created_at'], Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); } public function getLastLoginDate() { if ($date = $this->getCustomerLog()->getLoginAtTimestamp()) { $date = Mage::app()->getLocale()->storeDate( $this->getCustomer()->getStoreId(), $date, true ); return $this->formatDate($date, Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); } return Mage::helper('customer')->__('Never'); } 
+1
source

I also ran into the same problem for quite some time until I found a solution http://www.customerparadigm.com/magento-bug-magento-customer-create-date-juxtaposition/

Summary of files in the Magento Extension to solve the Magento date switching problem: Created.php: Application / code / local / CustomerParadigm / Datefix / Model / Entity / Attribute / Backend / Time / Created.php

  <?php /** * Magento * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@magento.com so we can send you a copy immediately. * // * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade Magento to newer * versions in the future. If you wish to customize Magento for your * needs please refer to http://www.magento.com for more information. * * @category Mage * @package Mage_Eav * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ /** * Entity/Attribute/Model - attribute backend default * * @category Mage * @package Mage_Eav * @author Magento Core Team < core@magentocommerce.com > */ class CustomerParadigm_Datefix_Model_Entity_Attribute_Backend_Time_Created extends Mage_Eav_Model_Entity_Attribute_Backend_Time_Created { /** * Returns date format if it matches a certain mask. * @param $date * @return null|string */ /* This shouldn't be needed for the datetime switch bug fix. Removing for testing. protected function _getFormat($date) { if (is_string($date) && preg_match('#^\d{4,4}-\d{2,2}-\d{2,2} \d{2,2}:\d{2,2}:\d{2,2}$#', $date)) { return 'yyyy-MM-dd HH:mm:ss'; } return null; } */ /** * Set created date * Set created date in UTC time zone * * @param Mage_Core_Model_Object $object * @return Mage_Eav_Model_Entity_Attribute_Backend_Time_Created */ public function beforeSave($object) { $attributeCode = $this->getAttribute()->getAttributeCode(); $date = $object->getData($attributeCode); if (is_null($date)) { if ($object->isObjectNew()) { $object->setData($attributeCode, Varien_Date::now()); } } else { // Date switch fix $date = strtotime($date); // convert to UTC $zendDate = Mage::app()->getLocale()->utcDate(null, $date, true); $object->setData($attributeCode, $zendDate->getIso()); } return $this; } /** * Convert create date from UTC to current store time zone * * @param Varien_Object $object * @return Mage_Eav_Model_Entity_Attribute_Backend_Time_Created */ public function afterLoad($object) { $attributeCode = $this->getAttribute()->getAttributeCode(); $date = $object->getData($attributeCode); // Date switch fix if (!is_null($date)) { $date = strtotime($date); } $zendDate = Mage::app()->getLocale()->storeDate(null, $date, true); $object->setData($attributeCode, $zendDate->getIso()); parent::afterLoad($object); return $this; } } 

Application / code / local / CustomerParadigm / Datefix / etc. /config.xml

 <config> <global> <models> <eav> <rewrite> <entity_attribute_backend_time_created>CustomerParadigm_Datefix_Model_Entity_Attribute_Backend_Time_Created</entity_attribute_backend_time_created> </rewrite> </eav> </models> </global> </config> 

/app/etc/module/CustomerParadigm_Datefix.xml

 <?xml version="1.0″?> <config> <modules> <CustomerParadigm_Datefix> <active>true</active> <codePool>local</codePool> </CustomerParadigm_Datefix> </modules> </config> 
+1
source

I don't have a great reputation to comment, therefore, specifying the answer:

@Digisha: You mentioned this for getLastLoginDate()

 public function getLastLoginDate() { if ($date = $this->getCustomerLog()->getLoginAtTimestamp()) { $date = Mage::app()->getLocale()->storeDate( $this->getCustomer()->getStoreId(), $date, true ); return $this->formatDate($date, Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true); } return Mage::helper('customer')->__('Never'); } 

I just want to ask if this is the right parameter for the if condition:

 if ($date = $this->getCustomerLog()->getLoginAtTimestamp()) 

I don’t think so, you are inspecting, and then how is it right?

0
source

Source: https://habr.com/ru/post/982322/


All Articles