![]() 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/Ui/Component/DataProvider/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Customer\Ui\Component\DataProvider; use Exception; use Magento\Customer\Api\CustomerMetadataInterface; use Magento\Customer\Api\Data\OptionInterface; use Magento\Customer\Api\GroupRepositoryInterface; use Magento\Customer\Model\AccountManagement; use Magento\Framework\Api\AttributeValueFactory; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\App\ObjectManager; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Store\Model\ScopeInterface; use Magento\Store\Model\StoreManagerInterface; /** * Class Document * * Set the attribute label and value for UI Component * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Document extends \Magento\Framework\View\Element\UiComponent\DataProvider\Document { /** * @var string */ private static $genderAttributeCode = 'gender'; /** * @var string */ private static $groupAttributeCode = 'group_id'; /** * @var string */ private static $websiteAttributeCode = 'website_id'; /** * @var string */ private static $websiteIdAttributeCode = 'original_website_id'; /** * @var string */ private static $confirmationAttributeCode = 'confirmation'; /** * @var string */ private static $accountLockAttributeCode = 'lock_expires'; /** * @var CustomerMetadataInterface */ private $customerMetadata; /** * @var GroupRepositoryInterface */ private $groupRepository; /** * @var StoreManagerInterface */ private $storeManager; /** * @var ScopeConfigInterface */ private $scopeConfig; /** * Document constructor. * * @param AttributeValueFactory $attributeValueFactory * @param GroupRepositoryInterface $groupRepository * @param CustomerMetadataInterface $customerMetadata * @param StoreManagerInterface $storeManager * @param ScopeConfigInterface $scopeConfig */ public function __construct( AttributeValueFactory $attributeValueFactory, GroupRepositoryInterface $groupRepository, CustomerMetadataInterface $customerMetadata, StoreManagerInterface $storeManager, ScopeConfigInterface $scopeConfig = null ) { parent::__construct($attributeValueFactory); $this->customerMetadata = $customerMetadata; $this->groupRepository = $groupRepository; $this->storeManager = $storeManager; $this->scopeConfig = $scopeConfig ?: ObjectManager::getInstance()->create(ScopeConfigInterface::class); } /** * @inheritdoc */ public function getCustomAttribute($attributeCode) { switch ($attributeCode) { case self::$genderAttributeCode: $this->setGenderValue(); break; case self::$groupAttributeCode: $this->setCustomerGroupValue(); break; case self::$websiteAttributeCode: $this->setWebsiteValue(); break; case self::$confirmationAttributeCode: $this->setConfirmationValue(); break; case self::$accountLockAttributeCode: $this->setAccountLockValue(); break; } return parent::getCustomAttribute($attributeCode); } /** * Update customer gender value. Method set gender label instead of id value * * @return void * @throws \Magento\Framework\Exception\LocalizedException */ private function setGenderValue() { $value = $this->getData(self::$genderAttributeCode); if (!$value) { $this->setCustomAttribute(self::$genderAttributeCode, 'N/A'); return; } try { $attributeMetadata = $this->customerMetadata->getAttributeMetadata(self::$genderAttributeCode); $options = $attributeMetadata->getOptions(); array_walk( $options, function (OptionInterface $option) use ($value) { if ($option->getValue() == $value) { $this->setCustomAttribute(self::$genderAttributeCode, $option->getLabel()); } } ); } catch (NoSuchEntityException $e) { $this->setCustomAttribute(self::$genderAttributeCode, 'N/A'); } } /** * Update customer group value. Method set group code instead id value * * @return void * @throws \Magento\Framework\Exception\LocalizedException */ private function setCustomerGroupValue() { $value = $this->getData(self::$groupAttributeCode); try { $group = $this->groupRepository->getById($value); $this->setCustomAttribute(self::$groupAttributeCode, $group->getCode()); } catch (NoSuchEntityException $e) { $this->setCustomAttribute(self::$groupAttributeCode, 'N/A'); } } /** * Update website value. Method set website name instead id value * * @return void */ private function setWebsiteValue() { $value = $this->getData(self::$websiteAttributeCode); $list = $this->storeManager->getWebsites(); $this->setCustomAttribute(self::$websiteAttributeCode, $list[$value]->getName()); $this->setCustomAttribute(self::$websiteIdAttributeCode, $value); } /** * Update confirmation value. Method set confirmation text value to match what is shown in grid * * @return void */ private function setConfirmationValue() { $value = $this->getData(self::$confirmationAttributeCode); $websiteId = $this->getData(self::$websiteIdAttributeCode) ?: $this->getData(self::$websiteAttributeCode); $isConfirmRequired = $this->scopeConfig->isSetFlag( AccountManagement::XML_PATH_IS_CONFIRM, ScopeInterface::SCOPE_WEBSITES, $websiteId ); $valueText = __('Confirmation Not Required'); if ($isConfirmRequired) { $valueText = $value === null ? __('Confirmed') : __('Confirmation Required'); } $this->setCustomAttribute(self::$confirmationAttributeCode, $valueText); } /** * Update lock expires value. Method set account lock text value to match what is shown in grid * * @return void * @throws Exception */ private function setAccountLockValue() { $value = $this->getDataByPath(self::$accountLockAttributeCode); $valueText = __('Unlocked'); if ($value !== null) { $lockExpires = new \DateTime($value); if ($lockExpires > new \DateTime()) { $valueText = __('Locked'); } } $this->setCustomAttribute(self::$accountLockAttributeCode, $valueText); } }