50 * @param string|int $code Error code |
50 * @param string|int $code Error code |
51 * @param string $message Error message |
51 * @param string $message Error message |
52 * @param mixed $data Optional. Error data. |
52 * @param mixed $data Optional. Error data. |
53 */ |
53 */ |
54 public function __construct( $code = '', $message = '', $data = '' ) { |
54 public function __construct( $code = '', $message = '', $data = '' ) { |
55 if ( empty($code) ) |
55 if ( empty( $code ) ) { |
56 return; |
56 return; |
57 |
57 } |
58 $this->errors[$code][] = $message; |
58 |
59 |
59 $this->errors[ $code ][] = $message; |
60 if ( ! empty($data) ) |
60 |
61 $this->error_data[$code] = $data; |
61 if ( ! empty( $data ) ) { |
|
62 $this->error_data[ $code ] = $data; |
|
63 } |
62 } |
64 } |
63 |
65 |
64 /** |
66 /** |
65 * Retrieve all error codes. |
67 * Retrieve all error codes. |
66 * |
68 * |
67 * @since 2.1.0 |
69 * @since 2.1.0 |
68 * |
70 * |
69 * @return array List of error codes, if available. |
71 * @return array List of error codes, if available. |
70 */ |
72 */ |
71 public function get_error_codes() { |
73 public function get_error_codes() { |
72 if ( empty($this->errors) ) |
74 if ( ! $this->has_errors() ) { |
73 return array(); |
75 return array(); |
74 |
76 } |
75 return array_keys($this->errors); |
77 |
|
78 return array_keys( $this->errors ); |
76 } |
79 } |
77 |
80 |
78 /** |
81 /** |
79 * Retrieve first error code available. |
82 * Retrieve first error code available. |
80 * |
83 * |
97 * @since 2.1.0 |
101 * @since 2.1.0 |
98 * |
102 * |
99 * @param string|int $code Optional. Retrieve messages matching code, if exists. |
103 * @param string|int $code Optional. Retrieve messages matching code, if exists. |
100 * @return array Error strings on success, or empty array on failure (if using code parameter). |
104 * @return array Error strings on success, or empty array on failure (if using code parameter). |
101 */ |
105 */ |
102 public function get_error_messages($code = '') { |
106 public function get_error_messages( $code = '' ) { |
103 // Return all messages if no code specified. |
107 // Return all messages if no code specified. |
104 if ( empty($code) ) { |
108 if ( empty( $code ) ) { |
105 $all_messages = array(); |
109 $all_messages = array(); |
106 foreach ( (array) $this->errors as $code => $messages ) |
110 foreach ( (array) $this->errors as $code => $messages ) { |
107 $all_messages = array_merge($all_messages, $messages); |
111 $all_messages = array_merge( $all_messages, $messages ); |
|
112 } |
108 |
113 |
109 return $all_messages; |
114 return $all_messages; |
110 } |
115 } |
111 |
116 |
112 if ( isset($this->errors[$code]) ) |
117 if ( isset( $this->errors[ $code ] ) ) { |
113 return $this->errors[$code]; |
118 return $this->errors[ $code ]; |
114 else |
119 } else { |
115 return array(); |
120 return array(); |
|
121 } |
116 } |
122 } |
117 |
123 |
118 /** |
124 /** |
119 * Get single error message. |
125 * Get single error message. |
120 * |
126 * |
124 * @since 2.1.0 |
130 * @since 2.1.0 |
125 * |
131 * |
126 * @param string|int $code Optional. Error code to retrieve message. |
132 * @param string|int $code Optional. Error code to retrieve message. |
127 * @return string |
133 * @return string |
128 */ |
134 */ |
129 public function get_error_message($code = '') { |
135 public function get_error_message( $code = '' ) { |
130 if ( empty($code) ) |
136 if ( empty( $code ) ) { |
131 $code = $this->get_error_code(); |
137 $code = $this->get_error_code(); |
132 $messages = $this->get_error_messages($code); |
138 } |
133 if ( empty($messages) ) |
139 $messages = $this->get_error_messages( $code ); |
|
140 if ( empty( $messages ) ) { |
134 return ''; |
141 return ''; |
|
142 } |
135 return $messages[0]; |
143 return $messages[0]; |
136 } |
144 } |
137 |
145 |
138 /** |
146 /** |
139 * Retrieve error data for error code. |
147 * Retrieve error data for error code. |
141 * @since 2.1.0 |
149 * @since 2.1.0 |
142 * |
150 * |
143 * @param string|int $code Optional. Error code. |
151 * @param string|int $code Optional. Error code. |
144 * @return mixed Error data, if it exists. |
152 * @return mixed Error data, if it exists. |
145 */ |
153 */ |
146 public function get_error_data($code = '') { |
154 public function get_error_data( $code = '' ) { |
147 if ( empty($code) ) |
155 if ( empty( $code ) ) { |
148 $code = $this->get_error_code(); |
156 $code = $this->get_error_code(); |
149 |
157 } |
150 if ( isset($this->error_data[$code]) ) |
158 |
151 return $this->error_data[$code]; |
159 if ( isset( $this->error_data[ $code ] ) ) { |
|
160 return $this->error_data[ $code ]; |
|
161 } |
|
162 } |
|
163 |
|
164 /** |
|
165 * Verify if the instance contains errors. |
|
166 * |
|
167 * @since 5.1.0 |
|
168 * |
|
169 * @return bool |
|
170 */ |
|
171 public function has_errors() { |
|
172 if ( ! empty( $this->errors ) ) { |
|
173 return true; |
|
174 } |
|
175 return false; |
152 } |
176 } |
153 |
177 |
154 /** |
178 /** |
155 * Add an error or append additional message to an existing error. |
179 * Add an error or append additional message to an existing error. |
156 * |
180 * |
158 * |
182 * |
159 * @param string|int $code Error code. |
183 * @param string|int $code Error code. |
160 * @param string $message Error message. |
184 * @param string $message Error message. |
161 * @param mixed $data Optional. Error data. |
185 * @param mixed $data Optional. Error data. |
162 */ |
186 */ |
163 public function add($code, $message, $data = '') { |
187 public function add( $code, $message, $data = '' ) { |
164 $this->errors[$code][] = $message; |
188 $this->errors[ $code ][] = $message; |
165 if ( ! empty($data) ) |
189 if ( ! empty( $data ) ) { |
166 $this->error_data[$code] = $data; |
190 $this->error_data[ $code ] = $data; |
|
191 } |
167 } |
192 } |
168 |
193 |
169 /** |
194 /** |
170 * Add data for error code. |
195 * Add data for error code. |
171 * |
196 * |
174 * @since 2.1.0 |
199 * @since 2.1.0 |
175 * |
200 * |
176 * @param mixed $data Error data. |
201 * @param mixed $data Error data. |
177 * @param string|int $code Error code. |
202 * @param string|int $code Error code. |
178 */ |
203 */ |
179 public function add_data($data, $code = '') { |
204 public function add_data( $data, $code = '' ) { |
180 if ( empty($code) ) |
205 if ( empty( $code ) ) { |
181 $code = $this->get_error_code(); |
206 $code = $this->get_error_code(); |
182 |
207 } |
183 $this->error_data[$code] = $data; |
208 |
|
209 $this->error_data[ $code ] = $data; |
184 } |
210 } |
185 |
211 |
186 /** |
212 /** |
187 * Removes the specified error. |
213 * Removes the specified error. |
188 * |
214 * |