Example #1
0
 /** 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;
     }
 }
Example #2
0
 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;
 }