![]() 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/Model/ResourceModel/Customer/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Customer\Model\ResourceModel\Customer; /** * Class Relation */ class Relation implements \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationInterface { /** * Save relations for Customer * * @param \Magento\Framework\Model\AbstractModel $customer * @return void * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function processRelation(\Magento\Framework\Model\AbstractModel $customer) { $defaultBillingId = $customer->getData('default_billing'); $defaultShippingId = $customer->getData('default_shipping'); if (!$customer->getData('ignore_validation_flag')) { /** @var \Magento\Customer\Model\Address $address */ foreach ($customer->getAddresses() as $address) { if ($address->getData('_deleted')) { if ($address->getId() == $defaultBillingId) { $customer->setData('default_billing', null); } if ($address->getId() == $defaultShippingId) { $customer->setData('default_shipping', null); } $removedAddressId = $address->getId(); $address->delete(); // Remove deleted address from customer address collection $customer->getAddressesCollection()->removeItemByKey($removedAddressId); } else { $address->setParentId( $customer->getId() )->setStoreId( $customer->getStoreId() )->setIsCustomerSaveTransaction( true )->save(); if (($address->getIsPrimaryBilling() || $address->getIsDefaultBilling()) && $address->getId() != $defaultBillingId ) { $customer->setData('default_billing', $address->getId()); } if (($address->getIsPrimaryShipping() || $address->getIsDefaultShipping()) && $address->getId() != $defaultShippingId ) { $customer->setData('default_shipping', $address->getId()); } } } } $changedAddresses = []; $changedAddresses['default_billing'] = $customer->getData('default_billing'); $changedAddresses['default_shipping'] = $customer->getData('default_shipping'); $customer->getResource()->getConnection()->update( $customer->getResource()->getTable('customer_entity'), $changedAddresses, $customer->getResource()->getConnection()->quoteInto('entity_id = ?', $customer->getId()) ); } }