Server IP : 192.158.238.246 / Your IP : 3.133.117.5 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/cwd/plugins/give/src/DonorDashboards/Pipeline/Stages/ |
Upload File : |
<?php namespace Give\DonorDashboards\Pipeline\Stages; /** * @since 2.10.0 */ class UpdateDonorAddresses implements Stage { protected $data; protected $donor; public function __invoke($payload) { $this->data = $payload['data']; $this->donor = $payload['donor']; $this->updateAddressesInMetaDB(); return $payload; } /** * Updates donor address fields found in meta database * * @since 2.10.0 * @return void * */ protected function updateAddressesInMetaDB() { $primaryAddress = isset($this->data['primaryAddress']) ? $this->data['primaryAddress'] : null; $additionalAddresses = isset($this->data['additionalAddresses']) ? $this->data['additionalAddresses'] : []; /** * If a primary address is provided, update billing address with id '0' */ if ( ! empty($primaryAddress)) { $this->donor->add_address('billing_0', (array)$primaryAddress); } /** * If additional addresses are provided, add them to the donor meta table */ if ( ! empty($additionalAddresses)) { foreach ($additionalAddresses as $key => $additionalAddress) { $addressId = 'billing_' . ($key + 1); $this->donor->add_address($addressId, (array)$additionalAddress); } } /** * Clear deleted address keys */ $totalStoredAddresses = isset($this->donor->address['billing']) ? count($this->donor->address['billing']) : 0; $totalNewAddresses = count($additionalAddresses) + 1; if ($totalStoredAddresses > $totalNewAddresses) { $key = $totalNewAddresses; while ($key < $totalStoredAddresses) { $this->donor->remove_address("billing_{$key}"); $key++; } } } }