![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-customer/Block/Adminhtml/Edit/Tab/View/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Customer\Block\Adminhtml\Edit\Tab\View; use Magento\Customer\Api\AccountManagementInterface; use Magento\Customer\Controller\RegistryConstants; use Magento\Customer\Model\Address\Mapper; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Customer\Model\Customer; /** * Adminhtml customer view personal information sales block. * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class PersonalInfo extends \Magento\Backend\Block\Template { /** * Interval in minutes that shows how long customer will be marked 'Online' * since his last activity. Used only if it's impossible to get such setting * from configuration. */ public const DEFAULT_ONLINE_MINUTES_INTERVAL = 15; /** * @var \Magento\Customer\Api\Data\CustomerInterface */ protected $customer; /** * @var \Magento\Customer\Model\Log */ protected $customerLog; /** * @var \Magento\Customer\Model\Logger */ protected $customerLogger; /** * @var \Magento\Customer\Model\CustomerRegistry */ protected $customerRegistry; /** * @var AccountManagementInterface */ protected $accountManagement; /** * Customer group repository * * @var \Magento\Customer\Api\GroupRepositoryInterface */ protected $groupRepository; /** * @var \Magento\Customer\Api\Data\CustomerInterfaceFactory */ protected $customerDataFactory; /** * @var \Magento\Customer\Helper\Address */ protected $addressHelper; /** * @var \Magento\Framework\Stdlib\DateTime */ protected $dateTime; /** * @var \Magento\Framework\Registry */ protected $coreRegistry; /** * @var Mapper */ protected $addressMapper; /** * @var \Magento\Framework\Api\DataObjectHelper */ protected $dataObjectHelper; /** * @param \Magento\Backend\Block\Template\Context $context * @param AccountManagementInterface $accountManagement * @param \Magento\Customer\Api\GroupRepositoryInterface $groupRepository * @param \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerDataFactory * @param \Magento\Customer\Helper\Address $addressHelper * @param \Magento\Framework\Stdlib\DateTime $dateTime * @param \Magento\Framework\Registry $registry * @param Mapper $addressMapper * @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper * @param \Magento\Customer\Model\Logger $customerLogger * @param array $data * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Backend\Block\Template\Context $context, AccountManagementInterface $accountManagement, \Magento\Customer\Api\GroupRepositoryInterface $groupRepository, \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerDataFactory, \Magento\Customer\Helper\Address $addressHelper, \Magento\Framework\Stdlib\DateTime $dateTime, \Magento\Framework\Registry $registry, Mapper $addressMapper, \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, \Magento\Customer\Model\Logger $customerLogger, array $data = [] ) { $this->coreRegistry = $registry; $this->accountManagement = $accountManagement; $this->groupRepository = $groupRepository; $this->customerDataFactory = $customerDataFactory; $this->addressHelper = $addressHelper; $this->dateTime = $dateTime; $this->addressMapper = $addressMapper; $this->dataObjectHelper = $dataObjectHelper; $this->customerLogger = $customerLogger; parent::__construct($context, $data); } /** * Set customer registry * * @param \Magento\Framework\Registry $customerRegistry * @return void * @deprecated 100.1.0 */ public function setCustomerRegistry(\Magento\Customer\Model\CustomerRegistry $customerRegistry) { $this->customerRegistry = $customerRegistry; } /** * Get customer registry * * @return \Magento\Customer\Model\CustomerRegistry * @deprecated 100.1.0 */ public function getCustomerRegistry() { if (!($this->customerRegistry instanceof \Magento\Customer\Model\CustomerRegistry)) { return \Magento\Framework\App\ObjectManager::getInstance()->get( \Magento\Customer\Model\CustomerRegistry::class ); } else { return $this->customerRegistry; } } /** * Retrieve customer object * * @return \Magento\Customer\Api\Data\CustomerInterface */ public function getCustomer() { if (!$this->customer) { $this->customer = $this->customerDataFactory->create(); $data = $this->_backendSession->getCustomerData(); $this->dataObjectHelper->populateWithArray( $this->customer, $data['account'], \Magento\Customer\Api\Data\CustomerInterface::class ); } return $this->customer; } /** * Retrieve customer id * * @return string|null */ public function getCustomerId() { return $this->coreRegistry->registry(RegistryConstants::CURRENT_CUSTOMER_ID); } /** * Retrieves customer log model * * @return \Magento\Customer\Model\Log */ protected function getCustomerLog() { if (!$this->customerLog) { $this->customerLog = $this->customerLogger->get( $this->getCustomer()->getId() ); } return $this->customerLog; } /** * Returns customer's created date in the assigned store * * @return string */ public function getStoreCreateDate() { $createdAt = $this->getCustomer()->getCreatedAt(); try { return $this->formatDate( $createdAt, \IntlDateFormatter::MEDIUM, true, $this->getStoreCreateDateTimezone() ); } catch (\Exception $e) { $this->_logger->critical($e); return ''; } } /** * Retrieve store default timezone from configuration * * @return string */ public function getStoreCreateDateTimezone() { return $this->_scopeConfig->getValue( $this->_localeDate->getDefaultTimezonePath(), \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $this->getCustomer()->getStoreId() ); } /** * Get customer creation date * * @return string */ public function getCreateDate() { return $this->formatDate( $this->getCustomer()->getCreatedAt(), \IntlDateFormatter::MEDIUM, true ); } /** * Check if account is confirmed * * @return \Magento\Framework\Phrase */ public function getIsConfirmedStatus() { $id = $this->getCustomerId(); switch ($this->accountManagement->getConfirmationStatus($id)) { case AccountManagementInterface::ACCOUNT_CONFIRMED: return __('Confirmed'); case AccountManagementInterface::ACCOUNT_CONFIRMATION_REQUIRED: return __('Confirmation Required'); case AccountManagementInterface::ACCOUNT_CONFIRMATION_NOT_REQUIRED: return __('Confirmation Not Required'); } return __('Indeterminate'); } /** * Retrieve store * * @return null|string */ public function getCreatedInStore() { return $this->_storeManager->getStore( $this->getCustomer()->getStoreId() )->getName(); } /** * Retrieve billing address html * * @return \Magento\Framework\Phrase|string */ public function getBillingAddressHtml() { try { $address = $this->accountManagement->getDefaultBillingAddress($this->getCustomer()->getId()); } catch (NoSuchEntityException $e) { return $this->escapeHtml(__('The customer does not have default billing address.')); } if ($address === null) { return $this->escapeHtml(__('The customer does not have default billing address.')); } return $this->addressHelper->getFormatTypeRenderer( 'html' )->renderArray( $this->addressMapper->toFlatArray($address) ); } /** * Retrieve group name * * @return string|null */ public function getGroupName() { $customer = $this->getCustomer(); if ($groupId = $customer->getId() ? $customer->getGroupId() : null) { if ($group = $this->getGroup($groupId)) { return $group->getCode(); } } return null; } /** * Retrieve customer group by id * * @param int $groupId * @return \Magento\Customer\Api\Data\GroupInterface|null */ private function getGroup($groupId) { try { $group = $this->groupRepository->getById($groupId); } catch (NoSuchEntityException $e) { $group = null; } return $group; } /** * Returns timezone of the store to which customer assigned. * * @return string */ public function getStoreLastLoginDateTimezone() { return $this->_scopeConfig->getValue( $this->_localeDate->getDefaultTimezonePath(), \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $this->getCustomer()->getStoreId() ); } /** * Get customer's current status. * * Customer considered 'Offline' in the next cases: * * - customer has never been logged in; * - customer clicked 'Log Out' link\button; * - predefined interval has passed since customer's last activity. * * In all other cases customer considered 'Online'. * * @return \Magento\Framework\Phrase */ public function getCurrentStatus() { $lastLoginTime = $this->getCustomerLog()->getLastLoginAt(); // Customer has never been logged in. if (!$lastLoginTime) { return __('Offline'); } $lastLogoutTime = $this->getCustomerLog()->getLastLogoutAt(); // Customer clicked 'Log Out' link\button. if ($lastLogoutTime && strtotime($lastLogoutTime) > strtotime($lastLoginTime)) { return __('Offline'); } // Predefined interval has passed since customer's last activity. $interval = $this->getOnlineMinutesInterval(); $currentTimestamp = (new \DateTime())->getTimestamp(); $lastVisitTime = $this->getCustomerLog()->getLastVisitAt(); if ($lastVisitTime && $currentTimestamp - strtotime($lastVisitTime) > $interval * 60) { return __('Offline'); } return __('Online'); } /** * Get customer last login date. * * @return \Magento\Framework\Phrase|string */ public function getLastLoginDate() { $date = $this->getCustomerLog()->getLastLoginAt(); if ($date) { return $this->formatDate($date, \IntlDateFormatter::MEDIUM, true); } return __('Never'); } /** * Returns customer last login date in store's timezone. * * @return \Magento\Framework\Phrase|string */ public function getStoreLastLoginDate() { $lastLogin = $this->getCustomerLog()->getLastLoginAt(); $date = $lastLogin !== null ? strtotime($lastLogin) : false; if ($date) { $date = $this->_localeDate->scopeDate($this->getCustomer()->getStoreId(), $date, true); return $this->formatDate($date, \IntlDateFormatter::MEDIUM, true); } return __('Never'); } /** * Returns interval that shows how long customer will be considered 'Online'. * * @return int Interval in minutes */ protected function getOnlineMinutesInterval() { $configValue = $this->_scopeConfig->getValue( 'customer/online_customers/online_minutes_interval', \Magento\Store\Model\ScopeInterface::SCOPE_STORE ); return (int)$configValue > 0 ? (int)$configValue : self::DEFAULT_ONLINE_MINUTES_INTERVAL; } /** * Get customer account lock status * * @return \Magento\Framework\Phrase */ public function getAccountLock() { $customerModel = $this->getCustomerRegistry()->retrieve($this->getCustomerId()); $customerStatus = __('Unlocked'); if ($customerModel->isCustomerLocked()) { $customerStatus = __('Locked'); } return $customerStatus; } }