![]() 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-sales/Block/Adminhtml/Order/View/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Sales\Block\Adminhtml\Order\View; use Magento\Eav\Model\AttributeDataFactory; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Sales\Model\Order\Address; /** * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @since 100.0.2 */ class Info extends \Magento\Sales\Block\Adminhtml\Order\AbstractOrder { /** * Customer service * * @var \Magento\Customer\Api\CustomerMetadataInterface */ protected $metadata; /** * Group service * * @var \Magento\Customer\Api\GroupRepositoryInterface */ protected $groupRepository; /** * Metadata element factory * * @var \Magento\Customer\Model\Metadata\ElementFactory */ protected $_metadataElementFactory; /** * @var Address\Renderer */ protected $addressRenderer; /** * Constructor * * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Framework\Registry $registry * @param \Magento\Sales\Helper\Admin $adminHelper * @param \Magento\Customer\Api\GroupRepositoryInterface $groupRepository * @param \Magento\Customer\Api\CustomerMetadataInterface $metadata * @param \Magento\Customer\Model\Metadata\ElementFactory $elementFactory * @param \Magento\Sales\Model\Order\Address\Renderer $addressRenderer * @param array $data */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Framework\Registry $registry, \Magento\Sales\Helper\Admin $adminHelper, \Magento\Customer\Api\GroupRepositoryInterface $groupRepository, \Magento\Customer\Api\CustomerMetadataInterface $metadata, \Magento\Customer\Model\Metadata\ElementFactory $elementFactory, \Magento\Sales\Model\Order\Address\Renderer $addressRenderer, array $data = [] ) { $this->groupRepository = $groupRepository; $this->metadata = $metadata; $this->_metadataElementFactory = $elementFactory; $this->addressRenderer = $addressRenderer; parent::__construct($context, $registry, $adminHelper, $data); } /** * Retrieve required options from parent * * @throws \Magento\Framework\Exception\LocalizedException * @return void */ protected function _beforeToHtml() { if (!$this->getParentBlock()) { throw new \Magento\Framework\Exception\LocalizedException( __('Please correct the parent block for this block.') ); } $this->setOrder($this->getParentBlock()->getOrder()); foreach ($this->getParentBlock()->getOrderInfoData() as $key => $value) { $this->setDataUsingMethod($key, $value); } parent::_beforeToHtml(); } /** * Get order store name * * @return null|string */ public function getOrderStoreName() { if ($this->getOrder()) { $storeId = $this->getOrder()->getStoreId(); if ($storeId === null) { $deleted = __(' [deleted]'); return nl2br($this->getOrder()->getStoreName()) . $deleted; } $store = $this->_storeManager->getStore($storeId); $name = [$store->getWebsite()->getName(), $store->getGroup()->getName(), $store->getName()]; return implode('<br/>', $name); } return null; } /** * Return name of the customer group. * * @return string */ public function getCustomerGroupName() { if ($this->getOrder()) { $customerGroupId = $this->getOrder()->getCustomerGroupId(); try { if ($customerGroupId !== null) { return $this->groupRepository->getById($customerGroupId)->getCode(); } } catch (NoSuchEntityException $e) { return ''; } } return ''; } /** * Get URL to edit the customer. * * @return string */ public function getCustomerViewUrl() { if ($this->getOrder()->getCustomerIsGuest() || !$this->getOrder()->getCustomerId()) { return ''; } return $this->getUrl('customer/index/edit', ['id' => $this->getOrder()->getCustomerId()]); } /** * Get order view URL. * * @param int $orderId * @return string */ public function getViewUrl($orderId) { return $this->getUrl('sales/order/view', ['order_id' => $orderId]); } /** * Find sort order for account data * Sort Order used as array key * * @param array $data * @param int $sortOrder * @return int */ protected function _prepareAccountDataSortOrder(array $data, $sortOrder) { if (isset($data[$sortOrder])) { return $this->_prepareAccountDataSortOrder($data, $sortOrder + 1); } return $sortOrder; } /** * Return array of additional account data * Value is option style array * * @return array */ public function getCustomerAccountData() { $accountData = []; $entityType = 'customer'; /* @var \Magento\Customer\Api\Data\AttributeMetadataInterface $attribute */ foreach ($this->metadata->getAllAttributesMetadata($entityType) as $attribute) { if (!$attribute->isVisible() || $attribute->isSystem()) { continue; } $orderKey = sprintf('customer_%s', $attribute->getAttributeCode()); $orderValue = $this->getOrder()->getData($orderKey); if ($orderValue != '') { $metadataElement = $this->_metadataElementFactory->create($attribute, $orderValue, $entityType); $value = $metadataElement->outputValue(AttributeDataFactory::OUTPUT_FORMAT_HTML); $sortOrder = $attribute->getSortOrder() + $attribute->isUserDefined() ? 200 : 0; $sortOrder = $this->_prepareAccountDataSortOrder($accountData, $sortOrder); $accountData[$sortOrder] = [ 'label' => $attribute->getFrontendLabel(), 'value' => $this->escapeHtml($value, ['br']), ]; } } ksort($accountData, SORT_NUMERIC); return $accountData; } /** * Get link to edit order address page * * @param \Magento\Sales\Model\Order\Address $address * @param string $label * @return string */ public function getAddressEditLink($address, $label = '') { if ($this->_authorization->isAllowed('Magento_Sales::actions_edit')) { if (empty($label)) { $label = __('Edit'); } $url = $this->getUrl('sales/order/address', ['address_id' => $address->getId()]); return '<a href="' . $this->escapeUrl($url) . '">' . $this->escapeHtml($label) . '</a>'; } return ''; } /** * Whether Customer IP address should be displayed on sales documents * * @return bool */ public function shouldDisplayCustomerIp() { return !$this->_scopeConfig->isSetFlag( 'sales/general/hide_customer_ip', \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $this->getOrder()->getStoreId() ); } /** * Check if is single store mode * * @return bool */ public function isSingleStoreMode() { return $this->_storeManager->isSingleStoreMode(); } /** * Get object created at date affected with object store timezone * * @param mixed $store * @param string $createdAt * @return \DateTime */ public function getCreatedAtStoreDate($store, $createdAt) { return $this->_localeDate->scopeDate($store, $createdAt, true); } /** * Get timezone for store * * @param mixed $store * @return string */ public function getTimezoneForStore($store) { return $this->_localeDate->getConfigTimezone( \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $store->getCode() ); } /** * Get object created at date * * @param string $createdAt * @return \DateTime */ public function getOrderAdminDate($createdAt) { return $this->_localeDate->date(new \DateTime($createdAt)); } /** * Returns string with formatted address * * @param Address $address * @return null|string */ public function getFormattedAddress(Address $address) { return $this->addressRenderer->format($address, 'html'); } /** * @inheritdoc * @since 101.0.0 */ public function getChildHtml($alias = '', $useCache = true) { $layout = $this->getLayout(); if ($alias || !$layout) { return parent::getChildHtml($alias, $useCache); } $childNames = $layout->getChildNames($this->getNameInLayout()); $outputChildNames = array_diff($childNames, ['extra_customer_info']); $out = ''; foreach ($outputChildNames as $childName) { $out .= $layout->renderElement($childName, $useCache); } return $out; } }