query('START TRANSACTION'); try { $exchangeRate = $this->getCurrencyExchangeRate($donation['payment_currency']); $baseAmount = round($donation['payment_total'] / $exchangeRate, 6); // Update donation meta $metaRepository = new MetaRepository('give_donationmeta', 'donation_id'); $metaRepository->persist( $donationID, [ '_give_cs_base_currency' => give_get_currency(), '_give_cs_exchange_rate' => $exchangeRate, '_give_cs_enabled' => 'enabled', '_give_cs_base_amount' => $baseAmount, ] ); $wpdb->query('COMMIT'); } catch (Exception $e) { $wpdb->query('ROLLBACK'); } } /** * @param array $donation * @param array $params * * @return array */ public function setDonationCurrency($donation, $params) { if (isset($params['donation_currency'])) { $donation['payment_currency'] = $params['donation_currency']; } return $donation; } }