add_donation() public method

Add a donation to a given payment
Since: 1.5
public add_donation ( integer $form_id, array $args = [], array $options = [] ) : boolean
$form_id integer The donation form to add
$args array Other arguments to pass to the function
$options array List of donation options
return boolean True when successful, false otherwise
Example #1
0
 /**
  * Test Remove Donation Payment by Price ID
  */
 public function test_remove_with_multi_price_points_by_price_id()
 {
     Give_Helper_Payment::delete_payment($this->_payment_id);
     $form = Give_Helper_Form::create_multilevel_form();
     $payment = new Give_Payment();
     //Add a multi-level donation amount
     $payment->add_donation($form->ID, array('price_id' => 2));
     $this->assertEquals(25, $payment->total);
     $payment->status = 'complete';
     $payment->save();
     //Now remove it
     $payment->remove_donation($form->ID, array('price_id' => 2));
     $payment->save();
     $this->assertEmpty($payment->price_id);
     $this->assertEquals(0, $payment->total);
 }
Example #2
0
/**
 * Insert Payment
 *
 * @since  1.0
 *
 * @param  array $payment_data Arguments passed
 *
 * @return int|bool Payment ID if payment is inserted, false otherwise
 */
function give_insert_payment($payment_data = array())
{
    if (empty($payment_data)) {
        return false;
    }
    $payment = new Give_Payment();
    $gateway = !empty($payment_data['gateway']) ? $payment_data['gateway'] : '';
    $gateway = empty($gateway) && isset($_POST['give-gateway']) ? $_POST['give-gateway'] : $gateway;
    $form_id = isset($payment_data['give_form_id']) ? $payment_data['give_form_id'] : 0;
    $price_id = isset($payment_data['give_price_id']) ? $payment_data['give_price_id'] : give_get_price_id($payment_data['give_form_id'], $payment_data['price']);
    $form_title = isset($payment_data['give_form_title']) ? $payment_data['give_form_title'] : get_the_title($form_id);
    //Set properties
    $payment->total = $payment_data['price'];
    $payment->status = !empty($payment_data['status']) ? $payment_data['status'] : 'pending';
    $payment->currency = !empty($payment_data['currency']) ? $payment_data['currency'] : give_get_currency();
    $payment->user_info = $payment_data['user_info'];
    $payment->gateway = $gateway;
    $payment->form_title = $form_title;
    $payment->form_id = $form_id;
    $payment->price_id = $price_id;
    $payment->user_id = $payment_data['user_info']['id'];
    $payment->email = $payment_data['user_email'];
    $payment->first_name = $payment_data['user_info']['first_name'];
    $payment->last_name = $payment_data['user_info']['last_name'];
    $payment->email = $payment_data['user_info']['email'];
    $payment->ip = give_get_ip();
    $payment->key = $payment_data['purchase_key'];
    $payment->mode = give_is_test_mode() ? 'test' : 'live';
    $payment->parent_payment = !empty($payment_data['parent']) ? absint($payment_data['parent']) : '';
    //Add the donation
    $args = array('price' => $payment->total, 'price_id' => $payment->price_id, 'fees' => isset($payment_data['fees']) ? $payment_data['fees'] : array());
    $payment->add_donation($payment->form_id, $args);
    //Set date if present
    if (isset($payment_data['post_date'])) {
        $payment->date = $payment_data['post_date'];
    }
    //Handle sequential payments
    if (give_get_option('enable_sequential')) {
        $number = give_get_next_payment_number();
        $payment->number = give_format_payment_number($number);
        update_option('give_last_payment_number', $number);
    }
    // Clear the user's purchased cache
    delete_transient('give_user_' . $payment_data['user_info']['id'] . '_purchases');
    //Save payment
    $payment->save();
    //Hook it
    do_action('give_insert_payment', $payment->ID, $payment_data);
    //Return payment ID upon success
    if (!empty($payment->ID)) {
        return $payment->ID;
    }
    // Return false if no payment was inserted
    return false;
}