actions.php ➔ give_process_gateway_select()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Gateway Actions
4
 *
5
 * @package     Give
6
 * @subpackage  Gateways
7
 * @copyright   Copyright (c) 2016, GiveWP
8
 * @license     https://opensource.org/licenses/gpl-license GNU Public License
9
 * @since       1.0
10
 */
11
12
// Exit if accessed directly.
13
if ( ! defined( 'ABSPATH' ) ) {
14
	exit;
15
}
16
17
/**
18
 * Processes gateway select on checkout. Only for users without ajax / javascript
19
 *
20
 * @since 1.0
21
 *
22
 * @param $data
23
 */
24
function give_process_gateway_select( $data ) {
0 ignored issues
show
Unused Code introduced by
The parameter $data is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
25
	if ( isset( $_POST['gateway_submit'] ) ) {
26
		wp_redirect( esc_url( add_query_arg( 'payment-mode', $_POST['payment-mode'] ) ) );
27
		exit;
28
	}
29
}
30
31
add_action( 'give_gateway_select', 'give_process_gateway_select' );
32
33
/**
34
 * Loads a payment gateway via AJAX.
35
 *
36
 * @since 1.0
37
 *
38
 * @return void
39
 */
40
function give_load_ajax_gateway() {
41
42
	$post_data = give_clean( $_POST ); // WPCS: input var ok, CSRF ok.
43
44
	if (
45
		! isset( $post_data['nonce'] )
46
		|| ! give_verify_donation_form_nonce( $post_data['nonce'], $post_data['give_form_id'] )
47
	) {
48
		Give_Notices::print_frontend_notice( __( 'We\'re unable to recognize your session. Please refresh the screen to try again; otherwise contact your website administrator for assistance.', 'give' ), true, 'error' );
49
		exit();
50
51
	}elseif ( isset( $post_data['give_payment_mode'] ) ) {
52
53
		$form_id_prefix = ! empty( $post_data['give_form_id_prefix'] ) ? $post_data['give_form_id_prefix'] : '';
54
55
		$args = array(
56
			'id_prefix' => $form_id_prefix,
57
		);
58
59
		/**
60
		 * Fire to render donation form.
61
		 *
62
		 * @since 1.7
63
		 */
64
		do_action( 'give_donation_form', $post_data['give_form_id'], $args );
65
66
		exit();
67
	}
68
}
69
70
add_action( 'wp_ajax_give_load_gateway', 'give_load_ajax_gateway' );
71
add_action( 'wp_ajax_nopriv_give_load_gateway', 'give_load_ajax_gateway' );
72
73
/**
74
 * Create wp nonce using Ajax call.
75
 *
76
 * Use give_donation_form_nonce() js fn to create nonce.
77
 *
78
 * @since 2.0
79
 *
80
 * @return void
81
 */
82
function give_donation_form_nonce() {
83
	if ( isset( $_POST['give_form_id'] ) ) {
84
85
		// Get donation form id.
86
		$form_id = is_numeric( $_POST['give_form_id'] ) ? absint( $_POST['give_form_id'] ) : 0;
87
88
		// Send nonce json data.
89
		wp_send_json_success( wp_create_nonce( "give_donation_form_nonce_{$form_id}" ) );
90
	}
91
}
92
93
add_action( 'wp_ajax_give_donation_form_nonce', 'give_donation_form_nonce' );
94
add_action( 'wp_ajax_nopriv_give_donation_form_nonce', 'give_donation_form_nonce' );
95
96
97
/**
98
 * Create all nonce of donation form using Ajax call.
99
 * Note: only for internal use
100
 *
101
 * @since 2.2.0
102
 *
103
 * @return void
104
 */
105
function __give_donation_form_reset_all_nonce() {
106
	if ( isset( $_POST['give_form_id'] ) ) {
107
108
		// Get donation form id.
109
		$form_id = is_numeric( $_POST['give_form_id'] ) ? absint( $_POST['give_form_id'] ) : 0;
110
111
		$data = array(
112
			'give_form_hash'               => wp_create_nonce( "give_donation_form_nonce_{$form_id}" ),
113
			'give_form_user_register_hash' => wp_create_nonce( "give_form_create_user_nonce_{$form_id}" )
114
		);
115
116
		/**
117
		 * Filter the ajax request data
118
		 *
119
		 * @since  2.2.0
120
		 *
121
		 */
122
		$data = apply_filters( 'give_donation_form_reset_all_nonce_data', $data );
123
124
		// Send nonce json data.
125
		wp_send_json_success( $data );
126
	}
127
128
	wp_send_json_error();
129
}
130
131
add_action( 'wp_ajax_give_donation_form_reset_all_nonce', '__give_donation_form_reset_all_nonce' );
132
add_action( 'wp_ajax_nopriv_give_donation_form_reset_all_nonce', '__give_donation_form_reset_all_nonce' );
133
134
/**
135
 * Sets an error within the donation form if no gateways are enabled.
136
 * @todo: we can deprecate this function in future because gateways will not empty if get via Give API.
137
 *
138
 * @since 1.0
139
 *
140
 * @return void
141
 */
142
function give_no_gateway_error() {
143
	$gateways = give_get_enabled_payment_gateways();
144
145
	if ( empty( $gateways ) ) {
146
		give_set_error( 'no_gateways', esc_html__( 'You must enable a payment gateway to use Give.', 'give' ) );
147
	} else {
148
		give_unset_error( 'no_gateways' );
149
	}
150
}
151
152
add_action( 'init', 'give_no_gateway_error' );
153