error-tracking.php ➔ give_die()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 3
dl 0
loc 5
ccs 0
cts 1
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Error Tracking
4
 *
5
 * @package     Give
6
 * @subpackage  Functions/Errors
7
 * @copyright   Copyright (c) 2016, WordImpress
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
 * Get Errors
19
 *
20
 * Retrieves all error messages stored during the checkout process.
21
 * If errors exist, they are returned.
22
 *
23
 * @since 1.0
24
 * @uses  Give_Session::get()
25
 * @return array|bool array if errors are present, false if none found
26
 */
27
function give_get_errors() {
28
	return Give()->session->get( 'give_errors' );
29
}
30
31
/**
32
 * Set Error
33
 *
34 2
 * Stores an error in a session var.
35
 *
36 2
 * @since 1.0
37
 * @uses  Give_Session::get()
38
 *
39 2
 * @param int    $error_id      ID of the error being set.
40
 * @param string $error_message Message to store with the error.
41
 * @param array  $notice_args
42
 *
43 2
 * @return void
44 1
 */
45
function give_set_error( $error_id, $error_message, $notice_args = array() ) {
46 1
	$errors = give_get_errors();
47 1
	if ( ! $errors ) {
48
		$errors = array();
49 1
	}
50 1
51 1
	if( is_array( $notice_args ) && ! empty( $notice_args ) ) {
0 ignored issues
show
introduced by
Space after opening control structure is required
Loading history...
introduced by
No space before opening parenthesis is prohibited
Loading history...
52 1
		$errors[ $error_id ] = array(
53 1
			'message'     => $error_message,
54 1
			'notice_args' => $notice_args,
55 2
		);
56
	} else {
57
		// Backward compatibility v<1.8.11.
58
		$errors[ $error_id ] = $error_message;
59
	}
60
61
	Give()->session->set( 'give_errors', $errors );
62
}
63
64
/**
65
 * Clears all stored errors.
66
 *
67
 * @since 1.0
68
 * @uses  Give_Session::set()
69
 * @return void
70
 */
71 11
function give_clear_errors() {
72
	Give()->session->set( 'give_errors', null );
73
}
74
75
/**
76
 * Removes (unsets) a stored error
77
 *
78
 * @since 1.0
79
 * @uses  Give_Session::set()
80
 *
81
 * @param int $error_id ID of the error being set.
82
 *
83
 * @return void
84
 */
85
function give_unset_error( $error_id ) {
86
	$errors = give_get_errors();
87
	if ( $errors ) {
88 9
		/**
89 9
		 * Check If $error_id exists in the array.
90 7
		 * If exists then unset it.
91 7
		 *
92 9
		 * @since 1.8.13
93 9
		 */
94 9
		if ( isset( $errors[ $error_id ] ) ) {
95
			unset( $errors[ $error_id ] );
96
		}
97
		Give()->session->set( 'give_errors', $errors );
98
	}
99
}
100
101
/**
102
 * Register die handler for give_die()
103
 *
104 8
 * @since  1.0
105 8
 * @return string
106
 */
107
function _give_die_handler() {
108
	if ( defined( 'GIVE_UNIT_TESTS' ) ) {
109
		return '_give_die_handler';
110
	} else {
111
		die();
112
	}
113
}
114
115
/**
116
 * Wrapper function for wp_die(). This function adds filters for wp_die() which
117
 * kills execution of the script using wp_die(). This allows us to then to work
118 1
 * with functions using give_die() in the unit tests.
119 1
 *
120 1
 * @since 1.0
121 1
 *
122 1
 * @param string $message Message to store with the error.
123 1
 * @param string $title   Error title.
124
 * @param int    $status  HTTP status code..
125
 *
126
 * @return void
127
 */
128
function give_die( $message = '', $title = '', $status = 400 ) {
129
	add_filter( 'wp_die_ajax_handler', '_give_die_handler', 10, 3 );
130
	add_filter( 'wp_die_handler', '_give_die_handler', 10, 3 );
131
	wp_die( $message, $title, array( 'response' => $status ) );
132
}
133