/** Save a base submission info and return new donation ID, so gateway can add it's specific data to the logs. */ public function log_submission() { if (empty($_POST['leyka_campaign_id']) || (int) $_POST['leyka_campaign_id'] <= 0) { return false; } $campaign = new Leyka_Campaign((int) $_POST['leyka_campaign_id']); $pm_data = leyka_pf_get_payment_method_value(); $donation_id = Leyka_Donation::add(apply_filters('leyka_new_donation_data', array('purpose_text' => $campaign->payment_title, 'gateway_id' => $pm_data['gateway_id']))); $campaign->increase_submits_counter(); if (is_wp_error($donation_id)) { return false; } else { do_action('leyka_log_donation-' . $pm_data['gateway_id'], $donation_id); return $donation_id; } }
public static function add(array $params = array()) { $status = empty($params['status']) ? 'submitted' : $params['status']; $id = wp_insert_post(array('post_type' => Leyka_Donation_Management::$post_type, 'post_status' => $status == 'submitted' ? $status : 'submitted', 'post_date' => date('Y-m-d H:i:s'), 'post_title' => empty($params['purpose_text']) ? leyka_options()->opt('donation_purpose_text') : $params['purpose_text'], 'post_parent' => empty($params['init_recurring_donation']) ? 0 : (int) $params['init_recurring_donation'])); $amount = empty($params['amount']) ? leyka_pf_get_amount_value() : round((double) $params['amount'], 2); update_post_meta($id, 'leyka_donation_amount', $amount); $currency = empty($params['currency']) ? leyka_pf_get_currency_value() : $params['currency']; update_post_meta($id, 'leyka_donation_currency', $currency); $currency_rate = leyka_options()->opt("currency_rur2{$currency}"); if ($currency == 'RUR' || !$currency_rate) { $currency_rate = 1.0; } update_post_meta($id, 'leyka_main_curr_amount', $currency == 'RUR' ? $amount : $amount * $currency_rate); update_post_meta($id, 'leyka_donor_name', empty($params['donor_name']) ? leyka_pf_get_donor_name_value() : $params['donor_name']); update_post_meta($id, 'leyka_donor_email', empty($params['donor_email']) ? leyka_pf_get_donor_email_value() : $params['donor_email']); $pm_data = leyka_pf_get_payment_method_value(); $pm_data = $pm_data ? $pm_data : array('payment_method_id' => '', 'gateway_id' => ''); update_post_meta($id, 'leyka_payment_method', empty($params['payment_method_id']) ? $pm_data['payment_method_id'] : $params['payment_method_id']); update_post_meta($id, 'leyka_gateway', empty($params['gateway_id']) ? $pm_data['gateway_id'] : $params['gateway_id']); update_post_meta($id, 'leyka_campaign_id', empty($params['campaign_id']) ? leyka_pf_get_campaign_id_value() : $params['campaign_id']); if (!get_post_meta($id, '_leyka_donor_email_date', true)) { update_post_meta($id, '_leyka_donor_email_date', 0); } if (!get_post_meta($id, '_leyka_managers_emails_date', true)) { update_post_meta($id, '_leyka_managers_emails_date', 0); } update_post_meta($id, '_status_log', array(array('date' => time(), 'status' => $status))); $params['payment_type'] = empty($params['payment_type']) ? 'single' : ($params['payment_type'] == 'rebill' ? 'rebill' : 'correction'); update_post_meta($id, 'leyka_payment_type', $params['payment_type']); if (!empty($params['gateway_id'])) { do_action("leyka_{$params['gateway_id']}_add_donation_specific_data", $id, $params); } if (!empty($params['recurrents_cancelled'])) { update_post_meta($id, 'leyka_recurrents_cancelled', $params['recurrents_cancelled']); } if (!empty($params['recurrents_cancel_date'])) { update_post_meta($id, 'leyka_recurrents_cancel_date', $params['recurrents_cancel_date']); } elseif (!empty($params['recurrents_cancelled']) && $params['recurrents_cancelled']) { update_post_meta($id, 'leyka_recurrents_cancel_date', time()); } else { update_post_meta($id, 'leyka_recurrents_cancel_date', 0); } return $id; }