@@ -10,8 +10,8 @@ discard block |
||
10 | 10 | // if you're a dev and want to receive all errors via email |
11 | 11 | // add this to your wp-config.php: define( 'EE_ERROR_EMAILS', TRUE ); |
12 | 12 | if (defined('WP_DEBUG') && WP_DEBUG === true && defined('EE_ERROR_EMAILS') && EE_ERROR_EMAILS === true) { |
13 | - set_error_handler(array('EE_Error', 'error_handler')); |
|
14 | - register_shutdown_function(array('EE_Error', 'fatal_error_handler')); |
|
13 | + set_error_handler(array('EE_Error', 'error_handler')); |
|
14 | + register_shutdown_function(array('EE_Error', 'fatal_error_handler')); |
|
15 | 15 | } |
16 | 16 | |
17 | 17 | |
@@ -25,251 +25,251 @@ discard block |
||
25 | 25 | class EE_Error extends Exception |
26 | 26 | { |
27 | 27 | |
28 | - const OPTIONS_KEY_NOTICES = 'ee_notices'; |
|
29 | - |
|
30 | - |
|
31 | - /** |
|
32 | - * name of the file to log exceptions to |
|
33 | - * |
|
34 | - * @var string |
|
35 | - */ |
|
36 | - private static $_exception_log_file = 'espresso_error_log.txt'; |
|
37 | - |
|
38 | - /** |
|
39 | - * stores details for all exception |
|
40 | - * |
|
41 | - * @var array |
|
42 | - */ |
|
43 | - private static $_all_exceptions = array(); |
|
44 | - |
|
45 | - /** |
|
46 | - * tracks number of errors |
|
47 | - * |
|
48 | - * @var int |
|
49 | - */ |
|
50 | - private static $_error_count = 0; |
|
51 | - |
|
52 | - /** |
|
53 | - * @var array $_espresso_notices |
|
54 | - */ |
|
55 | - private static $_espresso_notices = array('success' => false, 'errors' => false, 'attention' => false); |
|
56 | - |
|
57 | - |
|
58 | - /** |
|
59 | - * @override default exception handling |
|
60 | - * @param string $message |
|
61 | - * @param int $code |
|
62 | - * @param Exception|null $previous |
|
63 | - */ |
|
64 | - public function __construct($message, $code = 0, Exception $previous = null) |
|
65 | - { |
|
66 | - if (version_compare(PHP_VERSION, '5.3.0', '<')) { |
|
67 | - parent::__construct($message, $code); |
|
68 | - } else { |
|
69 | - parent::__construct($message, $code, $previous); |
|
70 | - } |
|
71 | - } |
|
72 | - |
|
73 | - |
|
74 | - /** |
|
75 | - * error_handler |
|
76 | - * |
|
77 | - * @param $code |
|
78 | - * @param $message |
|
79 | - * @param $file |
|
80 | - * @param $line |
|
81 | - * @return void |
|
82 | - */ |
|
83 | - public static function error_handler($code, $message, $file, $line) |
|
84 | - { |
|
85 | - $type = EE_Error::error_type($code); |
|
86 | - $site = site_url(); |
|
87 | - switch ($site) { |
|
88 | - case 'http://ee4.eventespresso.com/': |
|
89 | - case 'http://ee4decaf.eventespresso.com/': |
|
90 | - case 'http://ee4hf.eventespresso.com/': |
|
91 | - case 'http://ee4a.eventespresso.com/': |
|
92 | - case 'http://ee4ad.eventespresso.com/': |
|
93 | - case 'http://ee4b.eventespresso.com/': |
|
94 | - case 'http://ee4bd.eventespresso.com/': |
|
95 | - case 'http://ee4d.eventespresso.com/': |
|
96 | - case 'http://ee4dd.eventespresso.com/': |
|
97 | - $to = '[email protected]'; |
|
98 | - break; |
|
99 | - default: |
|
100 | - $to = get_option('admin_email'); |
|
101 | - } |
|
102 | - $subject = $type . ' ' . $message . ' in ' . EVENT_ESPRESSO_VERSION . ' on ' . site_url(); |
|
103 | - $msg = EE_Error::_format_error($type, $message, $file, $line); |
|
104 | - if (function_exists('wp_mail')) { |
|
105 | - add_filter('wp_mail_content_type', array('EE_Error', 'set_content_type')); |
|
106 | - wp_mail($to, $subject, $msg); |
|
107 | - } |
|
108 | - echo '<div id="message" class="espresso-notices error"><p>'; |
|
109 | - echo $type . ': ' . $message . '<br />' . $file . ' line ' . $line; |
|
110 | - echo '<br /></p></div>'; |
|
111 | - } |
|
112 | - |
|
113 | - |
|
114 | - /** |
|
115 | - * error_type |
|
116 | - * http://www.php.net/manual/en/errorfunc.constants.php#109430 |
|
117 | - * |
|
118 | - * @param $code |
|
119 | - * @return string |
|
120 | - */ |
|
121 | - public static function error_type($code) |
|
122 | - { |
|
123 | - switch ($code) { |
|
124 | - case E_ERROR: // 1 // |
|
125 | - return 'E_ERROR'; |
|
126 | - case E_WARNING: // 2 // |
|
127 | - return 'E_WARNING'; |
|
128 | - case E_PARSE: // 4 // |
|
129 | - return 'E_PARSE'; |
|
130 | - case E_NOTICE: // 8 // |
|
131 | - return 'E_NOTICE'; |
|
132 | - case E_CORE_ERROR: // 16 // |
|
133 | - return 'E_CORE_ERROR'; |
|
134 | - case E_CORE_WARNING: // 32 // |
|
135 | - return 'E_CORE_WARNING'; |
|
136 | - case E_COMPILE_ERROR: // 64 // |
|
137 | - return 'E_COMPILE_ERROR'; |
|
138 | - case E_COMPILE_WARNING: // 128 // |
|
139 | - return 'E_COMPILE_WARNING'; |
|
140 | - case E_USER_ERROR: // 256 // |
|
141 | - return 'E_USER_ERROR'; |
|
142 | - case E_USER_WARNING: // 512 // |
|
143 | - return 'E_USER_WARNING'; |
|
144 | - case E_USER_NOTICE: // 1024 // |
|
145 | - return 'E_USER_NOTICE'; |
|
146 | - case E_STRICT: // 2048 // |
|
147 | - return 'E_STRICT'; |
|
148 | - case E_RECOVERABLE_ERROR: // 4096 // |
|
149 | - return 'E_RECOVERABLE_ERROR'; |
|
150 | - case E_DEPRECATED: // 8192 // |
|
151 | - return 'E_DEPRECATED'; |
|
152 | - case E_USER_DEPRECATED: // 16384 // |
|
153 | - return 'E_USER_DEPRECATED'; |
|
154 | - case E_ALL: // 16384 // |
|
155 | - return 'E_ALL'; |
|
156 | - } |
|
157 | - return ''; |
|
158 | - } |
|
159 | - |
|
160 | - |
|
161 | - /** |
|
162 | - * fatal_error_handler |
|
163 | - * |
|
164 | - * @return void |
|
165 | - */ |
|
166 | - public static function fatal_error_handler() |
|
167 | - { |
|
168 | - $last_error = error_get_last(); |
|
169 | - if ($last_error['type'] === E_ERROR) { |
|
170 | - EE_Error::error_handler(E_ERROR, $last_error['message'], $last_error['file'], $last_error['line']); |
|
171 | - } |
|
172 | - } |
|
173 | - |
|
174 | - |
|
175 | - /** |
|
176 | - * _format_error |
|
177 | - * |
|
178 | - * @param $code |
|
179 | - * @param $message |
|
180 | - * @param $file |
|
181 | - * @param $line |
|
182 | - * @return string |
|
183 | - */ |
|
184 | - private static function _format_error($code, $message, $file, $line) |
|
185 | - { |
|
186 | - $html = "<table cellpadding='5'><thead bgcolor='#f8f8f8'><th>Item</th><th align='left'>Details</th></thead><tbody>"; |
|
187 | - $html .= "<tr valign='top'><td><b>Code</b></td><td>$code</td></tr>"; |
|
188 | - $html .= "<tr valign='top'><td><b>Error</b></td><td>$message</td></tr>"; |
|
189 | - $html .= "<tr valign='top'><td><b>File</b></td><td>$file</td></tr>"; |
|
190 | - $html .= "<tr valign='top'><td><b>Line</b></td><td>$line</td></tr>"; |
|
191 | - $html .= '</tbody></table>'; |
|
192 | - return $html; |
|
193 | - } |
|
194 | - |
|
195 | - |
|
196 | - /** |
|
197 | - * set_content_type |
|
198 | - * |
|
199 | - * @param $content_type |
|
200 | - * @return string |
|
201 | - */ |
|
202 | - public static function set_content_type($content_type) |
|
203 | - { |
|
204 | - return 'text/html'; |
|
205 | - } |
|
206 | - |
|
207 | - |
|
208 | - /** |
|
209 | - * @return void |
|
210 | - * @throws EE_Error |
|
211 | - * @throws ReflectionException |
|
212 | - */ |
|
213 | - public function get_error() |
|
214 | - { |
|
215 | - if (apply_filters('FHEE__EE_Error__get_error__show_normal_exceptions', false)) { |
|
216 | - throw $this; |
|
217 | - } |
|
218 | - // get separate user and developer messages if they exist |
|
219 | - $msg = explode('||', $this->getMessage()); |
|
220 | - $user_msg = $msg[0]; |
|
221 | - $dev_msg = isset($msg[1]) ? $msg[1] : $msg[0]; |
|
222 | - $msg = WP_DEBUG ? $dev_msg : $user_msg; |
|
223 | - // add details to _all_exceptions array |
|
224 | - $x_time = time(); |
|
225 | - self::$_all_exceptions[ $x_time ]['name'] = get_class($this); |
|
226 | - self::$_all_exceptions[ $x_time ]['file'] = $this->getFile(); |
|
227 | - self::$_all_exceptions[ $x_time ]['line'] = $this->getLine(); |
|
228 | - self::$_all_exceptions[ $x_time ]['msg'] = $msg; |
|
229 | - self::$_all_exceptions[ $x_time ]['code'] = $this->getCode(); |
|
230 | - self::$_all_exceptions[ $x_time ]['trace'] = $this->getTrace(); |
|
231 | - self::$_all_exceptions[ $x_time ]['string'] = $this->getTraceAsString(); |
|
232 | - self::$_error_count++; |
|
233 | - // add_action( 'shutdown', array( $this, 'display_errors' )); |
|
234 | - $this->display_errors(); |
|
235 | - } |
|
236 | - |
|
237 | - |
|
238 | - /** |
|
239 | - * @param bool $check_stored |
|
240 | - * @param string $type_to_check |
|
241 | - * @return bool |
|
242 | - * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
243 | - * @throws \InvalidArgumentException |
|
244 | - * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
245 | - * @throws InvalidInterfaceException |
|
246 | - */ |
|
247 | - public static function has_error($check_stored = false, $type_to_check = 'errors') |
|
248 | - { |
|
249 | - $has_error = isset(self::$_espresso_notices[ $type_to_check ]) |
|
250 | - && ! empty(self::$_espresso_notices[ $type_to_check ]) |
|
251 | - ? true |
|
252 | - : false; |
|
253 | - if ($check_stored && ! $has_error) { |
|
254 | - $notices = EE_Error::getStoredNotices(); |
|
255 | - foreach ($notices as $type => $notice) { |
|
256 | - if ($type === $type_to_check && $notice) { |
|
257 | - return true; |
|
258 | - } |
|
259 | - } |
|
260 | - } |
|
261 | - return $has_error; |
|
262 | - } |
|
263 | - |
|
264 | - |
|
265 | - /** |
|
266 | - * @echo string |
|
267 | - * @throws \ReflectionException |
|
268 | - */ |
|
269 | - public function display_errors() |
|
270 | - { |
|
271 | - $trace_details = ''; |
|
272 | - $output = ' |
|
28 | + const OPTIONS_KEY_NOTICES = 'ee_notices'; |
|
29 | + |
|
30 | + |
|
31 | + /** |
|
32 | + * name of the file to log exceptions to |
|
33 | + * |
|
34 | + * @var string |
|
35 | + */ |
|
36 | + private static $_exception_log_file = 'espresso_error_log.txt'; |
|
37 | + |
|
38 | + /** |
|
39 | + * stores details for all exception |
|
40 | + * |
|
41 | + * @var array |
|
42 | + */ |
|
43 | + private static $_all_exceptions = array(); |
|
44 | + |
|
45 | + /** |
|
46 | + * tracks number of errors |
|
47 | + * |
|
48 | + * @var int |
|
49 | + */ |
|
50 | + private static $_error_count = 0; |
|
51 | + |
|
52 | + /** |
|
53 | + * @var array $_espresso_notices |
|
54 | + */ |
|
55 | + private static $_espresso_notices = array('success' => false, 'errors' => false, 'attention' => false); |
|
56 | + |
|
57 | + |
|
58 | + /** |
|
59 | + * @override default exception handling |
|
60 | + * @param string $message |
|
61 | + * @param int $code |
|
62 | + * @param Exception|null $previous |
|
63 | + */ |
|
64 | + public function __construct($message, $code = 0, Exception $previous = null) |
|
65 | + { |
|
66 | + if (version_compare(PHP_VERSION, '5.3.0', '<')) { |
|
67 | + parent::__construct($message, $code); |
|
68 | + } else { |
|
69 | + parent::__construct($message, $code, $previous); |
|
70 | + } |
|
71 | + } |
|
72 | + |
|
73 | + |
|
74 | + /** |
|
75 | + * error_handler |
|
76 | + * |
|
77 | + * @param $code |
|
78 | + * @param $message |
|
79 | + * @param $file |
|
80 | + * @param $line |
|
81 | + * @return void |
|
82 | + */ |
|
83 | + public static function error_handler($code, $message, $file, $line) |
|
84 | + { |
|
85 | + $type = EE_Error::error_type($code); |
|
86 | + $site = site_url(); |
|
87 | + switch ($site) { |
|
88 | + case 'http://ee4.eventespresso.com/': |
|
89 | + case 'http://ee4decaf.eventespresso.com/': |
|
90 | + case 'http://ee4hf.eventespresso.com/': |
|
91 | + case 'http://ee4a.eventespresso.com/': |
|
92 | + case 'http://ee4ad.eventespresso.com/': |
|
93 | + case 'http://ee4b.eventespresso.com/': |
|
94 | + case 'http://ee4bd.eventespresso.com/': |
|
95 | + case 'http://ee4d.eventespresso.com/': |
|
96 | + case 'http://ee4dd.eventespresso.com/': |
|
97 | + $to = '[email protected]'; |
|
98 | + break; |
|
99 | + default: |
|
100 | + $to = get_option('admin_email'); |
|
101 | + } |
|
102 | + $subject = $type . ' ' . $message . ' in ' . EVENT_ESPRESSO_VERSION . ' on ' . site_url(); |
|
103 | + $msg = EE_Error::_format_error($type, $message, $file, $line); |
|
104 | + if (function_exists('wp_mail')) { |
|
105 | + add_filter('wp_mail_content_type', array('EE_Error', 'set_content_type')); |
|
106 | + wp_mail($to, $subject, $msg); |
|
107 | + } |
|
108 | + echo '<div id="message" class="espresso-notices error"><p>'; |
|
109 | + echo $type . ': ' . $message . '<br />' . $file . ' line ' . $line; |
|
110 | + echo '<br /></p></div>'; |
|
111 | + } |
|
112 | + |
|
113 | + |
|
114 | + /** |
|
115 | + * error_type |
|
116 | + * http://www.php.net/manual/en/errorfunc.constants.php#109430 |
|
117 | + * |
|
118 | + * @param $code |
|
119 | + * @return string |
|
120 | + */ |
|
121 | + public static function error_type($code) |
|
122 | + { |
|
123 | + switch ($code) { |
|
124 | + case E_ERROR: // 1 // |
|
125 | + return 'E_ERROR'; |
|
126 | + case E_WARNING: // 2 // |
|
127 | + return 'E_WARNING'; |
|
128 | + case E_PARSE: // 4 // |
|
129 | + return 'E_PARSE'; |
|
130 | + case E_NOTICE: // 8 // |
|
131 | + return 'E_NOTICE'; |
|
132 | + case E_CORE_ERROR: // 16 // |
|
133 | + return 'E_CORE_ERROR'; |
|
134 | + case E_CORE_WARNING: // 32 // |
|
135 | + return 'E_CORE_WARNING'; |
|
136 | + case E_COMPILE_ERROR: // 64 // |
|
137 | + return 'E_COMPILE_ERROR'; |
|
138 | + case E_COMPILE_WARNING: // 128 // |
|
139 | + return 'E_COMPILE_WARNING'; |
|
140 | + case E_USER_ERROR: // 256 // |
|
141 | + return 'E_USER_ERROR'; |
|
142 | + case E_USER_WARNING: // 512 // |
|
143 | + return 'E_USER_WARNING'; |
|
144 | + case E_USER_NOTICE: // 1024 // |
|
145 | + return 'E_USER_NOTICE'; |
|
146 | + case E_STRICT: // 2048 // |
|
147 | + return 'E_STRICT'; |
|
148 | + case E_RECOVERABLE_ERROR: // 4096 // |
|
149 | + return 'E_RECOVERABLE_ERROR'; |
|
150 | + case E_DEPRECATED: // 8192 // |
|
151 | + return 'E_DEPRECATED'; |
|
152 | + case E_USER_DEPRECATED: // 16384 // |
|
153 | + return 'E_USER_DEPRECATED'; |
|
154 | + case E_ALL: // 16384 // |
|
155 | + return 'E_ALL'; |
|
156 | + } |
|
157 | + return ''; |
|
158 | + } |
|
159 | + |
|
160 | + |
|
161 | + /** |
|
162 | + * fatal_error_handler |
|
163 | + * |
|
164 | + * @return void |
|
165 | + */ |
|
166 | + public static function fatal_error_handler() |
|
167 | + { |
|
168 | + $last_error = error_get_last(); |
|
169 | + if ($last_error['type'] === E_ERROR) { |
|
170 | + EE_Error::error_handler(E_ERROR, $last_error['message'], $last_error['file'], $last_error['line']); |
|
171 | + } |
|
172 | + } |
|
173 | + |
|
174 | + |
|
175 | + /** |
|
176 | + * _format_error |
|
177 | + * |
|
178 | + * @param $code |
|
179 | + * @param $message |
|
180 | + * @param $file |
|
181 | + * @param $line |
|
182 | + * @return string |
|
183 | + */ |
|
184 | + private static function _format_error($code, $message, $file, $line) |
|
185 | + { |
|
186 | + $html = "<table cellpadding='5'><thead bgcolor='#f8f8f8'><th>Item</th><th align='left'>Details</th></thead><tbody>"; |
|
187 | + $html .= "<tr valign='top'><td><b>Code</b></td><td>$code</td></tr>"; |
|
188 | + $html .= "<tr valign='top'><td><b>Error</b></td><td>$message</td></tr>"; |
|
189 | + $html .= "<tr valign='top'><td><b>File</b></td><td>$file</td></tr>"; |
|
190 | + $html .= "<tr valign='top'><td><b>Line</b></td><td>$line</td></tr>"; |
|
191 | + $html .= '</tbody></table>'; |
|
192 | + return $html; |
|
193 | + } |
|
194 | + |
|
195 | + |
|
196 | + /** |
|
197 | + * set_content_type |
|
198 | + * |
|
199 | + * @param $content_type |
|
200 | + * @return string |
|
201 | + */ |
|
202 | + public static function set_content_type($content_type) |
|
203 | + { |
|
204 | + return 'text/html'; |
|
205 | + } |
|
206 | + |
|
207 | + |
|
208 | + /** |
|
209 | + * @return void |
|
210 | + * @throws EE_Error |
|
211 | + * @throws ReflectionException |
|
212 | + */ |
|
213 | + public function get_error() |
|
214 | + { |
|
215 | + if (apply_filters('FHEE__EE_Error__get_error__show_normal_exceptions', false)) { |
|
216 | + throw $this; |
|
217 | + } |
|
218 | + // get separate user and developer messages if they exist |
|
219 | + $msg = explode('||', $this->getMessage()); |
|
220 | + $user_msg = $msg[0]; |
|
221 | + $dev_msg = isset($msg[1]) ? $msg[1] : $msg[0]; |
|
222 | + $msg = WP_DEBUG ? $dev_msg : $user_msg; |
|
223 | + // add details to _all_exceptions array |
|
224 | + $x_time = time(); |
|
225 | + self::$_all_exceptions[ $x_time ]['name'] = get_class($this); |
|
226 | + self::$_all_exceptions[ $x_time ]['file'] = $this->getFile(); |
|
227 | + self::$_all_exceptions[ $x_time ]['line'] = $this->getLine(); |
|
228 | + self::$_all_exceptions[ $x_time ]['msg'] = $msg; |
|
229 | + self::$_all_exceptions[ $x_time ]['code'] = $this->getCode(); |
|
230 | + self::$_all_exceptions[ $x_time ]['trace'] = $this->getTrace(); |
|
231 | + self::$_all_exceptions[ $x_time ]['string'] = $this->getTraceAsString(); |
|
232 | + self::$_error_count++; |
|
233 | + // add_action( 'shutdown', array( $this, 'display_errors' )); |
|
234 | + $this->display_errors(); |
|
235 | + } |
|
236 | + |
|
237 | + |
|
238 | + /** |
|
239 | + * @param bool $check_stored |
|
240 | + * @param string $type_to_check |
|
241 | + * @return bool |
|
242 | + * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
243 | + * @throws \InvalidArgumentException |
|
244 | + * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
245 | + * @throws InvalidInterfaceException |
|
246 | + */ |
|
247 | + public static function has_error($check_stored = false, $type_to_check = 'errors') |
|
248 | + { |
|
249 | + $has_error = isset(self::$_espresso_notices[ $type_to_check ]) |
|
250 | + && ! empty(self::$_espresso_notices[ $type_to_check ]) |
|
251 | + ? true |
|
252 | + : false; |
|
253 | + if ($check_stored && ! $has_error) { |
|
254 | + $notices = EE_Error::getStoredNotices(); |
|
255 | + foreach ($notices as $type => $notice) { |
|
256 | + if ($type === $type_to_check && $notice) { |
|
257 | + return true; |
|
258 | + } |
|
259 | + } |
|
260 | + } |
|
261 | + return $has_error; |
|
262 | + } |
|
263 | + |
|
264 | + |
|
265 | + /** |
|
266 | + * @echo string |
|
267 | + * @throws \ReflectionException |
|
268 | + */ |
|
269 | + public function display_errors() |
|
270 | + { |
|
271 | + $trace_details = ''; |
|
272 | + $output = ' |
|
273 | 273 | <style type="text/css"> |
274 | 274 | #ee-error-message { |
275 | 275 | max-width:90% !important; |
@@ -325,21 +325,21 @@ discard block |
||
325 | 325 | } |
326 | 326 | </style> |
327 | 327 | <div id="ee-error-message" class="error">'; |
328 | - if (! WP_DEBUG) { |
|
329 | - $output .= ' |
|
328 | + if (! WP_DEBUG) { |
|
329 | + $output .= ' |
|
330 | 330 | <p>'; |
331 | - } |
|
332 | - // cycle thru errors |
|
333 | - foreach (self::$_all_exceptions as $time => $ex) { |
|
334 | - $error_code = ''; |
|
335 | - // process trace info |
|
336 | - if (empty($ex['trace'])) { |
|
337 | - $trace_details .= __( |
|
338 | - 'Sorry, but no trace information was available for this exception.', |
|
339 | - 'event_espresso' |
|
340 | - ); |
|
341 | - } else { |
|
342 | - $trace_details .= ' |
|
331 | + } |
|
332 | + // cycle thru errors |
|
333 | + foreach (self::$_all_exceptions as $time => $ex) { |
|
334 | + $error_code = ''; |
|
335 | + // process trace info |
|
336 | + if (empty($ex['trace'])) { |
|
337 | + $trace_details .= __( |
|
338 | + 'Sorry, but no trace information was available for this exception.', |
|
339 | + 'event_espresso' |
|
340 | + ); |
|
341 | + } else { |
|
342 | + $trace_details .= ' |
|
343 | 343 | <div id="ee-trace-details"> |
344 | 344 | <table width="100%" border="0" cellpadding="5" cellspacing="0"> |
345 | 345 | <tr> |
@@ -349,43 +349,43 @@ discard block |
||
349 | 349 | <th scope="col" align="left">Class</th> |
350 | 350 | <th scope="col" align="left">Method( arguments )</th> |
351 | 351 | </tr>'; |
352 | - $last_on_stack = count($ex['trace']) - 1; |
|
353 | - // reverse array so that stack is in proper chronological order |
|
354 | - $sorted_trace = array_reverse($ex['trace']); |
|
355 | - foreach ($sorted_trace as $nmbr => $trace) { |
|
356 | - $file = isset($trace['file']) ? $trace['file'] : ''; |
|
357 | - $class = isset($trace['class']) ? $trace['class'] : ''; |
|
358 | - $type = isset($trace['type']) ? $trace['type'] : ''; |
|
359 | - $function = isset($trace['function']) ? $trace['function'] : ''; |
|
360 | - $args = isset($trace['args']) ? $this->_convert_args_to_string($trace['args']) : ''; |
|
361 | - $line = isset($trace['line']) ? $trace['line'] : ''; |
|
362 | - $zebra = ($nmbr % 2) ? ' odd' : ''; |
|
363 | - if (empty($file) && ! empty($class)) { |
|
364 | - $a = new ReflectionClass($class); |
|
365 | - $file = $a->getFileName(); |
|
366 | - if (empty($line) && ! empty($function)) { |
|
367 | - try { |
|
368 | - // if $function is a closure, this throws an exception |
|
369 | - $b = new ReflectionMethod($class, $function); |
|
370 | - $line = $b->getStartLine(); |
|
371 | - } catch (Exception $closure_exception) { |
|
372 | - $line = 'unknown'; |
|
373 | - } |
|
374 | - } |
|
375 | - } |
|
376 | - if ($nmbr === $last_on_stack) { |
|
377 | - $file = $ex['file'] !== '' ? $ex['file'] : $file; |
|
378 | - $line = $ex['line'] !== '' ? $ex['line'] : $line; |
|
379 | - $error_code = self::generate_error_code($file, $trace['function'], $line); |
|
380 | - } |
|
381 | - $nmbr_dsply = ! empty($nmbr) ? $nmbr : ' '; |
|
382 | - $line_dsply = ! empty($line) ? $line : ' '; |
|
383 | - $file_dsply = ! empty($file) ? $file : ' '; |
|
384 | - $class_dsply = ! empty($class) ? $class : ' '; |
|
385 | - $type_dsply = ! empty($type) ? $type : ' '; |
|
386 | - $function_dsply = ! empty($function) ? $function : ' '; |
|
387 | - $args_dsply = ! empty($args) ? '( ' . $args . ' )' : ''; |
|
388 | - $trace_details .= ' |
|
352 | + $last_on_stack = count($ex['trace']) - 1; |
|
353 | + // reverse array so that stack is in proper chronological order |
|
354 | + $sorted_trace = array_reverse($ex['trace']); |
|
355 | + foreach ($sorted_trace as $nmbr => $trace) { |
|
356 | + $file = isset($trace['file']) ? $trace['file'] : ''; |
|
357 | + $class = isset($trace['class']) ? $trace['class'] : ''; |
|
358 | + $type = isset($trace['type']) ? $trace['type'] : ''; |
|
359 | + $function = isset($trace['function']) ? $trace['function'] : ''; |
|
360 | + $args = isset($trace['args']) ? $this->_convert_args_to_string($trace['args']) : ''; |
|
361 | + $line = isset($trace['line']) ? $trace['line'] : ''; |
|
362 | + $zebra = ($nmbr % 2) ? ' odd' : ''; |
|
363 | + if (empty($file) && ! empty($class)) { |
|
364 | + $a = new ReflectionClass($class); |
|
365 | + $file = $a->getFileName(); |
|
366 | + if (empty($line) && ! empty($function)) { |
|
367 | + try { |
|
368 | + // if $function is a closure, this throws an exception |
|
369 | + $b = new ReflectionMethod($class, $function); |
|
370 | + $line = $b->getStartLine(); |
|
371 | + } catch (Exception $closure_exception) { |
|
372 | + $line = 'unknown'; |
|
373 | + } |
|
374 | + } |
|
375 | + } |
|
376 | + if ($nmbr === $last_on_stack) { |
|
377 | + $file = $ex['file'] !== '' ? $ex['file'] : $file; |
|
378 | + $line = $ex['line'] !== '' ? $ex['line'] : $line; |
|
379 | + $error_code = self::generate_error_code($file, $trace['function'], $line); |
|
380 | + } |
|
381 | + $nmbr_dsply = ! empty($nmbr) ? $nmbr : ' '; |
|
382 | + $line_dsply = ! empty($line) ? $line : ' '; |
|
383 | + $file_dsply = ! empty($file) ? $file : ' '; |
|
384 | + $class_dsply = ! empty($class) ? $class : ' '; |
|
385 | + $type_dsply = ! empty($type) ? $type : ' '; |
|
386 | + $function_dsply = ! empty($function) ? $function : ' '; |
|
387 | + $args_dsply = ! empty($args) ? '( ' . $args . ' )' : ''; |
|
388 | + $trace_details .= ' |
|
389 | 389 | <tr> |
390 | 390 | <td align="right" class="' . $zebra . '">' . $nmbr_dsply . '</td> |
391 | 391 | <td align="right" class="' . $zebra . '">' . $line_dsply . '</td> |
@@ -393,626 +393,626 @@ discard block |
||
393 | 393 | <td align="left" class="' . $zebra . '">' . $class_dsply . '</td> |
394 | 394 | <td align="left" class="' . $zebra . '">' . $type_dsply . $function_dsply . $args_dsply . '</td> |
395 | 395 | </tr>'; |
396 | - } |
|
397 | - $trace_details .= ' |
|
396 | + } |
|
397 | + $trace_details .= ' |
|
398 | 398 | </table> |
399 | 399 | </div>'; |
400 | - } |
|
401 | - $ex['code'] = $ex['code'] ? $ex['code'] : $error_code; |
|
402 | - // add generic non-identifying messages for non-privileged users |
|
403 | - if (! WP_DEBUG) { |
|
404 | - $output .= '<span class="ee-error-user-msg-spn">' |
|
405 | - . trim($ex['msg']) |
|
406 | - . '</span> <sup>' |
|
407 | - . $ex['code'] |
|
408 | - . '</sup><br />'; |
|
409 | - } else { |
|
410 | - // or helpful developer messages if debugging is on |
|
411 | - $output .= ' |
|
400 | + } |
|
401 | + $ex['code'] = $ex['code'] ? $ex['code'] : $error_code; |
|
402 | + // add generic non-identifying messages for non-privileged users |
|
403 | + if (! WP_DEBUG) { |
|
404 | + $output .= '<span class="ee-error-user-msg-spn">' |
|
405 | + . trim($ex['msg']) |
|
406 | + . '</span> <sup>' |
|
407 | + . $ex['code'] |
|
408 | + . '</sup><br />'; |
|
409 | + } else { |
|
410 | + // or helpful developer messages if debugging is on |
|
411 | + $output .= ' |
|
412 | 412 | <div class="ee-error-dev-msg-dv"> |
413 | 413 | <p class="ee-error-dev-msg-pg"> |
414 | 414 | <strong class="ee-error-dev-msg-str">An ' |
415 | - . $ex['name'] |
|
416 | - . ' exception was thrown!</strong> <span>code: ' |
|
417 | - . $ex['code'] |
|
418 | - . '</span><br /> |
|
415 | + . $ex['name'] |
|
416 | + . ' exception was thrown!</strong> <span>code: ' |
|
417 | + . $ex['code'] |
|
418 | + . '</span><br /> |
|
419 | 419 | <span class="big-text">"' |
420 | - . trim($ex['msg']) |
|
421 | - . '"</span><br/> |
|
420 | + . trim($ex['msg']) |
|
421 | + . '"</span><br/> |
|
422 | 422 | <a id="display-ee-error-trace-' |
423 | - . self::$_error_count |
|
424 | - . $time |
|
425 | - . '" class="display-ee-error-trace-lnk small-text" rel="ee-error-trace-' |
|
426 | - . self::$_error_count |
|
427 | - . $time |
|
428 | - . '"> |
|
423 | + . self::$_error_count |
|
424 | + . $time |
|
425 | + . '" class="display-ee-error-trace-lnk small-text" rel="ee-error-trace-' |
|
426 | + . self::$_error_count |
|
427 | + . $time |
|
428 | + . '"> |
|
429 | 429 | ' |
430 | - . __('click to view backtrace and class/method details', 'event_espresso') |
|
431 | - . ' |
|
430 | + . __('click to view backtrace and class/method details', 'event_espresso') |
|
431 | + . ' |
|
432 | 432 | </a><br /> |
433 | 433 | <span class="small-text lt-grey-text">' |
434 | - . $ex['file'] |
|
435 | - . ' ( line no: ' |
|
436 | - . $ex['line'] |
|
437 | - . ' )</span> |
|
434 | + . $ex['file'] |
|
435 | + . ' ( line no: ' |
|
436 | + . $ex['line'] |
|
437 | + . ' )</span> |
|
438 | 438 | </p> |
439 | 439 | <div id="ee-error-trace-' |
440 | - . self::$_error_count |
|
441 | - . $time |
|
442 | - . '-dv" class="ee-error-trace-dv" style="display: none;"> |
|
440 | + . self::$_error_count |
|
441 | + . $time |
|
442 | + . '-dv" class="ee-error-trace-dv" style="display: none;"> |
|
443 | 443 | ' |
444 | - . $trace_details; |
|
445 | - if (! empty($class)) { |
|
446 | - $output .= ' |
|
444 | + . $trace_details; |
|
445 | + if (! empty($class)) { |
|
446 | + $output .= ' |
|
447 | 447 | <div style="padding:3px; margin:0 0 1em; border:1px solid #666; background:#fff; border-radius:3px;"> |
448 | 448 | <div style="padding:1em 2em; border:1px solid #666; background:#f9f9f9;"> |
449 | 449 | <h3>Class Details</h3>'; |
450 | - $a = new ReflectionClass($class); |
|
451 | - $output .= ' |
|
450 | + $a = new ReflectionClass($class); |
|
451 | + $output .= ' |
|
452 | 452 | <pre>' . $a . '</pre> |
453 | 453 | </div> |
454 | 454 | </div>'; |
455 | - } |
|
456 | - $output .= ' |
|
455 | + } |
|
456 | + $output .= ' |
|
457 | 457 | </div> |
458 | 458 | </div> |
459 | 459 | <br />'; |
460 | - } |
|
461 | - $this->write_to_error_log($time, $ex); |
|
462 | - } |
|
463 | - // remove last linebreak |
|
464 | - $output = substr($output, 0, -6); |
|
465 | - if (! WP_DEBUG) { |
|
466 | - $output .= ' |
|
460 | + } |
|
461 | + $this->write_to_error_log($time, $ex); |
|
462 | + } |
|
463 | + // remove last linebreak |
|
464 | + $output = substr($output, 0, -6); |
|
465 | + if (! WP_DEBUG) { |
|
466 | + $output .= ' |
|
467 | 467 | </p>'; |
468 | - } |
|
469 | - $output .= ' |
|
468 | + } |
|
469 | + $output .= ' |
|
470 | 470 | </div>'; |
471 | - $output .= self::_print_scripts(true); |
|
472 | - if (defined('DOING_AJAX')) { |
|
473 | - echo wp_json_encode(array('error' => $output)); |
|
474 | - exit(); |
|
475 | - } |
|
476 | - echo $output; |
|
477 | - die(); |
|
478 | - } |
|
479 | - |
|
480 | - |
|
481 | - /** |
|
482 | - * generate string from exception trace args |
|
483 | - * |
|
484 | - * @param array $arguments |
|
485 | - * @param bool $array |
|
486 | - * @return string |
|
487 | - */ |
|
488 | - private function _convert_args_to_string($arguments = array(), $array = false) |
|
489 | - { |
|
490 | - $arg_string = ''; |
|
491 | - if (! empty($arguments)) { |
|
492 | - $args = array(); |
|
493 | - foreach ($arguments as $arg) { |
|
494 | - if (! empty($arg)) { |
|
495 | - if (is_string($arg)) { |
|
496 | - $args[] = " '" . $arg . "'"; |
|
497 | - } elseif (is_array($arg)) { |
|
498 | - $args[] = 'ARRAY(' . $this->_convert_args_to_string($arg, true); |
|
499 | - } elseif ($arg === null) { |
|
500 | - $args[] = ' NULL'; |
|
501 | - } elseif (is_bool($arg)) { |
|
502 | - $args[] = ($arg) ? ' TRUE' : ' FALSE'; |
|
503 | - } elseif (is_object($arg)) { |
|
504 | - $args[] = ' OBJECT ' . get_class($arg); |
|
505 | - } elseif (is_resource($arg)) { |
|
506 | - $args[] = get_resource_type($arg); |
|
507 | - } else { |
|
508 | - $args[] = $arg; |
|
509 | - } |
|
510 | - } |
|
511 | - } |
|
512 | - $arg_string = implode(', ', $args); |
|
513 | - } |
|
514 | - if ($array) { |
|
515 | - $arg_string .= ' )'; |
|
516 | - } |
|
517 | - return $arg_string; |
|
518 | - } |
|
519 | - |
|
520 | - |
|
521 | - /** |
|
522 | - * add error message |
|
523 | - * |
|
524 | - * @param string $msg the message to display to users or developers - adding a double pipe || (OR) creates |
|
525 | - * separate messages for user || dev |
|
526 | - * @param string $file the file that the error occurred in - just use __FILE__ |
|
527 | - * @param string $func the function/method that the error occurred in - just use __FUNCTION__ |
|
528 | - * @param string $line the line number where the error occurred - just use __LINE__ |
|
529 | - * @return void |
|
530 | - */ |
|
531 | - public static function add_error($msg = null, $file = null, $func = null, $line = null) |
|
532 | - { |
|
533 | - self::_add_notice('errors', $msg, $file, $func, $line); |
|
534 | - self::$_error_count++; |
|
535 | - } |
|
536 | - |
|
537 | - |
|
538 | - /** |
|
539 | - * If WP_DEBUG is active, throws an exception. If WP_DEBUG is off, just |
|
540 | - * adds an error |
|
541 | - * |
|
542 | - * @param string $msg |
|
543 | - * @param string $file |
|
544 | - * @param string $func |
|
545 | - * @param string $line |
|
546 | - * @throws EE_Error |
|
547 | - */ |
|
548 | - public static function throw_exception_if_debugging($msg = null, $file = null, $func = null, $line = null) |
|
549 | - { |
|
550 | - if (WP_DEBUG) { |
|
551 | - throw new EE_Error($msg); |
|
552 | - } |
|
553 | - EE_Error::add_error($msg, $file, $func, $line); |
|
554 | - } |
|
555 | - |
|
556 | - |
|
557 | - /** |
|
558 | - * add success message |
|
559 | - * |
|
560 | - * @param string $msg the message to display to users or developers - adding a double pipe || (OR) creates |
|
561 | - * separate messages for user || dev |
|
562 | - * @param string $file the file that the error occurred in - just use __FILE__ |
|
563 | - * @param string $func the function/method that the error occurred in - just use __FUNCTION__ |
|
564 | - * @param string $line the line number where the error occurred - just use __LINE__ |
|
565 | - * @return void |
|
566 | - */ |
|
567 | - public static function add_success($msg = null, $file = null, $func = null, $line = null) |
|
568 | - { |
|
569 | - self::_add_notice('success', $msg, $file, $func, $line); |
|
570 | - } |
|
571 | - |
|
572 | - |
|
573 | - /** |
|
574 | - * add attention message |
|
575 | - * |
|
576 | - * @param string $msg the message to display to users or developers - adding a double pipe || (OR) creates |
|
577 | - * separate messages for user || dev |
|
578 | - * @param string $file the file that the error occurred in - just use __FILE__ |
|
579 | - * @param string $func the function/method that the error occurred in - just use __FUNCTION__ |
|
580 | - * @param string $line the line number where the error occurred - just use __LINE__ |
|
581 | - * @return void |
|
582 | - */ |
|
583 | - public static function add_attention($msg = null, $file = null, $func = null, $line = null) |
|
584 | - { |
|
585 | - self::_add_notice('attention', $msg, $file, $func, $line); |
|
586 | - } |
|
587 | - |
|
588 | - |
|
589 | - /** |
|
590 | - * @param string $type whether the message is for a success or error notification |
|
591 | - * @param string $msg the message to display to users or developers |
|
592 | - * - adding a double pipe || (OR) creates separate messages for user || dev |
|
593 | - * @param string $file the file that the error occurred in - just use __FILE__ |
|
594 | - * @param string $func the function/method that the error occurred in - just use __FUNCTION__ |
|
595 | - * @param string $line the line number where the error occurred - just use __LINE__ |
|
596 | - * @return void |
|
597 | - */ |
|
598 | - private static function _add_notice($type = 'success', $msg = '', $file = '', $func = '', $line = '') |
|
599 | - { |
|
600 | - if (empty($msg)) { |
|
601 | - EE_Error::doing_it_wrong( |
|
602 | - 'EE_Error::add_' . $type . '()', |
|
603 | - sprintf( |
|
604 | - __( |
|
605 | - 'Notifications are not much use without a message! Please add a message to the EE_Error::add_%s() call made in %s on line %d', |
|
606 | - 'event_espresso' |
|
607 | - ), |
|
608 | - $type, |
|
609 | - $file, |
|
610 | - $line |
|
611 | - ), |
|
612 | - EVENT_ESPRESSO_VERSION |
|
613 | - ); |
|
614 | - } |
|
615 | - if ($type === 'errors' && (empty($file) || empty($func) || empty($line))) { |
|
616 | - EE_Error::doing_it_wrong( |
|
617 | - 'EE_Error::add_error()', |
|
618 | - __( |
|
619 | - 'You need to provide the file name, function name, and line number that the error occurred on in order to better assist with debugging.', |
|
620 | - 'event_espresso' |
|
621 | - ), |
|
622 | - EVENT_ESPRESSO_VERSION |
|
623 | - ); |
|
624 | - } |
|
625 | - // get separate user and developer messages if they exist |
|
626 | - $msg = explode('||', $msg); |
|
627 | - $user_msg = $msg[0]; |
|
628 | - $dev_msg = isset($msg[1]) ? $msg[1] : $msg[0]; |
|
629 | - /** |
|
630 | - * Do an action so other code can be triggered when a notice is created |
|
631 | - * |
|
632 | - * @param string $type can be 'errors', 'attention', or 'success' |
|
633 | - * @param string $user_msg message displayed to user when WP_DEBUG is off |
|
634 | - * @param string $user_msg message displayed to user when WP_DEBUG is on |
|
635 | - * @param string $file file where error was generated |
|
636 | - * @param string $func function where error was generated |
|
637 | - * @param string $line line where error was generated |
|
638 | - */ |
|
639 | - do_action('AHEE__EE_Error___add_notice', $type, $user_msg, $dev_msg, $file, $func, $line); |
|
640 | - $msg = WP_DEBUG ? $dev_msg : $user_msg; |
|
641 | - // add notice if message exists |
|
642 | - if (! empty($msg)) { |
|
643 | - // get error code |
|
644 | - $notice_code = EE_Error::generate_error_code($file, $func, $line); |
|
645 | - if (WP_DEBUG && $type === 'errors') { |
|
646 | - $msg .= '<br/><span class="tiny-text">' . $notice_code . '</span>'; |
|
647 | - } |
|
648 | - // add notice. Index by code if it's not blank |
|
649 | - if ($notice_code) { |
|
650 | - self::$_espresso_notices[ $type ][ $notice_code ] = $msg; |
|
651 | - } else { |
|
652 | - self::$_espresso_notices[ $type ][] = $msg; |
|
653 | - } |
|
654 | - add_action('wp_footer', array('EE_Error', 'enqueue_error_scripts'), 1); |
|
655 | - } |
|
656 | - } |
|
657 | - |
|
658 | - |
|
659 | - /** |
|
660 | - * in some case it may be necessary to overwrite the existing success messages |
|
661 | - * |
|
662 | - * @return void |
|
663 | - */ |
|
664 | - public static function overwrite_success() |
|
665 | - { |
|
666 | - self::$_espresso_notices['success'] = false; |
|
667 | - } |
|
668 | - |
|
669 | - |
|
670 | - /** |
|
671 | - * in some case it may be necessary to overwrite the existing attention messages |
|
672 | - * |
|
673 | - * @return void |
|
674 | - */ |
|
675 | - public static function overwrite_attention() |
|
676 | - { |
|
677 | - self::$_espresso_notices['attention'] = false; |
|
678 | - } |
|
679 | - |
|
680 | - |
|
681 | - /** |
|
682 | - * in some case it may be necessary to overwrite the existing error messages |
|
683 | - * |
|
684 | - * @return void |
|
685 | - */ |
|
686 | - public static function overwrite_errors() |
|
687 | - { |
|
688 | - self::$_espresso_notices['errors'] = false; |
|
689 | - } |
|
690 | - |
|
691 | - |
|
692 | - /** |
|
693 | - * @return void |
|
694 | - */ |
|
695 | - public static function reset_notices() |
|
696 | - { |
|
697 | - self::$_espresso_notices['success'] = false; |
|
698 | - self::$_espresso_notices['attention'] = false; |
|
699 | - self::$_espresso_notices['errors'] = false; |
|
700 | - } |
|
701 | - |
|
702 | - |
|
703 | - /** |
|
704 | - * @return int |
|
705 | - */ |
|
706 | - public static function has_notices() |
|
707 | - { |
|
708 | - $has_notices = 0; |
|
709 | - // check for success messages |
|
710 | - $has_notices = self::$_espresso_notices['success'] && ! empty(self::$_espresso_notices['success']) |
|
711 | - ? 3 |
|
712 | - : $has_notices; |
|
713 | - // check for attention messages |
|
714 | - $has_notices = self::$_espresso_notices['attention'] && ! empty(self::$_espresso_notices['attention']) |
|
715 | - ? 2 |
|
716 | - : $has_notices; |
|
717 | - // check for error messages |
|
718 | - $has_notices = self::$_espresso_notices['errors'] && ! empty(self::$_espresso_notices['errors']) |
|
719 | - ? 1 |
|
720 | - : $has_notices; |
|
721 | - return $has_notices; |
|
722 | - } |
|
723 | - |
|
724 | - |
|
725 | - /** |
|
726 | - * This simply returns non formatted error notices as they were sent into the EE_Error object. |
|
727 | - * |
|
728 | - * @since 4.9.0 |
|
729 | - * @return array |
|
730 | - */ |
|
731 | - public static function get_vanilla_notices() |
|
732 | - { |
|
733 | - return array( |
|
734 | - 'success' => isset(self::$_espresso_notices['success']) |
|
735 | - ? self::$_espresso_notices['success'] |
|
736 | - : array(), |
|
737 | - 'attention' => isset(self::$_espresso_notices['attention']) |
|
738 | - ? self::$_espresso_notices['attention'] |
|
739 | - : array(), |
|
740 | - 'errors' => isset(self::$_espresso_notices['errors']) |
|
741 | - ? self::$_espresso_notices['errors'] |
|
742 | - : array(), |
|
743 | - ); |
|
744 | - } |
|
745 | - |
|
746 | - |
|
747 | - /** |
|
748 | - * @return array |
|
749 | - * @throws InvalidArgumentException |
|
750 | - * @throws InvalidDataTypeException |
|
751 | - * @throws InvalidInterfaceException |
|
752 | - */ |
|
753 | - public static function getStoredNotices() |
|
754 | - { |
|
755 | - if ($user_id = get_current_user_id()) { |
|
756 | - // get notices for logged in user |
|
757 | - $notices = get_user_option(EE_Error::OPTIONS_KEY_NOTICES, $user_id); |
|
758 | - return is_array($notices) ? $notices : array(); |
|
759 | - } |
|
760 | - if (EE_Session::isLoadedAndActive()) { |
|
761 | - // get notices for user currently engaged in a session |
|
762 | - $session_data = EE_Session::instance()->get_session_data(EE_Error::OPTIONS_KEY_NOTICES); |
|
763 | - return is_array($session_data) ? $session_data : array(); |
|
764 | - } |
|
765 | - // get global notices and hope they apply to the current site visitor |
|
766 | - $notices = get_option(EE_Error::OPTIONS_KEY_NOTICES, array()); |
|
767 | - return is_array($notices) ? $notices : array(); |
|
768 | - } |
|
769 | - |
|
770 | - |
|
771 | - /** |
|
772 | - * @param array $notices |
|
773 | - * @return bool |
|
774 | - * @throws InvalidArgumentException |
|
775 | - * @throws InvalidDataTypeException |
|
776 | - * @throws InvalidInterfaceException |
|
777 | - */ |
|
778 | - public static function storeNotices(array $notices) |
|
779 | - { |
|
780 | - if ($user_id = get_current_user_id()) { |
|
781 | - // store notices for logged in user |
|
782 | - return (bool) update_user_option( |
|
783 | - $user_id, |
|
784 | - EE_Error::OPTIONS_KEY_NOTICES, |
|
785 | - $notices |
|
786 | - ); |
|
787 | - } |
|
788 | - if (EE_Session::isLoadedAndActive()) { |
|
789 | - // store notices for user currently engaged in a session |
|
790 | - return EE_Session::instance()->set_session_data( |
|
791 | - array(EE_Error::OPTIONS_KEY_NOTICES => $notices) |
|
792 | - ); |
|
793 | - } |
|
794 | - // store global notices and hope they apply to the same site visitor on the next request |
|
795 | - return update_option(EE_Error::OPTIONS_KEY_NOTICES, $notices); |
|
796 | - } |
|
797 | - |
|
798 | - |
|
799 | - /** |
|
800 | - * @return bool|TRUE |
|
801 | - * @throws InvalidArgumentException |
|
802 | - * @throws InvalidDataTypeException |
|
803 | - * @throws InvalidInterfaceException |
|
804 | - */ |
|
805 | - public static function clearNotices() |
|
806 | - { |
|
807 | - if ($user_id = get_current_user_id()) { |
|
808 | - // clear notices for logged in user |
|
809 | - return (bool) update_user_option( |
|
810 | - $user_id, |
|
811 | - EE_Error::OPTIONS_KEY_NOTICES, |
|
812 | - array() |
|
813 | - ); |
|
814 | - } |
|
815 | - if (EE_Session::isLoadedAndActive()) { |
|
816 | - // clear notices for user currently engaged in a session |
|
817 | - return EE_Session::instance()->reset_data(EE_Error::OPTIONS_KEY_NOTICES); |
|
818 | - } |
|
819 | - // clear global notices and hope none belonged to some for some other site visitor |
|
820 | - return update_option(EE_Error::OPTIONS_KEY_NOTICES, array()); |
|
821 | - } |
|
822 | - |
|
823 | - |
|
824 | - /** |
|
825 | - * saves notices to the db for retrieval on next request |
|
826 | - * |
|
827 | - * @return void |
|
828 | - * @throws InvalidArgumentException |
|
829 | - * @throws InvalidDataTypeException |
|
830 | - * @throws InvalidInterfaceException |
|
831 | - */ |
|
832 | - public static function stashNoticesBeforeRedirect() |
|
833 | - { |
|
834 | - EE_Error::get_notices(false, true); |
|
835 | - } |
|
836 | - |
|
837 | - |
|
838 | - /** |
|
839 | - * compile all error or success messages into one string |
|
840 | - * |
|
841 | - * @see EE_Error::get_raw_notices if you want the raw notices without any preparations made to them |
|
842 | - * @param boolean $format_output whether or not to format the messages for display in the WP admin |
|
843 | - * @param boolean $save_to_transient whether or not to save notices to the db for retrieval on next request |
|
844 | - * - ONLY do this just before redirecting |
|
845 | - * @param boolean $remove_empty whether or not to unset empty messages |
|
846 | - * @return array |
|
847 | - * @throws InvalidArgumentException |
|
848 | - * @throws InvalidDataTypeException |
|
849 | - * @throws InvalidInterfaceException |
|
850 | - */ |
|
851 | - public static function get_notices($format_output = true, $save_to_transient = false, $remove_empty = true) |
|
852 | - { |
|
853 | - $success_messages = ''; |
|
854 | - $attention_messages = ''; |
|
855 | - $error_messages = ''; |
|
856 | - // either save notices to the db |
|
857 | - if ($save_to_transient || isset($_REQUEST['activate-selected'])) { |
|
858 | - self::$_espresso_notices = array_merge( |
|
859 | - EE_Error::getStoredNotices(), |
|
860 | - self::$_espresso_notices |
|
861 | - ); |
|
862 | - EE_Error::storeNotices(self::$_espresso_notices); |
|
863 | - return array(); |
|
864 | - } |
|
865 | - $print_scripts = EE_Error::combineExistingAndNewNotices(); |
|
866 | - // check for success messages |
|
867 | - if (self::$_espresso_notices['success'] && ! empty(self::$_espresso_notices['success'])) { |
|
868 | - // combine messages |
|
869 | - $success_messages .= implode(self::$_espresso_notices['success'], '<br />'); |
|
870 | - $print_scripts = true; |
|
871 | - } |
|
872 | - // check for attention messages |
|
873 | - if (self::$_espresso_notices['attention'] && ! empty(self::$_espresso_notices['attention'])) { |
|
874 | - // combine messages |
|
875 | - $attention_messages .= implode(self::$_espresso_notices['attention'], '<br />'); |
|
876 | - $print_scripts = true; |
|
877 | - } |
|
878 | - // check for error messages |
|
879 | - if (self::$_espresso_notices['errors'] && ! empty(self::$_espresso_notices['errors'])) { |
|
880 | - $error_messages .= count(self::$_espresso_notices['errors']) > 1 |
|
881 | - ? __('The following errors have occurred:<br />', 'event_espresso') |
|
882 | - : __('An error has occurred:<br />', 'event_espresso'); |
|
883 | - // combine messages |
|
884 | - $error_messages .= implode(self::$_espresso_notices['errors'], '<br />'); |
|
885 | - $print_scripts = true; |
|
886 | - } |
|
887 | - if ($format_output) { |
|
888 | - $notices = EE_Error::formatNoticesOutput( |
|
889 | - $success_messages, |
|
890 | - $attention_messages, |
|
891 | - $error_messages |
|
892 | - ); |
|
893 | - } else { |
|
894 | - $notices = array( |
|
895 | - 'success' => $success_messages, |
|
896 | - 'attention' => $attention_messages, |
|
897 | - 'errors' => $error_messages, |
|
898 | - ); |
|
899 | - if ($remove_empty) { |
|
900 | - // remove empty notices |
|
901 | - foreach ($notices as $type => $notice) { |
|
902 | - if (empty($notice)) { |
|
903 | - unset($notices[ $type ]); |
|
904 | - } |
|
905 | - } |
|
906 | - } |
|
907 | - } |
|
908 | - if ($print_scripts) { |
|
909 | - self::_print_scripts(); |
|
910 | - } |
|
911 | - return $notices; |
|
912 | - } |
|
913 | - |
|
914 | - |
|
915 | - /** |
|
916 | - * @return bool |
|
917 | - * @throws InvalidArgumentException |
|
918 | - * @throws InvalidDataTypeException |
|
919 | - * @throws InvalidInterfaceException |
|
920 | - */ |
|
921 | - private static function combineExistingAndNewNotices() |
|
922 | - { |
|
923 | - $print_scripts = false; |
|
924 | - // grab any notices that have been previously saved |
|
925 | - $notices = EE_Error::getStoredNotices(); |
|
926 | - if (! empty($notices)) { |
|
927 | - foreach ($notices as $type => $notice) { |
|
928 | - if (is_array($notice) && ! empty($notice)) { |
|
929 | - // make sure that existing notice type is an array |
|
930 | - self::$_espresso_notices[ $type ] = is_array(self::$_espresso_notices[ $type ]) |
|
931 | - && ! empty(self::$_espresso_notices[ $type ]) |
|
932 | - ? self::$_espresso_notices[ $type ] |
|
933 | - : array(); |
|
934 | - // add newly created notices to existing ones |
|
935 | - self::$_espresso_notices[ $type ] += $notice; |
|
936 | - $print_scripts = true; |
|
937 | - } |
|
938 | - } |
|
939 | - // now clear any stored notices |
|
940 | - EE_Error::clearNotices(); |
|
941 | - } |
|
942 | - return $print_scripts; |
|
943 | - } |
|
944 | - |
|
945 | - |
|
946 | - /** |
|
947 | - * @param string $success_messages |
|
948 | - * @param string $attention_messages |
|
949 | - * @param string $error_messages |
|
950 | - * @return string |
|
951 | - */ |
|
952 | - private static function formatNoticesOutput($success_messages, $attention_messages, $error_messages) |
|
953 | - { |
|
954 | - $notices = '<div id="espresso-notices">'; |
|
955 | - $close = is_admin() |
|
956 | - ? '' |
|
957 | - : '<a class="close-espresso-notice hide-if-no-js"><span class="dashicons dashicons-no"/></a>'; |
|
958 | - if ($success_messages !== '') { |
|
959 | - $css_id = is_admin() ? 'ee-success-message' : 'espresso-notices-success'; |
|
960 | - $css_class = is_admin() ? 'updated fade' : 'success fade-away'; |
|
961 | - // showMessage( $success_messages ); |
|
962 | - $notices .= '<div id="' . $css_id . '" ' |
|
963 | - . 'class="espresso-notices ' . $css_class . '" ' |
|
964 | - . 'style="display:none;">' |
|
965 | - . '<p>' . $success_messages . '</p>' |
|
966 | - . $close |
|
967 | - . '</div>'; |
|
968 | - } |
|
969 | - if ($attention_messages !== '') { |
|
970 | - $css_id = is_admin() ? 'ee-attention-message' : 'espresso-notices-attention'; |
|
971 | - $css_class = is_admin() ? 'updated ee-notices-attention' : 'attention fade-away'; |
|
972 | - // showMessage( $error_messages, TRUE ); |
|
973 | - $notices .= '<div id="' . $css_id . '" ' |
|
974 | - . 'class="espresso-notices ' . $css_class . '" ' |
|
975 | - . 'style="display:none;">' |
|
976 | - . '<p>' . $attention_messages . '</p>' |
|
977 | - . $close |
|
978 | - . '</div>'; |
|
979 | - } |
|
980 | - if ($error_messages !== '') { |
|
981 | - $css_id = is_admin() ? 'ee-error-message' : 'espresso-notices-error'; |
|
982 | - $css_class = is_admin() ? 'error' : 'error fade-away'; |
|
983 | - // showMessage( $error_messages, TRUE ); |
|
984 | - $notices .= '<div id="' . $css_id . '" ' |
|
985 | - . 'class="espresso-notices ' . $css_class . '" ' |
|
986 | - . 'style="display:none;">' |
|
987 | - . '<p>' . $error_messages . '</p>' |
|
988 | - . $close |
|
989 | - . '</div>'; |
|
990 | - } |
|
991 | - $notices .= '</div>'; |
|
992 | - return $notices; |
|
993 | - } |
|
994 | - |
|
995 | - |
|
996 | - /** |
|
997 | - * _print_scripts |
|
998 | - * |
|
999 | - * @param bool $force_print |
|
1000 | - * @return string |
|
1001 | - */ |
|
1002 | - private static function _print_scripts($force_print = false) |
|
1003 | - { |
|
1004 | - if (! $force_print && (did_action('admin_enqueue_scripts') || did_action('wp_enqueue_scripts'))) { |
|
1005 | - if (wp_script_is('ee_error_js', 'enqueued')) { |
|
1006 | - return ''; |
|
1007 | - } |
|
1008 | - if (wp_script_is('ee_error_js', 'registered')) { |
|
1009 | - wp_enqueue_style('espresso_default'); |
|
1010 | - wp_enqueue_style('espresso_custom_css'); |
|
1011 | - wp_enqueue_script('ee_error_js'); |
|
1012 | - wp_localize_script('ee_error_js', 'ee_settings', array('wp_debug' => WP_DEBUG)); |
|
1013 | - } |
|
1014 | - } else { |
|
1015 | - return ' |
|
471 | + $output .= self::_print_scripts(true); |
|
472 | + if (defined('DOING_AJAX')) { |
|
473 | + echo wp_json_encode(array('error' => $output)); |
|
474 | + exit(); |
|
475 | + } |
|
476 | + echo $output; |
|
477 | + die(); |
|
478 | + } |
|
479 | + |
|
480 | + |
|
481 | + /** |
|
482 | + * generate string from exception trace args |
|
483 | + * |
|
484 | + * @param array $arguments |
|
485 | + * @param bool $array |
|
486 | + * @return string |
|
487 | + */ |
|
488 | + private function _convert_args_to_string($arguments = array(), $array = false) |
|
489 | + { |
|
490 | + $arg_string = ''; |
|
491 | + if (! empty($arguments)) { |
|
492 | + $args = array(); |
|
493 | + foreach ($arguments as $arg) { |
|
494 | + if (! empty($arg)) { |
|
495 | + if (is_string($arg)) { |
|
496 | + $args[] = " '" . $arg . "'"; |
|
497 | + } elseif (is_array($arg)) { |
|
498 | + $args[] = 'ARRAY(' . $this->_convert_args_to_string($arg, true); |
|
499 | + } elseif ($arg === null) { |
|
500 | + $args[] = ' NULL'; |
|
501 | + } elseif (is_bool($arg)) { |
|
502 | + $args[] = ($arg) ? ' TRUE' : ' FALSE'; |
|
503 | + } elseif (is_object($arg)) { |
|
504 | + $args[] = ' OBJECT ' . get_class($arg); |
|
505 | + } elseif (is_resource($arg)) { |
|
506 | + $args[] = get_resource_type($arg); |
|
507 | + } else { |
|
508 | + $args[] = $arg; |
|
509 | + } |
|
510 | + } |
|
511 | + } |
|
512 | + $arg_string = implode(', ', $args); |
|
513 | + } |
|
514 | + if ($array) { |
|
515 | + $arg_string .= ' )'; |
|
516 | + } |
|
517 | + return $arg_string; |
|
518 | + } |
|
519 | + |
|
520 | + |
|
521 | + /** |
|
522 | + * add error message |
|
523 | + * |
|
524 | + * @param string $msg the message to display to users or developers - adding a double pipe || (OR) creates |
|
525 | + * separate messages for user || dev |
|
526 | + * @param string $file the file that the error occurred in - just use __FILE__ |
|
527 | + * @param string $func the function/method that the error occurred in - just use __FUNCTION__ |
|
528 | + * @param string $line the line number where the error occurred - just use __LINE__ |
|
529 | + * @return void |
|
530 | + */ |
|
531 | + public static function add_error($msg = null, $file = null, $func = null, $line = null) |
|
532 | + { |
|
533 | + self::_add_notice('errors', $msg, $file, $func, $line); |
|
534 | + self::$_error_count++; |
|
535 | + } |
|
536 | + |
|
537 | + |
|
538 | + /** |
|
539 | + * If WP_DEBUG is active, throws an exception. If WP_DEBUG is off, just |
|
540 | + * adds an error |
|
541 | + * |
|
542 | + * @param string $msg |
|
543 | + * @param string $file |
|
544 | + * @param string $func |
|
545 | + * @param string $line |
|
546 | + * @throws EE_Error |
|
547 | + */ |
|
548 | + public static function throw_exception_if_debugging($msg = null, $file = null, $func = null, $line = null) |
|
549 | + { |
|
550 | + if (WP_DEBUG) { |
|
551 | + throw new EE_Error($msg); |
|
552 | + } |
|
553 | + EE_Error::add_error($msg, $file, $func, $line); |
|
554 | + } |
|
555 | + |
|
556 | + |
|
557 | + /** |
|
558 | + * add success message |
|
559 | + * |
|
560 | + * @param string $msg the message to display to users or developers - adding a double pipe || (OR) creates |
|
561 | + * separate messages for user || dev |
|
562 | + * @param string $file the file that the error occurred in - just use __FILE__ |
|
563 | + * @param string $func the function/method that the error occurred in - just use __FUNCTION__ |
|
564 | + * @param string $line the line number where the error occurred - just use __LINE__ |
|
565 | + * @return void |
|
566 | + */ |
|
567 | + public static function add_success($msg = null, $file = null, $func = null, $line = null) |
|
568 | + { |
|
569 | + self::_add_notice('success', $msg, $file, $func, $line); |
|
570 | + } |
|
571 | + |
|
572 | + |
|
573 | + /** |
|
574 | + * add attention message |
|
575 | + * |
|
576 | + * @param string $msg the message to display to users or developers - adding a double pipe || (OR) creates |
|
577 | + * separate messages for user || dev |
|
578 | + * @param string $file the file that the error occurred in - just use __FILE__ |
|
579 | + * @param string $func the function/method that the error occurred in - just use __FUNCTION__ |
|
580 | + * @param string $line the line number where the error occurred - just use __LINE__ |
|
581 | + * @return void |
|
582 | + */ |
|
583 | + public static function add_attention($msg = null, $file = null, $func = null, $line = null) |
|
584 | + { |
|
585 | + self::_add_notice('attention', $msg, $file, $func, $line); |
|
586 | + } |
|
587 | + |
|
588 | + |
|
589 | + /** |
|
590 | + * @param string $type whether the message is for a success or error notification |
|
591 | + * @param string $msg the message to display to users or developers |
|
592 | + * - adding a double pipe || (OR) creates separate messages for user || dev |
|
593 | + * @param string $file the file that the error occurred in - just use __FILE__ |
|
594 | + * @param string $func the function/method that the error occurred in - just use __FUNCTION__ |
|
595 | + * @param string $line the line number where the error occurred - just use __LINE__ |
|
596 | + * @return void |
|
597 | + */ |
|
598 | + private static function _add_notice($type = 'success', $msg = '', $file = '', $func = '', $line = '') |
|
599 | + { |
|
600 | + if (empty($msg)) { |
|
601 | + EE_Error::doing_it_wrong( |
|
602 | + 'EE_Error::add_' . $type . '()', |
|
603 | + sprintf( |
|
604 | + __( |
|
605 | + 'Notifications are not much use without a message! Please add a message to the EE_Error::add_%s() call made in %s on line %d', |
|
606 | + 'event_espresso' |
|
607 | + ), |
|
608 | + $type, |
|
609 | + $file, |
|
610 | + $line |
|
611 | + ), |
|
612 | + EVENT_ESPRESSO_VERSION |
|
613 | + ); |
|
614 | + } |
|
615 | + if ($type === 'errors' && (empty($file) || empty($func) || empty($line))) { |
|
616 | + EE_Error::doing_it_wrong( |
|
617 | + 'EE_Error::add_error()', |
|
618 | + __( |
|
619 | + 'You need to provide the file name, function name, and line number that the error occurred on in order to better assist with debugging.', |
|
620 | + 'event_espresso' |
|
621 | + ), |
|
622 | + EVENT_ESPRESSO_VERSION |
|
623 | + ); |
|
624 | + } |
|
625 | + // get separate user and developer messages if they exist |
|
626 | + $msg = explode('||', $msg); |
|
627 | + $user_msg = $msg[0]; |
|
628 | + $dev_msg = isset($msg[1]) ? $msg[1] : $msg[0]; |
|
629 | + /** |
|
630 | + * Do an action so other code can be triggered when a notice is created |
|
631 | + * |
|
632 | + * @param string $type can be 'errors', 'attention', or 'success' |
|
633 | + * @param string $user_msg message displayed to user when WP_DEBUG is off |
|
634 | + * @param string $user_msg message displayed to user when WP_DEBUG is on |
|
635 | + * @param string $file file where error was generated |
|
636 | + * @param string $func function where error was generated |
|
637 | + * @param string $line line where error was generated |
|
638 | + */ |
|
639 | + do_action('AHEE__EE_Error___add_notice', $type, $user_msg, $dev_msg, $file, $func, $line); |
|
640 | + $msg = WP_DEBUG ? $dev_msg : $user_msg; |
|
641 | + // add notice if message exists |
|
642 | + if (! empty($msg)) { |
|
643 | + // get error code |
|
644 | + $notice_code = EE_Error::generate_error_code($file, $func, $line); |
|
645 | + if (WP_DEBUG && $type === 'errors') { |
|
646 | + $msg .= '<br/><span class="tiny-text">' . $notice_code . '</span>'; |
|
647 | + } |
|
648 | + // add notice. Index by code if it's not blank |
|
649 | + if ($notice_code) { |
|
650 | + self::$_espresso_notices[ $type ][ $notice_code ] = $msg; |
|
651 | + } else { |
|
652 | + self::$_espresso_notices[ $type ][] = $msg; |
|
653 | + } |
|
654 | + add_action('wp_footer', array('EE_Error', 'enqueue_error_scripts'), 1); |
|
655 | + } |
|
656 | + } |
|
657 | + |
|
658 | + |
|
659 | + /** |
|
660 | + * in some case it may be necessary to overwrite the existing success messages |
|
661 | + * |
|
662 | + * @return void |
|
663 | + */ |
|
664 | + public static function overwrite_success() |
|
665 | + { |
|
666 | + self::$_espresso_notices['success'] = false; |
|
667 | + } |
|
668 | + |
|
669 | + |
|
670 | + /** |
|
671 | + * in some case it may be necessary to overwrite the existing attention messages |
|
672 | + * |
|
673 | + * @return void |
|
674 | + */ |
|
675 | + public static function overwrite_attention() |
|
676 | + { |
|
677 | + self::$_espresso_notices['attention'] = false; |
|
678 | + } |
|
679 | + |
|
680 | + |
|
681 | + /** |
|
682 | + * in some case it may be necessary to overwrite the existing error messages |
|
683 | + * |
|
684 | + * @return void |
|
685 | + */ |
|
686 | + public static function overwrite_errors() |
|
687 | + { |
|
688 | + self::$_espresso_notices['errors'] = false; |
|
689 | + } |
|
690 | + |
|
691 | + |
|
692 | + /** |
|
693 | + * @return void |
|
694 | + */ |
|
695 | + public static function reset_notices() |
|
696 | + { |
|
697 | + self::$_espresso_notices['success'] = false; |
|
698 | + self::$_espresso_notices['attention'] = false; |
|
699 | + self::$_espresso_notices['errors'] = false; |
|
700 | + } |
|
701 | + |
|
702 | + |
|
703 | + /** |
|
704 | + * @return int |
|
705 | + */ |
|
706 | + public static function has_notices() |
|
707 | + { |
|
708 | + $has_notices = 0; |
|
709 | + // check for success messages |
|
710 | + $has_notices = self::$_espresso_notices['success'] && ! empty(self::$_espresso_notices['success']) |
|
711 | + ? 3 |
|
712 | + : $has_notices; |
|
713 | + // check for attention messages |
|
714 | + $has_notices = self::$_espresso_notices['attention'] && ! empty(self::$_espresso_notices['attention']) |
|
715 | + ? 2 |
|
716 | + : $has_notices; |
|
717 | + // check for error messages |
|
718 | + $has_notices = self::$_espresso_notices['errors'] && ! empty(self::$_espresso_notices['errors']) |
|
719 | + ? 1 |
|
720 | + : $has_notices; |
|
721 | + return $has_notices; |
|
722 | + } |
|
723 | + |
|
724 | + |
|
725 | + /** |
|
726 | + * This simply returns non formatted error notices as they were sent into the EE_Error object. |
|
727 | + * |
|
728 | + * @since 4.9.0 |
|
729 | + * @return array |
|
730 | + */ |
|
731 | + public static function get_vanilla_notices() |
|
732 | + { |
|
733 | + return array( |
|
734 | + 'success' => isset(self::$_espresso_notices['success']) |
|
735 | + ? self::$_espresso_notices['success'] |
|
736 | + : array(), |
|
737 | + 'attention' => isset(self::$_espresso_notices['attention']) |
|
738 | + ? self::$_espresso_notices['attention'] |
|
739 | + : array(), |
|
740 | + 'errors' => isset(self::$_espresso_notices['errors']) |
|
741 | + ? self::$_espresso_notices['errors'] |
|
742 | + : array(), |
|
743 | + ); |
|
744 | + } |
|
745 | + |
|
746 | + |
|
747 | + /** |
|
748 | + * @return array |
|
749 | + * @throws InvalidArgumentException |
|
750 | + * @throws InvalidDataTypeException |
|
751 | + * @throws InvalidInterfaceException |
|
752 | + */ |
|
753 | + public static function getStoredNotices() |
|
754 | + { |
|
755 | + if ($user_id = get_current_user_id()) { |
|
756 | + // get notices for logged in user |
|
757 | + $notices = get_user_option(EE_Error::OPTIONS_KEY_NOTICES, $user_id); |
|
758 | + return is_array($notices) ? $notices : array(); |
|
759 | + } |
|
760 | + if (EE_Session::isLoadedAndActive()) { |
|
761 | + // get notices for user currently engaged in a session |
|
762 | + $session_data = EE_Session::instance()->get_session_data(EE_Error::OPTIONS_KEY_NOTICES); |
|
763 | + return is_array($session_data) ? $session_data : array(); |
|
764 | + } |
|
765 | + // get global notices and hope they apply to the current site visitor |
|
766 | + $notices = get_option(EE_Error::OPTIONS_KEY_NOTICES, array()); |
|
767 | + return is_array($notices) ? $notices : array(); |
|
768 | + } |
|
769 | + |
|
770 | + |
|
771 | + /** |
|
772 | + * @param array $notices |
|
773 | + * @return bool |
|
774 | + * @throws InvalidArgumentException |
|
775 | + * @throws InvalidDataTypeException |
|
776 | + * @throws InvalidInterfaceException |
|
777 | + */ |
|
778 | + public static function storeNotices(array $notices) |
|
779 | + { |
|
780 | + if ($user_id = get_current_user_id()) { |
|
781 | + // store notices for logged in user |
|
782 | + return (bool) update_user_option( |
|
783 | + $user_id, |
|
784 | + EE_Error::OPTIONS_KEY_NOTICES, |
|
785 | + $notices |
|
786 | + ); |
|
787 | + } |
|
788 | + if (EE_Session::isLoadedAndActive()) { |
|
789 | + // store notices for user currently engaged in a session |
|
790 | + return EE_Session::instance()->set_session_data( |
|
791 | + array(EE_Error::OPTIONS_KEY_NOTICES => $notices) |
|
792 | + ); |
|
793 | + } |
|
794 | + // store global notices and hope they apply to the same site visitor on the next request |
|
795 | + return update_option(EE_Error::OPTIONS_KEY_NOTICES, $notices); |
|
796 | + } |
|
797 | + |
|
798 | + |
|
799 | + /** |
|
800 | + * @return bool|TRUE |
|
801 | + * @throws InvalidArgumentException |
|
802 | + * @throws InvalidDataTypeException |
|
803 | + * @throws InvalidInterfaceException |
|
804 | + */ |
|
805 | + public static function clearNotices() |
|
806 | + { |
|
807 | + if ($user_id = get_current_user_id()) { |
|
808 | + // clear notices for logged in user |
|
809 | + return (bool) update_user_option( |
|
810 | + $user_id, |
|
811 | + EE_Error::OPTIONS_KEY_NOTICES, |
|
812 | + array() |
|
813 | + ); |
|
814 | + } |
|
815 | + if (EE_Session::isLoadedAndActive()) { |
|
816 | + // clear notices for user currently engaged in a session |
|
817 | + return EE_Session::instance()->reset_data(EE_Error::OPTIONS_KEY_NOTICES); |
|
818 | + } |
|
819 | + // clear global notices and hope none belonged to some for some other site visitor |
|
820 | + return update_option(EE_Error::OPTIONS_KEY_NOTICES, array()); |
|
821 | + } |
|
822 | + |
|
823 | + |
|
824 | + /** |
|
825 | + * saves notices to the db for retrieval on next request |
|
826 | + * |
|
827 | + * @return void |
|
828 | + * @throws InvalidArgumentException |
|
829 | + * @throws InvalidDataTypeException |
|
830 | + * @throws InvalidInterfaceException |
|
831 | + */ |
|
832 | + public static function stashNoticesBeforeRedirect() |
|
833 | + { |
|
834 | + EE_Error::get_notices(false, true); |
|
835 | + } |
|
836 | + |
|
837 | + |
|
838 | + /** |
|
839 | + * compile all error or success messages into one string |
|
840 | + * |
|
841 | + * @see EE_Error::get_raw_notices if you want the raw notices without any preparations made to them |
|
842 | + * @param boolean $format_output whether or not to format the messages for display in the WP admin |
|
843 | + * @param boolean $save_to_transient whether or not to save notices to the db for retrieval on next request |
|
844 | + * - ONLY do this just before redirecting |
|
845 | + * @param boolean $remove_empty whether or not to unset empty messages |
|
846 | + * @return array |
|
847 | + * @throws InvalidArgumentException |
|
848 | + * @throws InvalidDataTypeException |
|
849 | + * @throws InvalidInterfaceException |
|
850 | + */ |
|
851 | + public static function get_notices($format_output = true, $save_to_transient = false, $remove_empty = true) |
|
852 | + { |
|
853 | + $success_messages = ''; |
|
854 | + $attention_messages = ''; |
|
855 | + $error_messages = ''; |
|
856 | + // either save notices to the db |
|
857 | + if ($save_to_transient || isset($_REQUEST['activate-selected'])) { |
|
858 | + self::$_espresso_notices = array_merge( |
|
859 | + EE_Error::getStoredNotices(), |
|
860 | + self::$_espresso_notices |
|
861 | + ); |
|
862 | + EE_Error::storeNotices(self::$_espresso_notices); |
|
863 | + return array(); |
|
864 | + } |
|
865 | + $print_scripts = EE_Error::combineExistingAndNewNotices(); |
|
866 | + // check for success messages |
|
867 | + if (self::$_espresso_notices['success'] && ! empty(self::$_espresso_notices['success'])) { |
|
868 | + // combine messages |
|
869 | + $success_messages .= implode(self::$_espresso_notices['success'], '<br />'); |
|
870 | + $print_scripts = true; |
|
871 | + } |
|
872 | + // check for attention messages |
|
873 | + if (self::$_espresso_notices['attention'] && ! empty(self::$_espresso_notices['attention'])) { |
|
874 | + // combine messages |
|
875 | + $attention_messages .= implode(self::$_espresso_notices['attention'], '<br />'); |
|
876 | + $print_scripts = true; |
|
877 | + } |
|
878 | + // check for error messages |
|
879 | + if (self::$_espresso_notices['errors'] && ! empty(self::$_espresso_notices['errors'])) { |
|
880 | + $error_messages .= count(self::$_espresso_notices['errors']) > 1 |
|
881 | + ? __('The following errors have occurred:<br />', 'event_espresso') |
|
882 | + : __('An error has occurred:<br />', 'event_espresso'); |
|
883 | + // combine messages |
|
884 | + $error_messages .= implode(self::$_espresso_notices['errors'], '<br />'); |
|
885 | + $print_scripts = true; |
|
886 | + } |
|
887 | + if ($format_output) { |
|
888 | + $notices = EE_Error::formatNoticesOutput( |
|
889 | + $success_messages, |
|
890 | + $attention_messages, |
|
891 | + $error_messages |
|
892 | + ); |
|
893 | + } else { |
|
894 | + $notices = array( |
|
895 | + 'success' => $success_messages, |
|
896 | + 'attention' => $attention_messages, |
|
897 | + 'errors' => $error_messages, |
|
898 | + ); |
|
899 | + if ($remove_empty) { |
|
900 | + // remove empty notices |
|
901 | + foreach ($notices as $type => $notice) { |
|
902 | + if (empty($notice)) { |
|
903 | + unset($notices[ $type ]); |
|
904 | + } |
|
905 | + } |
|
906 | + } |
|
907 | + } |
|
908 | + if ($print_scripts) { |
|
909 | + self::_print_scripts(); |
|
910 | + } |
|
911 | + return $notices; |
|
912 | + } |
|
913 | + |
|
914 | + |
|
915 | + /** |
|
916 | + * @return bool |
|
917 | + * @throws InvalidArgumentException |
|
918 | + * @throws InvalidDataTypeException |
|
919 | + * @throws InvalidInterfaceException |
|
920 | + */ |
|
921 | + private static function combineExistingAndNewNotices() |
|
922 | + { |
|
923 | + $print_scripts = false; |
|
924 | + // grab any notices that have been previously saved |
|
925 | + $notices = EE_Error::getStoredNotices(); |
|
926 | + if (! empty($notices)) { |
|
927 | + foreach ($notices as $type => $notice) { |
|
928 | + if (is_array($notice) && ! empty($notice)) { |
|
929 | + // make sure that existing notice type is an array |
|
930 | + self::$_espresso_notices[ $type ] = is_array(self::$_espresso_notices[ $type ]) |
|
931 | + && ! empty(self::$_espresso_notices[ $type ]) |
|
932 | + ? self::$_espresso_notices[ $type ] |
|
933 | + : array(); |
|
934 | + // add newly created notices to existing ones |
|
935 | + self::$_espresso_notices[ $type ] += $notice; |
|
936 | + $print_scripts = true; |
|
937 | + } |
|
938 | + } |
|
939 | + // now clear any stored notices |
|
940 | + EE_Error::clearNotices(); |
|
941 | + } |
|
942 | + return $print_scripts; |
|
943 | + } |
|
944 | + |
|
945 | + |
|
946 | + /** |
|
947 | + * @param string $success_messages |
|
948 | + * @param string $attention_messages |
|
949 | + * @param string $error_messages |
|
950 | + * @return string |
|
951 | + */ |
|
952 | + private static function formatNoticesOutput($success_messages, $attention_messages, $error_messages) |
|
953 | + { |
|
954 | + $notices = '<div id="espresso-notices">'; |
|
955 | + $close = is_admin() |
|
956 | + ? '' |
|
957 | + : '<a class="close-espresso-notice hide-if-no-js"><span class="dashicons dashicons-no"/></a>'; |
|
958 | + if ($success_messages !== '') { |
|
959 | + $css_id = is_admin() ? 'ee-success-message' : 'espresso-notices-success'; |
|
960 | + $css_class = is_admin() ? 'updated fade' : 'success fade-away'; |
|
961 | + // showMessage( $success_messages ); |
|
962 | + $notices .= '<div id="' . $css_id . '" ' |
|
963 | + . 'class="espresso-notices ' . $css_class . '" ' |
|
964 | + . 'style="display:none;">' |
|
965 | + . '<p>' . $success_messages . '</p>' |
|
966 | + . $close |
|
967 | + . '</div>'; |
|
968 | + } |
|
969 | + if ($attention_messages !== '') { |
|
970 | + $css_id = is_admin() ? 'ee-attention-message' : 'espresso-notices-attention'; |
|
971 | + $css_class = is_admin() ? 'updated ee-notices-attention' : 'attention fade-away'; |
|
972 | + // showMessage( $error_messages, TRUE ); |
|
973 | + $notices .= '<div id="' . $css_id . '" ' |
|
974 | + . 'class="espresso-notices ' . $css_class . '" ' |
|
975 | + . 'style="display:none;">' |
|
976 | + . '<p>' . $attention_messages . '</p>' |
|
977 | + . $close |
|
978 | + . '</div>'; |
|
979 | + } |
|
980 | + if ($error_messages !== '') { |
|
981 | + $css_id = is_admin() ? 'ee-error-message' : 'espresso-notices-error'; |
|
982 | + $css_class = is_admin() ? 'error' : 'error fade-away'; |
|
983 | + // showMessage( $error_messages, TRUE ); |
|
984 | + $notices .= '<div id="' . $css_id . '" ' |
|
985 | + . 'class="espresso-notices ' . $css_class . '" ' |
|
986 | + . 'style="display:none;">' |
|
987 | + . '<p>' . $error_messages . '</p>' |
|
988 | + . $close |
|
989 | + . '</div>'; |
|
990 | + } |
|
991 | + $notices .= '</div>'; |
|
992 | + return $notices; |
|
993 | + } |
|
994 | + |
|
995 | + |
|
996 | + /** |
|
997 | + * _print_scripts |
|
998 | + * |
|
999 | + * @param bool $force_print |
|
1000 | + * @return string |
|
1001 | + */ |
|
1002 | + private static function _print_scripts($force_print = false) |
|
1003 | + { |
|
1004 | + if (! $force_print && (did_action('admin_enqueue_scripts') || did_action('wp_enqueue_scripts'))) { |
|
1005 | + if (wp_script_is('ee_error_js', 'enqueued')) { |
|
1006 | + return ''; |
|
1007 | + } |
|
1008 | + if (wp_script_is('ee_error_js', 'registered')) { |
|
1009 | + wp_enqueue_style('espresso_default'); |
|
1010 | + wp_enqueue_style('espresso_custom_css'); |
|
1011 | + wp_enqueue_script('ee_error_js'); |
|
1012 | + wp_localize_script('ee_error_js', 'ee_settings', array('wp_debug' => WP_DEBUG)); |
|
1013 | + } |
|
1014 | + } else { |
|
1015 | + return ' |
|
1016 | 1016 | <script> |
1017 | 1017 | /* <![CDATA[ */ |
1018 | 1018 | var ee_settings = {"wp_debug":"' . WP_DEBUG . '"}; |
@@ -1022,221 +1022,221 @@ discard block |
||
1022 | 1022 | <script src="' . EE_GLOBAL_ASSETS_URL . 'scripts/espresso_core.js' . '?ver=' . espresso_version() . '" type="text/javascript"></script> |
1023 | 1023 | <script src="' . EE_GLOBAL_ASSETS_URL . 'scripts/EE_Error.js' . '?ver=' . espresso_version() . '" type="text/javascript"></script> |
1024 | 1024 | '; |
1025 | - } |
|
1026 | - return ''; |
|
1027 | - } |
|
1028 | - |
|
1029 | - |
|
1030 | - /** |
|
1031 | - * @return void |
|
1032 | - */ |
|
1033 | - public static function enqueue_error_scripts() |
|
1034 | - { |
|
1035 | - self::_print_scripts(); |
|
1036 | - } |
|
1037 | - |
|
1038 | - |
|
1039 | - /** |
|
1040 | - * create error code from filepath, function name, |
|
1041 | - * and line number where exception or error was thrown |
|
1042 | - * |
|
1043 | - * @param string $file |
|
1044 | - * @param string $func |
|
1045 | - * @param string $line |
|
1046 | - * @return string |
|
1047 | - */ |
|
1048 | - public static function generate_error_code($file = '', $func = '', $line = '') |
|
1049 | - { |
|
1050 | - $file = explode('.', basename($file)); |
|
1051 | - $error_code = ! empty($file[0]) ? $file[0] : ''; |
|
1052 | - $error_code .= ! empty($func) ? ' - ' . $func : ''; |
|
1053 | - $error_code .= ! empty($line) ? ' - ' . $line : ''; |
|
1054 | - return $error_code; |
|
1055 | - } |
|
1056 | - |
|
1057 | - |
|
1058 | - /** |
|
1059 | - * write exception details to log file |
|
1060 | - * Since 4.9.53.rc.006 this writes to the standard PHP log file, not EE's custom log file |
|
1061 | - * |
|
1062 | - * @param int $time |
|
1063 | - * @param array $ex |
|
1064 | - * @param bool $clear |
|
1065 | - * @return void |
|
1066 | - */ |
|
1067 | - public function write_to_error_log($time = 0, $ex = array(), $clear = false) |
|
1068 | - { |
|
1069 | - if (empty($ex)) { |
|
1070 | - return; |
|
1071 | - } |
|
1072 | - if (! $time) { |
|
1073 | - $time = time(); |
|
1074 | - } |
|
1075 | - $exception_log = '----------------------------------------------------------------------------------------' |
|
1076 | - . PHP_EOL; |
|
1077 | - $exception_log .= '[' . date('Y-m-d H:i:s', $time) . '] Exception Details' . PHP_EOL; |
|
1078 | - $exception_log .= 'Message: ' . $ex['msg'] . PHP_EOL; |
|
1079 | - $exception_log .= 'Code: ' . $ex['code'] . PHP_EOL; |
|
1080 | - $exception_log .= 'File: ' . $ex['file'] . PHP_EOL; |
|
1081 | - $exception_log .= 'Line No: ' . $ex['line'] . PHP_EOL; |
|
1082 | - $exception_log .= 'Stack trace: ' . PHP_EOL; |
|
1083 | - $exception_log .= $ex['string'] . PHP_EOL; |
|
1084 | - $exception_log .= '----------------------------------------------------------------------------------------' |
|
1085 | - . PHP_EOL; |
|
1086 | - try { |
|
1087 | - error_log($exception_log); |
|
1088 | - } catch (EE_Error $e) { |
|
1089 | - EE_Error::add_error( |
|
1090 | - sprintf( |
|
1091 | - __( |
|
1092 | - 'Event Espresso error logging could not be setup because: %s', |
|
1093 | - 'event_espresso' |
|
1094 | - ), |
|
1095 | - $e->getMessage() |
|
1096 | - ) |
|
1097 | - ); |
|
1098 | - } |
|
1099 | - } |
|
1100 | - |
|
1101 | - |
|
1102 | - /** |
|
1103 | - * This is just a wrapper for the EEH_Debug_Tools::instance()->doing_it_wrong() method. |
|
1104 | - * doing_it_wrong() is used in those cases where a normal PHP error won't get thrown, |
|
1105 | - * but the code execution is done in a manner that could lead to unexpected results |
|
1106 | - * (i.e. running to early, or too late in WP or EE loading process). |
|
1107 | - * A good test for knowing whether to use this method is: |
|
1108 | - * 1. Is there going to be a PHP error if something isn't setup/used correctly? |
|
1109 | - * Yes -> use EE_Error::add_error() or throw new EE_Error() |
|
1110 | - * 2. If this is loaded before something else, it won't break anything, |
|
1111 | - * but just wont' do what its supposed to do? Yes -> use EE_Error::doing_it_wrong() |
|
1112 | - * |
|
1113 | - * @uses constant WP_DEBUG test if wp_debug is on or not |
|
1114 | - * @param string $function The function that was called |
|
1115 | - * @param string $message A message explaining what has been done incorrectly |
|
1116 | - * @param string $version The version of Event Espresso where the error was added |
|
1117 | - * @param string $applies_when a version string for when you want the doing_it_wrong notice to begin appearing |
|
1118 | - * for a deprecated function. This allows deprecation to occur during one version, |
|
1119 | - * but not have any notices appear until a later version. This allows developers |
|
1120 | - * extra time to update their code before notices appear. |
|
1121 | - * @param int $error_type |
|
1122 | - */ |
|
1123 | - public static function doing_it_wrong( |
|
1124 | - $function, |
|
1125 | - $message, |
|
1126 | - $version, |
|
1127 | - $applies_when = '', |
|
1128 | - $error_type = null |
|
1129 | - ) { |
|
1130 | - if (defined('WP_DEBUG') && WP_DEBUG) { |
|
1131 | - EEH_Debug_Tools::instance()->doing_it_wrong($function, $message, $version, $applies_when, $error_type); |
|
1132 | - } |
|
1133 | - } |
|
1134 | - |
|
1135 | - |
|
1136 | - /** |
|
1137 | - * Like get_notices, but returns an array of all the notices of the given type. |
|
1138 | - * |
|
1139 | - * @return array { |
|
1140 | - * @type array $success all the success messages |
|
1141 | - * @type array $errors all the error messages |
|
1142 | - * @type array $attention all the attention messages |
|
1143 | - * } |
|
1144 | - */ |
|
1145 | - public static function get_raw_notices() |
|
1146 | - { |
|
1147 | - return self::$_espresso_notices; |
|
1148 | - } |
|
1149 | - |
|
1150 | - |
|
1151 | - /** |
|
1152 | - * @deprecated 4.9.27 |
|
1153 | - * @param string $pan_name the name, or key of the Persistent Admin Notice to be stored |
|
1154 | - * @param string $pan_message the message to be stored persistently until dismissed |
|
1155 | - * @param bool $force_update allows one to enforce the reappearance of a persistent message. |
|
1156 | - * @return void |
|
1157 | - * @throws InvalidDataTypeException |
|
1158 | - */ |
|
1159 | - public static function add_persistent_admin_notice($pan_name = '', $pan_message, $force_update = false) |
|
1160 | - { |
|
1161 | - new PersistentAdminNotice( |
|
1162 | - $pan_name, |
|
1163 | - $pan_message, |
|
1164 | - $force_update |
|
1165 | - ); |
|
1166 | - EE_Error::doing_it_wrong( |
|
1167 | - __METHOD__, |
|
1168 | - sprintf( |
|
1169 | - __('Usage is deprecated. Use "%1$s" instead.', 'event_espresso'), |
|
1170 | - '\EventEspresso\core\domain\entities\notifications\PersistentAdminNotice' |
|
1171 | - ), |
|
1172 | - '4.9.27' |
|
1173 | - ); |
|
1174 | - } |
|
1175 | - |
|
1176 | - |
|
1177 | - /** |
|
1178 | - * @deprecated 4.9.27 |
|
1179 | - * @param string $pan_name the name, or key of the Persistent Admin Notice to be dismissed |
|
1180 | - * @param bool $purge |
|
1181 | - * @param bool $return |
|
1182 | - * @throws DomainException |
|
1183 | - * @throws InvalidInterfaceException |
|
1184 | - * @throws InvalidDataTypeException |
|
1185 | - * @throws ServiceNotFoundException |
|
1186 | - * @throws InvalidArgumentException |
|
1187 | - */ |
|
1188 | - public static function dismiss_persistent_admin_notice($pan_name = '', $purge = false, $return = false) |
|
1189 | - { |
|
1190 | - /** @var PersistentAdminNoticeManager $persistent_admin_notice_manager */ |
|
1191 | - $persistent_admin_notice_manager = LoaderFactory::getLoader()->getShared( |
|
1192 | - 'EventEspresso\core\services\notifications\PersistentAdminNoticeManager' |
|
1193 | - ); |
|
1194 | - $persistent_admin_notice_manager->dismissNotice($pan_name, $purge, $return); |
|
1195 | - EE_Error::doing_it_wrong( |
|
1196 | - __METHOD__, |
|
1197 | - sprintf( |
|
1198 | - __('Usage is deprecated. Use "%1$s" instead.', 'event_espresso'), |
|
1199 | - '\EventEspresso\core\services\notifications\PersistentAdminNoticeManager' |
|
1200 | - ), |
|
1201 | - '4.9.27' |
|
1202 | - ); |
|
1203 | - } |
|
1204 | - |
|
1205 | - |
|
1206 | - /** |
|
1207 | - * @deprecated 4.9.27 |
|
1208 | - * @param string $pan_name the name, or key of the Persistent Admin Notice to be stored |
|
1209 | - * @param string $pan_message the message to be stored persistently until dismissed |
|
1210 | - * @param string $return_url URL to go back to after nag notice is dismissed |
|
1211 | - */ |
|
1212 | - public static function display_persistent_admin_notices($pan_name = '', $pan_message = '', $return_url = '') |
|
1213 | - { |
|
1214 | - EE_Error::doing_it_wrong( |
|
1215 | - __METHOD__, |
|
1216 | - sprintf( |
|
1217 | - __('Usage is deprecated. Use "%1$s" instead.', 'event_espresso'), |
|
1218 | - '\EventEspresso\core\services\notifications\PersistentAdminNoticeManager' |
|
1219 | - ), |
|
1220 | - '4.9.27' |
|
1221 | - ); |
|
1222 | - } |
|
1223 | - |
|
1224 | - |
|
1225 | - /** |
|
1226 | - * @deprecated 4.9.27 |
|
1227 | - * @param string $return_url |
|
1228 | - */ |
|
1229 | - public static function get_persistent_admin_notices($return_url = '') |
|
1230 | - { |
|
1231 | - EE_Error::doing_it_wrong( |
|
1232 | - __METHOD__, |
|
1233 | - sprintf( |
|
1234 | - __('Usage is deprecated. Use "%1$s" instead.', 'event_espresso'), |
|
1235 | - '\EventEspresso\core\services\notifications\PersistentAdminNoticeManager' |
|
1236 | - ), |
|
1237 | - '4.9.27' |
|
1238 | - ); |
|
1239 | - } |
|
1025 | + } |
|
1026 | + return ''; |
|
1027 | + } |
|
1028 | + |
|
1029 | + |
|
1030 | + /** |
|
1031 | + * @return void |
|
1032 | + */ |
|
1033 | + public static function enqueue_error_scripts() |
|
1034 | + { |
|
1035 | + self::_print_scripts(); |
|
1036 | + } |
|
1037 | + |
|
1038 | + |
|
1039 | + /** |
|
1040 | + * create error code from filepath, function name, |
|
1041 | + * and line number where exception or error was thrown |
|
1042 | + * |
|
1043 | + * @param string $file |
|
1044 | + * @param string $func |
|
1045 | + * @param string $line |
|
1046 | + * @return string |
|
1047 | + */ |
|
1048 | + public static function generate_error_code($file = '', $func = '', $line = '') |
|
1049 | + { |
|
1050 | + $file = explode('.', basename($file)); |
|
1051 | + $error_code = ! empty($file[0]) ? $file[0] : ''; |
|
1052 | + $error_code .= ! empty($func) ? ' - ' . $func : ''; |
|
1053 | + $error_code .= ! empty($line) ? ' - ' . $line : ''; |
|
1054 | + return $error_code; |
|
1055 | + } |
|
1056 | + |
|
1057 | + |
|
1058 | + /** |
|
1059 | + * write exception details to log file |
|
1060 | + * Since 4.9.53.rc.006 this writes to the standard PHP log file, not EE's custom log file |
|
1061 | + * |
|
1062 | + * @param int $time |
|
1063 | + * @param array $ex |
|
1064 | + * @param bool $clear |
|
1065 | + * @return void |
|
1066 | + */ |
|
1067 | + public function write_to_error_log($time = 0, $ex = array(), $clear = false) |
|
1068 | + { |
|
1069 | + if (empty($ex)) { |
|
1070 | + return; |
|
1071 | + } |
|
1072 | + if (! $time) { |
|
1073 | + $time = time(); |
|
1074 | + } |
|
1075 | + $exception_log = '----------------------------------------------------------------------------------------' |
|
1076 | + . PHP_EOL; |
|
1077 | + $exception_log .= '[' . date('Y-m-d H:i:s', $time) . '] Exception Details' . PHP_EOL; |
|
1078 | + $exception_log .= 'Message: ' . $ex['msg'] . PHP_EOL; |
|
1079 | + $exception_log .= 'Code: ' . $ex['code'] . PHP_EOL; |
|
1080 | + $exception_log .= 'File: ' . $ex['file'] . PHP_EOL; |
|
1081 | + $exception_log .= 'Line No: ' . $ex['line'] . PHP_EOL; |
|
1082 | + $exception_log .= 'Stack trace: ' . PHP_EOL; |
|
1083 | + $exception_log .= $ex['string'] . PHP_EOL; |
|
1084 | + $exception_log .= '----------------------------------------------------------------------------------------' |
|
1085 | + . PHP_EOL; |
|
1086 | + try { |
|
1087 | + error_log($exception_log); |
|
1088 | + } catch (EE_Error $e) { |
|
1089 | + EE_Error::add_error( |
|
1090 | + sprintf( |
|
1091 | + __( |
|
1092 | + 'Event Espresso error logging could not be setup because: %s', |
|
1093 | + 'event_espresso' |
|
1094 | + ), |
|
1095 | + $e->getMessage() |
|
1096 | + ) |
|
1097 | + ); |
|
1098 | + } |
|
1099 | + } |
|
1100 | + |
|
1101 | + |
|
1102 | + /** |
|
1103 | + * This is just a wrapper for the EEH_Debug_Tools::instance()->doing_it_wrong() method. |
|
1104 | + * doing_it_wrong() is used in those cases where a normal PHP error won't get thrown, |
|
1105 | + * but the code execution is done in a manner that could lead to unexpected results |
|
1106 | + * (i.e. running to early, or too late in WP or EE loading process). |
|
1107 | + * A good test for knowing whether to use this method is: |
|
1108 | + * 1. Is there going to be a PHP error if something isn't setup/used correctly? |
|
1109 | + * Yes -> use EE_Error::add_error() or throw new EE_Error() |
|
1110 | + * 2. If this is loaded before something else, it won't break anything, |
|
1111 | + * but just wont' do what its supposed to do? Yes -> use EE_Error::doing_it_wrong() |
|
1112 | + * |
|
1113 | + * @uses constant WP_DEBUG test if wp_debug is on or not |
|
1114 | + * @param string $function The function that was called |
|
1115 | + * @param string $message A message explaining what has been done incorrectly |
|
1116 | + * @param string $version The version of Event Espresso where the error was added |
|
1117 | + * @param string $applies_when a version string for when you want the doing_it_wrong notice to begin appearing |
|
1118 | + * for a deprecated function. This allows deprecation to occur during one version, |
|
1119 | + * but not have any notices appear until a later version. This allows developers |
|
1120 | + * extra time to update their code before notices appear. |
|
1121 | + * @param int $error_type |
|
1122 | + */ |
|
1123 | + public static function doing_it_wrong( |
|
1124 | + $function, |
|
1125 | + $message, |
|
1126 | + $version, |
|
1127 | + $applies_when = '', |
|
1128 | + $error_type = null |
|
1129 | + ) { |
|
1130 | + if (defined('WP_DEBUG') && WP_DEBUG) { |
|
1131 | + EEH_Debug_Tools::instance()->doing_it_wrong($function, $message, $version, $applies_when, $error_type); |
|
1132 | + } |
|
1133 | + } |
|
1134 | + |
|
1135 | + |
|
1136 | + /** |
|
1137 | + * Like get_notices, but returns an array of all the notices of the given type. |
|
1138 | + * |
|
1139 | + * @return array { |
|
1140 | + * @type array $success all the success messages |
|
1141 | + * @type array $errors all the error messages |
|
1142 | + * @type array $attention all the attention messages |
|
1143 | + * } |
|
1144 | + */ |
|
1145 | + public static function get_raw_notices() |
|
1146 | + { |
|
1147 | + return self::$_espresso_notices; |
|
1148 | + } |
|
1149 | + |
|
1150 | + |
|
1151 | + /** |
|
1152 | + * @deprecated 4.9.27 |
|
1153 | + * @param string $pan_name the name, or key of the Persistent Admin Notice to be stored |
|
1154 | + * @param string $pan_message the message to be stored persistently until dismissed |
|
1155 | + * @param bool $force_update allows one to enforce the reappearance of a persistent message. |
|
1156 | + * @return void |
|
1157 | + * @throws InvalidDataTypeException |
|
1158 | + */ |
|
1159 | + public static function add_persistent_admin_notice($pan_name = '', $pan_message, $force_update = false) |
|
1160 | + { |
|
1161 | + new PersistentAdminNotice( |
|
1162 | + $pan_name, |
|
1163 | + $pan_message, |
|
1164 | + $force_update |
|
1165 | + ); |
|
1166 | + EE_Error::doing_it_wrong( |
|
1167 | + __METHOD__, |
|
1168 | + sprintf( |
|
1169 | + __('Usage is deprecated. Use "%1$s" instead.', 'event_espresso'), |
|
1170 | + '\EventEspresso\core\domain\entities\notifications\PersistentAdminNotice' |
|
1171 | + ), |
|
1172 | + '4.9.27' |
|
1173 | + ); |
|
1174 | + } |
|
1175 | + |
|
1176 | + |
|
1177 | + /** |
|
1178 | + * @deprecated 4.9.27 |
|
1179 | + * @param string $pan_name the name, or key of the Persistent Admin Notice to be dismissed |
|
1180 | + * @param bool $purge |
|
1181 | + * @param bool $return |
|
1182 | + * @throws DomainException |
|
1183 | + * @throws InvalidInterfaceException |
|
1184 | + * @throws InvalidDataTypeException |
|
1185 | + * @throws ServiceNotFoundException |
|
1186 | + * @throws InvalidArgumentException |
|
1187 | + */ |
|
1188 | + public static function dismiss_persistent_admin_notice($pan_name = '', $purge = false, $return = false) |
|
1189 | + { |
|
1190 | + /** @var PersistentAdminNoticeManager $persistent_admin_notice_manager */ |
|
1191 | + $persistent_admin_notice_manager = LoaderFactory::getLoader()->getShared( |
|
1192 | + 'EventEspresso\core\services\notifications\PersistentAdminNoticeManager' |
|
1193 | + ); |
|
1194 | + $persistent_admin_notice_manager->dismissNotice($pan_name, $purge, $return); |
|
1195 | + EE_Error::doing_it_wrong( |
|
1196 | + __METHOD__, |
|
1197 | + sprintf( |
|
1198 | + __('Usage is deprecated. Use "%1$s" instead.', 'event_espresso'), |
|
1199 | + '\EventEspresso\core\services\notifications\PersistentAdminNoticeManager' |
|
1200 | + ), |
|
1201 | + '4.9.27' |
|
1202 | + ); |
|
1203 | + } |
|
1204 | + |
|
1205 | + |
|
1206 | + /** |
|
1207 | + * @deprecated 4.9.27 |
|
1208 | + * @param string $pan_name the name, or key of the Persistent Admin Notice to be stored |
|
1209 | + * @param string $pan_message the message to be stored persistently until dismissed |
|
1210 | + * @param string $return_url URL to go back to after nag notice is dismissed |
|
1211 | + */ |
|
1212 | + public static function display_persistent_admin_notices($pan_name = '', $pan_message = '', $return_url = '') |
|
1213 | + { |
|
1214 | + EE_Error::doing_it_wrong( |
|
1215 | + __METHOD__, |
|
1216 | + sprintf( |
|
1217 | + __('Usage is deprecated. Use "%1$s" instead.', 'event_espresso'), |
|
1218 | + '\EventEspresso\core\services\notifications\PersistentAdminNoticeManager' |
|
1219 | + ), |
|
1220 | + '4.9.27' |
|
1221 | + ); |
|
1222 | + } |
|
1223 | + |
|
1224 | + |
|
1225 | + /** |
|
1226 | + * @deprecated 4.9.27 |
|
1227 | + * @param string $return_url |
|
1228 | + */ |
|
1229 | + public static function get_persistent_admin_notices($return_url = '') |
|
1230 | + { |
|
1231 | + EE_Error::doing_it_wrong( |
|
1232 | + __METHOD__, |
|
1233 | + sprintf( |
|
1234 | + __('Usage is deprecated. Use "%1$s" instead.', 'event_espresso'), |
|
1235 | + '\EventEspresso\core\services\notifications\PersistentAdminNoticeManager' |
|
1236 | + ), |
|
1237 | + '4.9.27' |
|
1238 | + ); |
|
1239 | + } |
|
1240 | 1240 | } |
1241 | 1241 | |
1242 | 1242 | // end of Class EE_Exceptions |
@@ -1249,27 +1249,27 @@ discard block |
||
1249 | 1249 | */ |
1250 | 1250 | function espresso_error_enqueue_scripts() |
1251 | 1251 | { |
1252 | - // js for error handling |
|
1253 | - wp_register_script( |
|
1254 | - 'espresso_core', |
|
1255 | - EE_GLOBAL_ASSETS_URL . 'scripts/espresso_core.js', |
|
1256 | - array('jquery'), |
|
1257 | - EVENT_ESPRESSO_VERSION, |
|
1258 | - false |
|
1259 | - ); |
|
1260 | - wp_register_script( |
|
1261 | - 'ee_error_js', |
|
1262 | - EE_GLOBAL_ASSETS_URL . 'scripts/EE_Error.js', |
|
1263 | - array('espresso_core'), |
|
1264 | - EVENT_ESPRESSO_VERSION, |
|
1265 | - false |
|
1266 | - ); |
|
1252 | + // js for error handling |
|
1253 | + wp_register_script( |
|
1254 | + 'espresso_core', |
|
1255 | + EE_GLOBAL_ASSETS_URL . 'scripts/espresso_core.js', |
|
1256 | + array('jquery'), |
|
1257 | + EVENT_ESPRESSO_VERSION, |
|
1258 | + false |
|
1259 | + ); |
|
1260 | + wp_register_script( |
|
1261 | + 'ee_error_js', |
|
1262 | + EE_GLOBAL_ASSETS_URL . 'scripts/EE_Error.js', |
|
1263 | + array('espresso_core'), |
|
1264 | + EVENT_ESPRESSO_VERSION, |
|
1265 | + false |
|
1266 | + ); |
|
1267 | 1267 | } |
1268 | 1268 | |
1269 | 1269 | if (is_admin()) { |
1270 | - add_action('admin_enqueue_scripts', 'espresso_error_enqueue_scripts', 5); |
|
1270 | + add_action('admin_enqueue_scripts', 'espresso_error_enqueue_scripts', 5); |
|
1271 | 1271 | } else { |
1272 | - add_action('wp_enqueue_scripts', 'espresso_error_enqueue_scripts', 5); |
|
1272 | + add_action('wp_enqueue_scripts', 'espresso_error_enqueue_scripts', 5); |
|
1273 | 1273 | } |
1274 | 1274 | |
1275 | 1275 |
@@ -73,7 +73,7 @@ |
||
73 | 73 | } |
74 | 74 | $session_lifespan_in_hours = round($this->session_lifespan->inSeconds() / HOUR_IN_SECONDS); |
75 | 75 | return (string) EEH_Template::display_template( |
76 | - __DIR__ . '/privacy_policy.template.php', |
|
76 | + __DIR__.'/privacy_policy.template.php', |
|
77 | 77 | array( |
78 | 78 | 'active_onsite_payment_methods' => $active_onsite_pms, |
79 | 79 | 'active_offsite_payment_methods' => $active_offsite_pms, |
@@ -20,80 +20,80 @@ |
||
20 | 20 | class PrivacyPolicy implements PrivacyPolicyInterface |
21 | 21 | { |
22 | 22 | |
23 | - /** |
|
24 | - * @var EEM_Payment_Method |
|
25 | - */ |
|
26 | - protected $payment_method_model; |
|
23 | + /** |
|
24 | + * @var EEM_Payment_Method |
|
25 | + */ |
|
26 | + protected $payment_method_model; |
|
27 | 27 | |
28 | - /** |
|
29 | - * @var SessionLifespan |
|
30 | - */ |
|
31 | - protected $session_lifespan; |
|
28 | + /** |
|
29 | + * @var SessionLifespan |
|
30 | + */ |
|
31 | + protected $session_lifespan; |
|
32 | 32 | |
33 | - /** |
|
34 | - * PrivacyPolicy constructor. |
|
35 | - * |
|
36 | - * @param EEM_Payment_Method $payment_method_model |
|
37 | - * @param SessionLifespan $session_lifespan |
|
38 | - */ |
|
39 | - public function __construct(EEM_Payment_Method $payment_method_model, SessionLifespan $session_lifespan) |
|
40 | - { |
|
41 | - $this->payment_method_model = $payment_method_model; |
|
42 | - $this->session_lifespan = $session_lifespan; |
|
43 | - } |
|
33 | + /** |
|
34 | + * PrivacyPolicy constructor. |
|
35 | + * |
|
36 | + * @param EEM_Payment_Method $payment_method_model |
|
37 | + * @param SessionLifespan $session_lifespan |
|
38 | + */ |
|
39 | + public function __construct(EEM_Payment_Method $payment_method_model, SessionLifespan $session_lifespan) |
|
40 | + { |
|
41 | + $this->payment_method_model = $payment_method_model; |
|
42 | + $this->session_lifespan = $session_lifespan; |
|
43 | + } |
|
44 | 44 | |
45 | 45 | |
46 | - /** |
|
47 | - * Returns the name of the plugin and will be shown in the privacy policy's postbox header |
|
48 | - * |
|
49 | - * @return string |
|
50 | - */ |
|
51 | - public function getName() |
|
52 | - { |
|
53 | - return esc_html__('Event Espresso', 'event_espresso'); |
|
54 | - } |
|
46 | + /** |
|
47 | + * Returns the name of the plugin and will be shown in the privacy policy's postbox header |
|
48 | + * |
|
49 | + * @return string |
|
50 | + */ |
|
51 | + public function getName() |
|
52 | + { |
|
53 | + return esc_html__('Event Espresso', 'event_espresso'); |
|
54 | + } |
|
55 | 55 | |
56 | 56 | |
57 | - /** |
|
58 | - * Gets the HTML for the privacy policy. May be dynamic |
|
59 | - * |
|
60 | - * @return string |
|
61 | - */ |
|
62 | - public function getContent() |
|
63 | - { |
|
64 | - // do they have any offsite payment methods? or onsite payment methods? |
|
65 | - $active_payment_methods = $this->payment_method_model->get_all_active(EEM_Payment_Method::scope_cart); |
|
66 | - $active_onsite_pms = array(); |
|
67 | - $active_offsite_pms = array(); |
|
68 | - foreach ($active_payment_methods as $payment_method) { |
|
69 | - if ($payment_method->type_obj() instanceof \EE_PMT_Base) { |
|
70 | - if ($payment_method->type_obj()->get_gateway() instanceof EE_Onsite_Gateway) { |
|
71 | - $active_onsite_pms[] = $payment_method->name(); |
|
72 | - } elseif ($payment_method->type_obj()->get_gateway() instanceof EE_Offsite_Gateway) { |
|
73 | - $active_offsite_pms[] = $payment_method->name(); |
|
74 | - } |
|
75 | - } |
|
76 | - } |
|
77 | - $session_lifespan_in_hours = round($this->session_lifespan->inSeconds() / HOUR_IN_SECONDS); |
|
78 | - return (string) EEH_Template::display_template( |
|
79 | - __DIR__ . '/privacy_policy.template.php', |
|
80 | - array( |
|
81 | - 'active_onsite_payment_methods' => $active_onsite_pms, |
|
82 | - 'active_offsite_payment_methods' => $active_offsite_pms, |
|
83 | - 'session_lifespan' => sprintf( |
|
84 | - _nx( |
|
85 | - '%1$s hour', |
|
86 | - '%1$s hours', |
|
87 | - $session_lifespan_in_hours, |
|
88 | - '2 hours', |
|
89 | - 'event_espresso' |
|
90 | - ), |
|
91 | - $session_lifespan_in_hours |
|
92 | - ) |
|
93 | - ), |
|
94 | - true |
|
95 | - ); |
|
96 | - } |
|
57 | + /** |
|
58 | + * Gets the HTML for the privacy policy. May be dynamic |
|
59 | + * |
|
60 | + * @return string |
|
61 | + */ |
|
62 | + public function getContent() |
|
63 | + { |
|
64 | + // do they have any offsite payment methods? or onsite payment methods? |
|
65 | + $active_payment_methods = $this->payment_method_model->get_all_active(EEM_Payment_Method::scope_cart); |
|
66 | + $active_onsite_pms = array(); |
|
67 | + $active_offsite_pms = array(); |
|
68 | + foreach ($active_payment_methods as $payment_method) { |
|
69 | + if ($payment_method->type_obj() instanceof \EE_PMT_Base) { |
|
70 | + if ($payment_method->type_obj()->get_gateway() instanceof EE_Onsite_Gateway) { |
|
71 | + $active_onsite_pms[] = $payment_method->name(); |
|
72 | + } elseif ($payment_method->type_obj()->get_gateway() instanceof EE_Offsite_Gateway) { |
|
73 | + $active_offsite_pms[] = $payment_method->name(); |
|
74 | + } |
|
75 | + } |
|
76 | + } |
|
77 | + $session_lifespan_in_hours = round($this->session_lifespan->inSeconds() / HOUR_IN_SECONDS); |
|
78 | + return (string) EEH_Template::display_template( |
|
79 | + __DIR__ . '/privacy_policy.template.php', |
|
80 | + array( |
|
81 | + 'active_onsite_payment_methods' => $active_onsite_pms, |
|
82 | + 'active_offsite_payment_methods' => $active_offsite_pms, |
|
83 | + 'session_lifespan' => sprintf( |
|
84 | + _nx( |
|
85 | + '%1$s hour', |
|
86 | + '%1$s hours', |
|
87 | + $session_lifespan_in_hours, |
|
88 | + '2 hours', |
|
89 | + 'event_espresso' |
|
90 | + ), |
|
91 | + $session_lifespan_in_hours |
|
92 | + ) |
|
93 | + ), |
|
94 | + true |
|
95 | + ); |
|
96 | + } |
|
97 | 97 | } |
98 | 98 | // End of file PrivacyPolicy.php |
99 | 99 | // Location: EventEspresso\core\domain\services\admin\privacy\policy\PrivacyPolicy.php |
@@ -17,142 +17,142 @@ |
||
17 | 17 | class JavascriptAsset extends BrowserAsset |
18 | 18 | { |
19 | 19 | |
20 | - /** |
|
21 | - * @var boolean $load_in_footer |
|
22 | - */ |
|
23 | - private $load_in_footer = false; |
|
24 | - |
|
25 | - /** |
|
26 | - * @var boolean $requires_translation |
|
27 | - */ |
|
28 | - private $requires_translation = false; |
|
29 | - |
|
30 | - /** |
|
31 | - * @var boolean $has_localized_data |
|
32 | - */ |
|
33 | - private $has_localized_data = false; |
|
34 | - |
|
35 | - /** |
|
36 | - * @var Closure $localization_callback |
|
37 | - */ |
|
38 | - private $localization_callback; |
|
39 | - |
|
40 | - |
|
41 | - /** |
|
42 | - * Asset constructor. |
|
43 | - * |
|
44 | - * @param string $handle |
|
45 | - * @param string $source |
|
46 | - * @param array $dependencies |
|
47 | - * @param bool $load_in_footer |
|
48 | - * @param DomainInterface $domain |
|
49 | - * @throws InvalidDataTypeException |
|
50 | - */ |
|
51 | - public function __construct( |
|
52 | - $handle, |
|
53 | - $source, |
|
54 | - array $dependencies, |
|
55 | - $load_in_footer, |
|
56 | - DomainInterface $domain |
|
57 | - ) { |
|
58 | - parent::__construct(Asset::TYPE_JS, $handle, $source, $dependencies, $domain); |
|
59 | - $this->setLoadInFooter($load_in_footer); |
|
60 | - } |
|
61 | - |
|
62 | - |
|
63 | - /** |
|
64 | - * @return bool |
|
65 | - */ |
|
66 | - public function loadInFooter() |
|
67 | - { |
|
68 | - return $this->load_in_footer; |
|
69 | - } |
|
70 | - |
|
71 | - |
|
72 | - /** |
|
73 | - * @param bool $load_in_footer |
|
74 | - */ |
|
75 | - private function setLoadInFooter($load_in_footer = true) |
|
76 | - { |
|
77 | - $this->load_in_footer = filter_var($load_in_footer, FILTER_VALIDATE_BOOLEAN); |
|
78 | - } |
|
79 | - |
|
80 | - |
|
81 | - /** |
|
82 | - * @return bool |
|
83 | - */ |
|
84 | - public function requiresTranslation() |
|
85 | - { |
|
86 | - return $this->requires_translation; |
|
87 | - } |
|
88 | - |
|
89 | - |
|
90 | - /** |
|
91 | - * @param bool $requires_translation |
|
92 | - * @return JavascriptAsset |
|
93 | - */ |
|
94 | - public function setRequiresTranslation($requires_translation = true) |
|
95 | - { |
|
96 | - $this->requires_translation = filter_var($requires_translation, FILTER_VALIDATE_BOOLEAN); |
|
97 | - return $this; |
|
98 | - } |
|
99 | - |
|
100 | - |
|
101 | - /** |
|
102 | - * @return bool |
|
103 | - */ |
|
104 | - public function hasLocalizedData() |
|
105 | - { |
|
106 | - return $this->has_localized_data; |
|
107 | - } |
|
108 | - |
|
109 | - |
|
110 | - /** |
|
111 | - * @param bool $has_localized_data |
|
112 | - * @return JavascriptAsset |
|
113 | - */ |
|
114 | - public function setHasLocalizedData($has_localized_data = true) |
|
115 | - { |
|
116 | - $this->has_localized_data = filter_var($has_localized_data, FILTER_VALIDATE_BOOLEAN); |
|
117 | - return $this; |
|
118 | - } |
|
119 | - |
|
120 | - |
|
121 | - /** |
|
122 | - * @return Closure |
|
123 | - */ |
|
124 | - public function localizationCallback() |
|
125 | - { |
|
126 | - return $this->localization_callback; |
|
127 | - } |
|
128 | - |
|
129 | - |
|
130 | - /** |
|
131 | - * @return bool |
|
132 | - */ |
|
133 | - public function hasLocalizationCallback() |
|
134 | - { |
|
135 | - return $this->localization_callback instanceof Closure; |
|
136 | - } |
|
137 | - |
|
138 | - |
|
139 | - /** |
|
140 | - * @param Closure $localization_callback |
|
141 | - * @return JavascriptAsset |
|
142 | - */ |
|
143 | - public function setLocalizationCallback(Closure $localization_callback) |
|
144 | - { |
|
145 | - $this->localization_callback = $localization_callback; |
|
146 | - $this->setHasLocalizedData(); |
|
147 | - return $this; |
|
148 | - } |
|
149 | - |
|
150 | - |
|
151 | - /** |
|
152 | - * @since $VID:$ |
|
153 | - */ |
|
154 | - public function enqueueAsset() |
|
155 | - { |
|
156 | - wp_enqueue_script($this->handle()); |
|
157 | - } |
|
20 | + /** |
|
21 | + * @var boolean $load_in_footer |
|
22 | + */ |
|
23 | + private $load_in_footer = false; |
|
24 | + |
|
25 | + /** |
|
26 | + * @var boolean $requires_translation |
|
27 | + */ |
|
28 | + private $requires_translation = false; |
|
29 | + |
|
30 | + /** |
|
31 | + * @var boolean $has_localized_data |
|
32 | + */ |
|
33 | + private $has_localized_data = false; |
|
34 | + |
|
35 | + /** |
|
36 | + * @var Closure $localization_callback |
|
37 | + */ |
|
38 | + private $localization_callback; |
|
39 | + |
|
40 | + |
|
41 | + /** |
|
42 | + * Asset constructor. |
|
43 | + * |
|
44 | + * @param string $handle |
|
45 | + * @param string $source |
|
46 | + * @param array $dependencies |
|
47 | + * @param bool $load_in_footer |
|
48 | + * @param DomainInterface $domain |
|
49 | + * @throws InvalidDataTypeException |
|
50 | + */ |
|
51 | + public function __construct( |
|
52 | + $handle, |
|
53 | + $source, |
|
54 | + array $dependencies, |
|
55 | + $load_in_footer, |
|
56 | + DomainInterface $domain |
|
57 | + ) { |
|
58 | + parent::__construct(Asset::TYPE_JS, $handle, $source, $dependencies, $domain); |
|
59 | + $this->setLoadInFooter($load_in_footer); |
|
60 | + } |
|
61 | + |
|
62 | + |
|
63 | + /** |
|
64 | + * @return bool |
|
65 | + */ |
|
66 | + public function loadInFooter() |
|
67 | + { |
|
68 | + return $this->load_in_footer; |
|
69 | + } |
|
70 | + |
|
71 | + |
|
72 | + /** |
|
73 | + * @param bool $load_in_footer |
|
74 | + */ |
|
75 | + private function setLoadInFooter($load_in_footer = true) |
|
76 | + { |
|
77 | + $this->load_in_footer = filter_var($load_in_footer, FILTER_VALIDATE_BOOLEAN); |
|
78 | + } |
|
79 | + |
|
80 | + |
|
81 | + /** |
|
82 | + * @return bool |
|
83 | + */ |
|
84 | + public function requiresTranslation() |
|
85 | + { |
|
86 | + return $this->requires_translation; |
|
87 | + } |
|
88 | + |
|
89 | + |
|
90 | + /** |
|
91 | + * @param bool $requires_translation |
|
92 | + * @return JavascriptAsset |
|
93 | + */ |
|
94 | + public function setRequiresTranslation($requires_translation = true) |
|
95 | + { |
|
96 | + $this->requires_translation = filter_var($requires_translation, FILTER_VALIDATE_BOOLEAN); |
|
97 | + return $this; |
|
98 | + } |
|
99 | + |
|
100 | + |
|
101 | + /** |
|
102 | + * @return bool |
|
103 | + */ |
|
104 | + public function hasLocalizedData() |
|
105 | + { |
|
106 | + return $this->has_localized_data; |
|
107 | + } |
|
108 | + |
|
109 | + |
|
110 | + /** |
|
111 | + * @param bool $has_localized_data |
|
112 | + * @return JavascriptAsset |
|
113 | + */ |
|
114 | + public function setHasLocalizedData($has_localized_data = true) |
|
115 | + { |
|
116 | + $this->has_localized_data = filter_var($has_localized_data, FILTER_VALIDATE_BOOLEAN); |
|
117 | + return $this; |
|
118 | + } |
|
119 | + |
|
120 | + |
|
121 | + /** |
|
122 | + * @return Closure |
|
123 | + */ |
|
124 | + public function localizationCallback() |
|
125 | + { |
|
126 | + return $this->localization_callback; |
|
127 | + } |
|
128 | + |
|
129 | + |
|
130 | + /** |
|
131 | + * @return bool |
|
132 | + */ |
|
133 | + public function hasLocalizationCallback() |
|
134 | + { |
|
135 | + return $this->localization_callback instanceof Closure; |
|
136 | + } |
|
137 | + |
|
138 | + |
|
139 | + /** |
|
140 | + * @param Closure $localization_callback |
|
141 | + * @return JavascriptAsset |
|
142 | + */ |
|
143 | + public function setLocalizationCallback(Closure $localization_callback) |
|
144 | + { |
|
145 | + $this->localization_callback = $localization_callback; |
|
146 | + $this->setHasLocalizedData(); |
|
147 | + return $this; |
|
148 | + } |
|
149 | + |
|
150 | + |
|
151 | + /** |
|
152 | + * @since $VID:$ |
|
153 | + */ |
|
154 | + public function enqueueAsset() |
|
155 | + { |
|
156 | + wp_enqueue_script($this->handle()); |
|
157 | + } |
|
158 | 158 | } |
@@ -20,85 +20,85 @@ |
||
20 | 20 | interface AssetManagerInterface |
21 | 21 | { |
22 | 22 | |
23 | - /** |
|
24 | - * @since $VID:$ |
|
25 | - */ |
|
26 | - public function addAssets(); |
|
27 | - |
|
28 | - |
|
29 | - /** |
|
30 | - * @return ManifestFile |
|
31 | - * @throws DuplicateCollectionIdentifierException |
|
32 | - * @throws InvalidDataTypeException |
|
33 | - * @throws InvalidEntityException |
|
34 | - * @since $VID:$ |
|
35 | - */ |
|
36 | - public function addManifestFile(); |
|
37 | - |
|
38 | - |
|
39 | - /** |
|
40 | - * @return ManifestFile[] |
|
41 | - * @since $VID:$ |
|
42 | - */ |
|
43 | - public function getManifestFile(); |
|
44 | - |
|
45 | - |
|
46 | - /** |
|
47 | - * @param string $handle |
|
48 | - * @param string $source |
|
49 | - * @param array $dependencies |
|
50 | - * @param bool $load_in_footer |
|
51 | - * @return JavascriptAsset |
|
52 | - * @throws DuplicateCollectionIdentifierException |
|
53 | - * @throws InvalidDataTypeException |
|
54 | - * @throws InvalidEntityException |
|
55 | - * @since $VID:$ |
|
56 | - */ |
|
57 | - public function addJavascript( |
|
58 | - $handle, |
|
59 | - $source, |
|
60 | - array $dependencies = array(), |
|
61 | - $load_in_footer = true |
|
62 | - ); |
|
63 | - |
|
64 | - |
|
65 | - /** |
|
66 | - * @return JavascriptAsset[] |
|
67 | - * @since $VID:$ |
|
68 | - */ |
|
69 | - public function getJavascriptAssets(); |
|
70 | - |
|
71 | - |
|
72 | - /** |
|
73 | - * @param string $handle |
|
74 | - * @param string $source |
|
75 | - * @param array $dependencies |
|
76 | - * @param string $media |
|
77 | - * @return StylesheetAsset |
|
78 | - * @throws DuplicateCollectionIdentifierException |
|
79 | - * @throws InvalidDataTypeException |
|
80 | - * @throws InvalidEntityException |
|
81 | - * @since $VID:$ |
|
82 | - */ |
|
83 | - public function addStylesheet( |
|
84 | - $handle, |
|
85 | - $source, |
|
86 | - array $dependencies = array(), |
|
87 | - $media = 'all' |
|
88 | - ); |
|
89 | - |
|
90 | - |
|
91 | - /** |
|
92 | - * @return StylesheetAsset[] |
|
93 | - * @since $VID:$ |
|
94 | - */ |
|
95 | - public function getStylesheetAssets(); |
|
96 | - |
|
97 | - |
|
98 | - /** |
|
99 | - * @param string $handle |
|
100 | - * @return bool |
|
101 | - * @since $VID:$ |
|
102 | - */ |
|
103 | - public function enqueueAsset($handle); |
|
23 | + /** |
|
24 | + * @since $VID:$ |
|
25 | + */ |
|
26 | + public function addAssets(); |
|
27 | + |
|
28 | + |
|
29 | + /** |
|
30 | + * @return ManifestFile |
|
31 | + * @throws DuplicateCollectionIdentifierException |
|
32 | + * @throws InvalidDataTypeException |
|
33 | + * @throws InvalidEntityException |
|
34 | + * @since $VID:$ |
|
35 | + */ |
|
36 | + public function addManifestFile(); |
|
37 | + |
|
38 | + |
|
39 | + /** |
|
40 | + * @return ManifestFile[] |
|
41 | + * @since $VID:$ |
|
42 | + */ |
|
43 | + public function getManifestFile(); |
|
44 | + |
|
45 | + |
|
46 | + /** |
|
47 | + * @param string $handle |
|
48 | + * @param string $source |
|
49 | + * @param array $dependencies |
|
50 | + * @param bool $load_in_footer |
|
51 | + * @return JavascriptAsset |
|
52 | + * @throws DuplicateCollectionIdentifierException |
|
53 | + * @throws InvalidDataTypeException |
|
54 | + * @throws InvalidEntityException |
|
55 | + * @since $VID:$ |
|
56 | + */ |
|
57 | + public function addJavascript( |
|
58 | + $handle, |
|
59 | + $source, |
|
60 | + array $dependencies = array(), |
|
61 | + $load_in_footer = true |
|
62 | + ); |
|
63 | + |
|
64 | + |
|
65 | + /** |
|
66 | + * @return JavascriptAsset[] |
|
67 | + * @since $VID:$ |
|
68 | + */ |
|
69 | + public function getJavascriptAssets(); |
|
70 | + |
|
71 | + |
|
72 | + /** |
|
73 | + * @param string $handle |
|
74 | + * @param string $source |
|
75 | + * @param array $dependencies |
|
76 | + * @param string $media |
|
77 | + * @return StylesheetAsset |
|
78 | + * @throws DuplicateCollectionIdentifierException |
|
79 | + * @throws InvalidDataTypeException |
|
80 | + * @throws InvalidEntityException |
|
81 | + * @since $VID:$ |
|
82 | + */ |
|
83 | + public function addStylesheet( |
|
84 | + $handle, |
|
85 | + $source, |
|
86 | + array $dependencies = array(), |
|
87 | + $media = 'all' |
|
88 | + ); |
|
89 | + |
|
90 | + |
|
91 | + /** |
|
92 | + * @return StylesheetAsset[] |
|
93 | + * @since $VID:$ |
|
94 | + */ |
|
95 | + public function getStylesheetAssets(); |
|
96 | + |
|
97 | + |
|
98 | + /** |
|
99 | + * @param string $handle |
|
100 | + * @return bool |
|
101 | + * @since $VID:$ |
|
102 | + */ |
|
103 | + public function enqueueAsset($handle); |
|
104 | 104 | } |
@@ -9,27 +9,27 @@ discard block |
||
9 | 9 | <h1><?php _e("Database Update Crash Report Sent", "event_espresso"); ?></h1> |
10 | 10 | <p> |
11 | 11 | <?php _e( |
12 | - "A crash report email was sent to Event Espresso. You should hear back from us soon.", |
|
13 | - "event_espresso" |
|
14 | - ); ?></p> |
|
12 | + "A crash report email was sent to Event Espresso. You should hear back from us soon.", |
|
13 | + "event_espresso" |
|
14 | + ); ?></p> |
|
15 | 15 | <?php } else {// didn't send email properly ?> |
16 | 16 | <h1><?php _e("Migration Report not sent", "event_espresso"); ?></h1> |
17 | 17 | <p> |
18 | 18 | <?php _e( |
19 | - "An error occurred and we were not able to automatically send a report to Event Espresso support.", |
|
20 | - "event_espresso" |
|
21 | - ); ?></p> |
|
19 | + "An error occurred and we were not able to automatically send a report to Event Espresso support.", |
|
20 | + "event_espresso" |
|
21 | + ); ?></p> |
|
22 | 22 | <p> |
23 | 23 | <?php printf( |
24 | - esc_html__("Please copy-and-paste the system information below to %s", "event_espresso"), |
|
25 | - '<a href="mailto:' . EE_SUPPORT_EMAIL . '">' . EE_SUPPORT_EMAIL . "</a>" |
|
26 | - ); ?></p> |
|
24 | + esc_html__("Please copy-and-paste the system information below to %s", "event_espresso"), |
|
25 | + '<a href="mailto:' . EE_SUPPORT_EMAIL . '">' . EE_SUPPORT_EMAIL . "</a>" |
|
26 | + ); ?></p> |
|
27 | 27 | <label> |
28 | 28 | <?php _e("system status info", "event_espresso"); ?> |
29 | 29 | <textarea name="system_status_info" class="system_status_info"> |
30 | 30 | <?php print_r( |
31 | - EEM_System_Status::instance()->get_system_stati() |
|
32 | - ); ?></textarea> |
|
31 | + EEM_System_Status::instance()->get_system_stati() |
|
32 | + ); ?></textarea> |
|
33 | 33 | </label> |
34 | 34 | <?php } ?> |
35 | 35 | |
@@ -50,32 +50,32 @@ discard block |
||
50 | 50 | <td> |
51 | 51 | <p> |
52 | 52 | <?php |
53 | - printf( |
|
54 | - esc_html__( |
|
55 | - 'First, %1$s check the forums %2$s to see if there is a solution before re-attempting the Database Update. Often it helps to deactivate other plugins which may have conflicts; or it may help to add %3$s to your %4$s wp-config.php%5$s (which will make the update run slower, but may resolve any memory exhaustion errors.', |
|
56 | - 'event_espresso' |
|
57 | - ), |
|
58 | - "<a href='" . EE_SUPPORT_EMAIL . "' target='_blank'>", |
|
59 | - '</a>', |
|
60 | - '<pre lang="php">define( \'EE_MIGRATION_STEP_SIZE\', 10 );</pre>', |
|
61 | - '<b>', |
|
62 | - '</b>' |
|
63 | - ); |
|
64 | - ?> |
|
53 | + printf( |
|
54 | + esc_html__( |
|
55 | + 'First, %1$s check the forums %2$s to see if there is a solution before re-attempting the Database Update. Often it helps to deactivate other plugins which may have conflicts; or it may help to add %3$s to your %4$s wp-config.php%5$s (which will make the update run slower, but may resolve any memory exhaustion errors.', |
|
56 | + 'event_espresso' |
|
57 | + ), |
|
58 | + "<a href='" . EE_SUPPORT_EMAIL . "' target='_blank'>", |
|
59 | + '</a>', |
|
60 | + '<pre lang="php">define( \'EE_MIGRATION_STEP_SIZE\', 10 );</pre>', |
|
61 | + '<b>', |
|
62 | + '</b>' |
|
63 | + ); |
|
64 | + ?> |
|
65 | 65 | </p> |
66 | 66 | |
67 | 67 | <p> |
68 | 68 | <?php |
69 | - printf( |
|
70 | - esc_html__( |
|
71 | - 'To retry updating your data: restore to the backup you made before the update and reactivate EE (and any addons you are using) and re-run the Database Update. If you did not make a database backup and are migrating from EE3: delete your EE4 data (use the %1$s Reset/Delete Data tab above%2$s), and then reactivate EE4, and then re-run the migration and updates. If you did not make a database backup, are only updating from a previous install of EE4, have found a solution to the fatal error you received, and are willing to possibly have some data lost, %3$sattempt to continue migrating%2$s.', |
|
72 | - 'event_espresso' |
|
73 | - ), |
|
74 | - "<a href='$reset_db_page_url'>", |
|
75 | - "</a>", |
|
76 | - "<a class='button-primary' href='$reattempt_action_url'>" |
|
77 | - ); |
|
78 | - ?> |
|
69 | + printf( |
|
70 | + esc_html__( |
|
71 | + 'To retry updating your data: restore to the backup you made before the update and reactivate EE (and any addons you are using) and re-run the Database Update. If you did not make a database backup and are migrating from EE3: delete your EE4 data (use the %1$s Reset/Delete Data tab above%2$s), and then reactivate EE4, and then re-run the migration and updates. If you did not make a database backup, are only updating from a previous install of EE4, have found a solution to the fatal error you received, and are willing to possibly have some data lost, %3$sattempt to continue migrating%2$s.', |
|
72 | + 'event_espresso' |
|
73 | + ), |
|
74 | + "<a href='$reset_db_page_url'>", |
|
75 | + "</a>", |
|
76 | + "<a class='button-primary' href='$reattempt_action_url'>" |
|
77 | + ); |
|
78 | + ?> |
|
79 | 79 | </p> |
80 | 80 | </td> |
81 | 81 | </tr> |
@@ -85,66 +85,66 @@ discard block |
||
85 | 85 | </td> |
86 | 86 | <td> |
87 | 87 | <?php |
88 | - printf( |
|
89 | - esc_html__( |
|
90 | - 'Just make sure you\'ve %1$s checked for a solution in the forums,%2$s and properly contacted Support. We will get back to you as soon as possible', |
|
91 | - 'event_espresso' |
|
92 | - ), |
|
93 | - "<a href='" . EE_SUPPORT_EMAIL . "'>", |
|
94 | - "</a>" |
|
95 | - ); |
|
96 | - ?> |
|
88 | + printf( |
|
89 | + esc_html__( |
|
90 | + 'Just make sure you\'ve %1$s checked for a solution in the forums,%2$s and properly contacted Support. We will get back to you as soon as possible', |
|
91 | + 'event_espresso' |
|
92 | + ), |
|
93 | + "<a href='" . EE_SUPPORT_EMAIL . "'>", |
|
94 | + "</a>" |
|
95 | + ); |
|
96 | + ?> |
|
97 | 97 | </td> |
98 | 98 | </tr> |
99 | 99 | <tr> |
100 | 100 | <td> |
101 | 101 | <p class='big-text'> |
102 | 102 | <?php printf( |
103 | - esc_html__('I don\'t need my old EE %s data', 'event_espresso'), |
|
104 | - $most_recent_migration->slug() |
|
105 | - ); ?></p> |
|
103 | + esc_html__('I don\'t need my old EE %s data', 'event_espresso'), |
|
104 | + $most_recent_migration->slug() |
|
105 | + ); ?></p> |
|
106 | 106 | </td> |
107 | 107 | <td> |
108 | 108 | <?php |
109 | - printf( |
|
110 | - esc_html__( |
|
111 | - 'If you are ok with losing all the EE %1$s data, you can skip the Database Updates and %2$s use EE4 with only default Data%3$s', |
|
112 | - 'event_espresso' |
|
113 | - ), |
|
114 | - $most_recent_migration->slug(), |
|
115 | - "<a id='do-not-migrate' class='do-not-migrate button-primary' href='$reset_db_action_url'>", |
|
116 | - "</a>" |
|
117 | - ); |
|
118 | - ?> |
|
109 | + printf( |
|
110 | + esc_html__( |
|
111 | + 'If you are ok with losing all the EE %1$s data, you can skip the Database Updates and %2$s use EE4 with only default Data%3$s', |
|
112 | + 'event_espresso' |
|
113 | + ), |
|
114 | + $most_recent_migration->slug(), |
|
115 | + "<a id='do-not-migrate' class='do-not-migrate button-primary' href='$reset_db_action_url'>", |
|
116 | + "</a>" |
|
117 | + ); |
|
118 | + ?> |
|
119 | 119 | </td> |
120 | 120 | </tr> |
121 | 121 | <tr> |
122 | 122 | <td> |
123 | 123 | <p class='big-text'> |
124 | 124 | <?php printf( |
125 | - esc_html__('I want to go back to my old version of EE %1$s', 'event_espresso'), |
|
126 | - $most_recent_migration->slug() |
|
127 | - ); ?> |
|
125 | + esc_html__('I want to go back to my old version of EE %1$s', 'event_espresso'), |
|
126 | + $most_recent_migration->slug() |
|
127 | + ); ?> |
|
128 | 128 | </td> |
129 | 129 | <td> |
130 | 130 | <p> |
131 | 131 | <?php |
132 | - printf( |
|
133 | - esc_html__( |
|
134 | - 'Then we suggest you re-activate the old version of EE %3$s and restore your database to the backup you made just before the Database Update . If you didn\'t backup your database and are migrating from EE3, you can also delete your EE4 data (use on the %1$s"Reset/Delete Data" tab above%2$s), and then reactivate EE3 from the plugins page. Note: some of your EE3 shortcodes may have been changed to their EE4 equivalents, so you will need to change them back.', |
|
135 | - 'event_espresso' |
|
136 | - ), |
|
137 | - "<a href='$reset_db_page_url'>", |
|
138 | - "</a>", |
|
139 | - $most_recent_migration->slug() |
|
140 | - ); |
|
141 | - ?> |
|
132 | + printf( |
|
133 | + esc_html__( |
|
134 | + 'Then we suggest you re-activate the old version of EE %3$s and restore your database to the backup you made just before the Database Update . If you didn\'t backup your database and are migrating from EE3, you can also delete your EE4 data (use on the %1$s"Reset/Delete Data" tab above%2$s), and then reactivate EE3 from the plugins page. Note: some of your EE3 shortcodes may have been changed to their EE4 equivalents, so you will need to change them back.', |
|
135 | + 'event_espresso' |
|
136 | + ), |
|
137 | + "<a href='$reset_db_page_url'>", |
|
138 | + "</a>", |
|
139 | + $most_recent_migration->slug() |
|
140 | + ); |
|
141 | + ?> |
|
142 | 142 | </p> |
143 | 143 | <p> |
144 | 144 | <?php _e( |
145 | - "If you ever decide to re-attempt using EE4, you will again be given the option to migrate your EE3 data or not.", |
|
146 | - 'event_espresso' |
|
147 | - ); ?></p> |
|
145 | + "If you ever decide to re-attempt using EE4, you will again be given the option to migrate your EE3 data or not.", |
|
146 | + 'event_espresso' |
|
147 | + ); ?></p> |
|
148 | 148 | </td> |
149 | 149 | </tr> |
150 | 150 |
@@ -22,7 +22,7 @@ discard block |
||
22 | 22 | <p> |
23 | 23 | <?php printf( |
24 | 24 | esc_html__("Please copy-and-paste the system information below to %s", "event_espresso"), |
25 | - '<a href="mailto:' . EE_SUPPORT_EMAIL . '">' . EE_SUPPORT_EMAIL . "</a>" |
|
25 | + '<a href="mailto:'.EE_SUPPORT_EMAIL.'">'.EE_SUPPORT_EMAIL."</a>" |
|
26 | 26 | ); ?></p> |
27 | 27 | <label> |
28 | 28 | <?php _e("system status info", "event_espresso"); ?> |
@@ -55,7 +55,7 @@ discard block |
||
55 | 55 | 'First, %1$s check the forums %2$s to see if there is a solution before re-attempting the Database Update. Often it helps to deactivate other plugins which may have conflicts; or it may help to add %3$s to your %4$s wp-config.php%5$s (which will make the update run slower, but may resolve any memory exhaustion errors.', |
56 | 56 | 'event_espresso' |
57 | 57 | ), |
58 | - "<a href='" . EE_SUPPORT_EMAIL . "' target='_blank'>", |
|
58 | + "<a href='".EE_SUPPORT_EMAIL."' target='_blank'>", |
|
59 | 59 | '</a>', |
60 | 60 | '<pre lang="php">define( \'EE_MIGRATION_STEP_SIZE\', 10 );</pre>', |
61 | 61 | '<b>', |
@@ -90,7 +90,7 @@ discard block |
||
90 | 90 | 'Just make sure you\'ve %1$s checked for a solution in the forums,%2$s and properly contacted Support. We will get back to you as soon as possible', |
91 | 91 | 'event_espresso' |
92 | 92 | ), |
93 | - "<a href='" . EE_SUPPORT_EMAIL . "'>", |
|
93 | + "<a href='".EE_SUPPORT_EMAIL."'>", |
|
94 | 94 | "</a>" |
95 | 95 | ); |
96 | 96 | ?> |
@@ -3,19 +3,19 @@ discard block |
||
3 | 3 | ?> |
4 | 4 | <h1><?php esc_html_e("Data Migration Error", "event_espresso"); ?></h1> |
5 | 5 | <p class='error'><?php |
6 | - printf( |
|
7 | - esc_html__( |
|
8 | - "Your last Database Update had a %s fatal error and was halted%s.", |
|
9 | - "event_espresso" |
|
10 | - ), |
|
11 | - "<b>", |
|
12 | - "</b>" |
|
13 | - ); ?></p> |
|
6 | + printf( |
|
7 | + esc_html__( |
|
8 | + "Your last Database Update had a %s fatal error and was halted%s.", |
|
9 | + "event_espresso" |
|
10 | + ), |
|
11 | + "<b>", |
|
12 | + "</b>" |
|
13 | + ); ?></p> |
|
14 | 14 | <a id="show-hide-migration-warnings" class="display-the-hidden"><?php |
15 | - esc_html_e( |
|
16 | - "Show Errors", |
|
17 | - 'event_espresso' |
|
18 | - ); ?></a> |
|
15 | + esc_html_e( |
|
16 | + "Show Errors", |
|
17 | + 'event_espresso' |
|
18 | + ); ?></a> |
|
19 | 19 | <ul class="migration-warnings" style="display:none"> |
20 | 20 | <?php foreach ($most_recent_migration->get_errors() as $error) { ?> |
21 | 21 | <li style="overflow-y:auto;max-height:100px"><?php echo esc_html($error) ?></li> |
@@ -23,12 +23,12 @@ discard block |
||
23 | 23 | </ul> |
24 | 24 | <h2> |
25 | 25 | <?php esc_html_e( |
26 | - "Fill out the below form to automatically Send Event Espresso a Crash Report", |
|
27 | - "event_espresso" |
|
28 | - ); ?></h2> |
|
26 | + "Fill out the below form to automatically Send Event Espresso a Crash Report", |
|
27 | + "event_espresso" |
|
28 | + ); ?></h2> |
|
29 | 29 | <form action='<?php echo EE_Admin_Page::add_query_args_and_nonce( |
30 | - array('action' => 'send_migration_crash_report'), |
|
31 | - EE_MAINTENANCE_ADMIN_URL |
|
30 | + array('action' => 'send_migration_crash_report'), |
|
31 | + EE_MAINTENANCE_ADMIN_URL |
|
32 | 32 | ); ?>' method='post'> |
33 | 33 | <table class='widefat'> |
34 | 34 | <tr> |
@@ -39,46 +39,46 @@ discard block |
||
39 | 39 | <tr> |
40 | 40 | <td><label for='from_name'><?php esc_html_e("Your Name", "event_espresso"); ?></label></td> |
41 | 41 | <td><input name='from_name' id='from_name' type='text' style="width:200px" value='<?php |
42 | - printf( |
|
43 | - esc_html__("Admin of %s", "event_espresso"), |
|
44 | - get_bloginfo('name', 'display') |
|
45 | - ); ?>'></td> |
|
42 | + printf( |
|
43 | + esc_html__("Admin of %s", "event_espresso"), |
|
44 | + get_bloginfo('name', 'display') |
|
45 | + ); ?>'></td> |
|
46 | 46 | </tr> |
47 | 47 | <tr> |
48 | 48 | <td><label for='body'><?php esc_html_e("Comments", "event_espresso"); ?></label></td> |
49 | 49 | <td><textarea name="body" id="body" class='system_status_info'> |
50 | 50 | <?php esc_html_e( |
51 | - "Enter any comments about why you think the error may have occurred", |
|
52 | - "event_espresso" |
|
53 | - ); ?></textarea> |
|
51 | + "Enter any comments about why you think the error may have occurred", |
|
52 | + "event_espresso" |
|
53 | + ); ?></textarea> |
|
54 | 54 | <p class='description'> |
55 | 55 | <?php esc_html_e( |
56 | - "Note: the System Information report will also be added to the email's body, which contains information about your Event Espresso, Wordpress, and PHP settings which can be helpful in debugging the problem.", |
|
57 | - "event_espresso" |
|
58 | - ); ?></p></td> |
|
56 | + "Note: the System Information report will also be added to the email's body, which contains information about your Event Espresso, Wordpress, and PHP settings which can be helpful in debugging the problem.", |
|
57 | + "event_espresso" |
|
58 | + ); ?></p></td> |
|
59 | 59 | </tr> |
60 | 60 | <tr> |
61 | 61 | <td colspan="2"><input type="submit" value="<?php |
62 | - esc_html_e( |
|
63 | - "Mail Crash Report to Event Espresso", |
|
64 | - "event_espresso" |
|
65 | - ); ?>"/></td> |
|
62 | + esc_html_e( |
|
63 | + "Mail Crash Report to Event Espresso", |
|
64 | + "event_espresso" |
|
65 | + ); ?>"/></td> |
|
66 | 66 | </tr> |
67 | 67 | </table> |
68 | 68 | </form> |
69 | 69 | <br> |
70 | 70 | <p> |
71 | 71 | <?php printf( |
72 | - esc_html__('...or copy-and-paste the below information to %1$s %2$s %3$s', "event_espresso"), |
|
73 | - '<a href="mailto:' . EE_SUPPORT_EMAIL . '">', |
|
74 | - EE_SUPPORT_EMAIL, |
|
75 | - "</a>" |
|
76 | - ); ?></p> |
|
72 | + esc_html__('...or copy-and-paste the below information to %1$s %2$s %3$s', "event_espresso"), |
|
73 | + '<a href="mailto:' . EE_SUPPORT_EMAIL . '">', |
|
74 | + EE_SUPPORT_EMAIL, |
|
75 | + "</a>" |
|
76 | + ); ?></p> |
|
77 | 77 | <textarea class="system_status_info"><?php print_r(EEM_System_Status::instance()->get_system_stati()) ?></textarea> |
78 | 78 | <p><?php printf(esc_html__('%1$sNext Step%2$s', 'event_espresso'), "<a href='$next_url'>", "</a>"); ?></p> |
79 | 79 | <p> |
80 | 80 | <?php printf( |
81 | - esc_html__('...or %1$sDON\'T send crash report%2$s.', 'event_espresso'), |
|
82 | - "<a href='$next_url'>", |
|
83 | - "</a>" |
|
84 | - ); ?></p> |
|
81 | + esc_html__('...or %1$sDON\'T send crash report%2$s.', 'event_espresso'), |
|
82 | + "<a href='$next_url'>", |
|
83 | + "</a>" |
|
84 | + ); ?></p> |
@@ -21,161 +21,161 @@ |
||
21 | 21 | abstract class AssetManager implements AssetManagerInterface |
22 | 22 | { |
23 | 23 | |
24 | - /** |
|
25 | - * @var AssetCollection $assets |
|
26 | - */ |
|
27 | - protected $assets; |
|
28 | - |
|
29 | - /** |
|
30 | - * @var DomainInterface |
|
31 | - */ |
|
32 | - protected $domain; |
|
33 | - |
|
34 | - /** |
|
35 | - * @var Registry $registry |
|
36 | - */ |
|
37 | - protected $registry; |
|
38 | - |
|
39 | - |
|
40 | - /** |
|
41 | - * AssetRegister constructor. |
|
42 | - * |
|
43 | - * @param DomainInterface $domain |
|
44 | - * @param AssetCollection $assets |
|
45 | - * @param Registry $registry |
|
46 | - */ |
|
47 | - public function __construct(DomainInterface $domain, AssetCollection $assets, Registry $registry) |
|
48 | - { |
|
49 | - $this->domain = $domain; |
|
50 | - $this->assets = $assets; |
|
51 | - $this->registry = $registry; |
|
52 | - add_action('wp_enqueue_scripts', array($this, 'addManifestFile'), 0); |
|
53 | - add_action('admin_enqueue_scripts', array($this, 'addManifestFile'), 0); |
|
54 | - add_action('wp_enqueue_scripts', array($this, 'addAssets'), 2); |
|
55 | - add_action('admin_enqueue_scripts', array($this, 'addAssets'), 2); |
|
56 | - } |
|
57 | - |
|
58 | - |
|
59 | - /** |
|
60 | - * @return void |
|
61 | - * @throws DuplicateCollectionIdentifierException |
|
62 | - * @throws InvalidDataTypeException |
|
63 | - * @throws InvalidEntityException |
|
64 | - * @since $VID:$ |
|
65 | - */ |
|
66 | - public function addManifestFile() |
|
67 | - { |
|
68 | - // if a manifest file has already been added for this domain, then just return that one |
|
69 | - if ($this->assets->has($this->domain->assetNamespace())) { |
|
70 | - return; |
|
71 | - } |
|
72 | - $asset = new ManifestFile($this->domain); |
|
73 | - $this->assets->add($asset, $this->domain->assetNamespace()); |
|
74 | - } |
|
75 | - |
|
76 | - |
|
77 | - /** |
|
78 | - * @return ManifestFile[] |
|
79 | - * @since $VID:$ |
|
80 | - */ |
|
81 | - public function getManifestFile() |
|
82 | - { |
|
83 | - return $this->assets->getManifestFiles(); |
|
84 | - } |
|
85 | - |
|
86 | - |
|
87 | - /** |
|
88 | - * @param string $handle |
|
89 | - * @param string $source |
|
90 | - * @param array $dependencies |
|
91 | - * @param bool $load_in_footer |
|
92 | - * @return JavascriptAsset |
|
93 | - * @throws DuplicateCollectionIdentifierException |
|
94 | - * @throws InvalidDataTypeException |
|
95 | - * @throws InvalidEntityException |
|
96 | - * @since $VID:$ |
|
97 | - */ |
|
98 | - public function addJavascript( |
|
99 | - $handle, |
|
100 | - $source, |
|
101 | - array $dependencies = array(), |
|
102 | - $load_in_footer = true |
|
103 | - ) { |
|
104 | - $asset = new JavascriptAsset( |
|
105 | - $handle, |
|
106 | - $source, |
|
107 | - $dependencies, |
|
108 | - $load_in_footer, |
|
109 | - $this->domain |
|
110 | - ); |
|
111 | - $this->assets->add($asset, $handle); |
|
112 | - return $asset; |
|
113 | - } |
|
114 | - |
|
115 | - |
|
116 | - /** |
|
117 | - * @return JavascriptAsset[] |
|
118 | - * @since $VID:$ |
|
119 | - */ |
|
120 | - public function getJavascriptAssets() |
|
121 | - { |
|
122 | - return $this->assets->getJavascriptAssets(); |
|
123 | - } |
|
124 | - |
|
125 | - |
|
126 | - /** |
|
127 | - * @param string $handle |
|
128 | - * @param string $source |
|
129 | - * @param array $dependencies |
|
130 | - * @param string $media |
|
131 | - * @return StylesheetAsset |
|
132 | - * @throws DuplicateCollectionIdentifierException |
|
133 | - * @throws InvalidDataTypeException |
|
134 | - * @throws InvalidEntityException |
|
135 | - * @since $VID:$ |
|
136 | - */ |
|
137 | - public function addStylesheet( |
|
138 | - $handle, |
|
139 | - $source, |
|
140 | - array $dependencies = array(), |
|
141 | - $media = 'all' |
|
142 | - ) { |
|
143 | - $asset = new StylesheetAsset( |
|
144 | - $handle, |
|
145 | - $source, |
|
146 | - $dependencies, |
|
147 | - $this->domain, |
|
148 | - $media |
|
149 | - ); |
|
150 | - $this->assets->add($asset, $handle); |
|
151 | - return $asset; |
|
152 | - } |
|
153 | - |
|
154 | - |
|
155 | - /** |
|
156 | - * @return StylesheetAsset[] |
|
157 | - * @since $VID:$ |
|
158 | - */ |
|
159 | - public function getStylesheetAssets() |
|
160 | - { |
|
161 | - return $this->assets->getStylesheetAssets(); |
|
162 | - } |
|
163 | - |
|
164 | - |
|
165 | - /** |
|
166 | - * @param string $handle |
|
167 | - * @return bool |
|
168 | - * @since $VID:$ |
|
169 | - */ |
|
170 | - public function enqueueAsset($handle) |
|
171 | - { |
|
172 | - if ($this->assets->has($handle)) { |
|
173 | - $asset = $this->assets->get($handle); |
|
174 | - if ($asset->isRegistered()) { |
|
175 | - $asset->enqueueAsset(); |
|
176 | - return true; |
|
177 | - } |
|
178 | - } |
|
179 | - return false; |
|
180 | - } |
|
24 | + /** |
|
25 | + * @var AssetCollection $assets |
|
26 | + */ |
|
27 | + protected $assets; |
|
28 | + |
|
29 | + /** |
|
30 | + * @var DomainInterface |
|
31 | + */ |
|
32 | + protected $domain; |
|
33 | + |
|
34 | + /** |
|
35 | + * @var Registry $registry |
|
36 | + */ |
|
37 | + protected $registry; |
|
38 | + |
|
39 | + |
|
40 | + /** |
|
41 | + * AssetRegister constructor. |
|
42 | + * |
|
43 | + * @param DomainInterface $domain |
|
44 | + * @param AssetCollection $assets |
|
45 | + * @param Registry $registry |
|
46 | + */ |
|
47 | + public function __construct(DomainInterface $domain, AssetCollection $assets, Registry $registry) |
|
48 | + { |
|
49 | + $this->domain = $domain; |
|
50 | + $this->assets = $assets; |
|
51 | + $this->registry = $registry; |
|
52 | + add_action('wp_enqueue_scripts', array($this, 'addManifestFile'), 0); |
|
53 | + add_action('admin_enqueue_scripts', array($this, 'addManifestFile'), 0); |
|
54 | + add_action('wp_enqueue_scripts', array($this, 'addAssets'), 2); |
|
55 | + add_action('admin_enqueue_scripts', array($this, 'addAssets'), 2); |
|
56 | + } |
|
57 | + |
|
58 | + |
|
59 | + /** |
|
60 | + * @return void |
|
61 | + * @throws DuplicateCollectionIdentifierException |
|
62 | + * @throws InvalidDataTypeException |
|
63 | + * @throws InvalidEntityException |
|
64 | + * @since $VID:$ |
|
65 | + */ |
|
66 | + public function addManifestFile() |
|
67 | + { |
|
68 | + // if a manifest file has already been added for this domain, then just return that one |
|
69 | + if ($this->assets->has($this->domain->assetNamespace())) { |
|
70 | + return; |
|
71 | + } |
|
72 | + $asset = new ManifestFile($this->domain); |
|
73 | + $this->assets->add($asset, $this->domain->assetNamespace()); |
|
74 | + } |
|
75 | + |
|
76 | + |
|
77 | + /** |
|
78 | + * @return ManifestFile[] |
|
79 | + * @since $VID:$ |
|
80 | + */ |
|
81 | + public function getManifestFile() |
|
82 | + { |
|
83 | + return $this->assets->getManifestFiles(); |
|
84 | + } |
|
85 | + |
|
86 | + |
|
87 | + /** |
|
88 | + * @param string $handle |
|
89 | + * @param string $source |
|
90 | + * @param array $dependencies |
|
91 | + * @param bool $load_in_footer |
|
92 | + * @return JavascriptAsset |
|
93 | + * @throws DuplicateCollectionIdentifierException |
|
94 | + * @throws InvalidDataTypeException |
|
95 | + * @throws InvalidEntityException |
|
96 | + * @since $VID:$ |
|
97 | + */ |
|
98 | + public function addJavascript( |
|
99 | + $handle, |
|
100 | + $source, |
|
101 | + array $dependencies = array(), |
|
102 | + $load_in_footer = true |
|
103 | + ) { |
|
104 | + $asset = new JavascriptAsset( |
|
105 | + $handle, |
|
106 | + $source, |
|
107 | + $dependencies, |
|
108 | + $load_in_footer, |
|
109 | + $this->domain |
|
110 | + ); |
|
111 | + $this->assets->add($asset, $handle); |
|
112 | + return $asset; |
|
113 | + } |
|
114 | + |
|
115 | + |
|
116 | + /** |
|
117 | + * @return JavascriptAsset[] |
|
118 | + * @since $VID:$ |
|
119 | + */ |
|
120 | + public function getJavascriptAssets() |
|
121 | + { |
|
122 | + return $this->assets->getJavascriptAssets(); |
|
123 | + } |
|
124 | + |
|
125 | + |
|
126 | + /** |
|
127 | + * @param string $handle |
|
128 | + * @param string $source |
|
129 | + * @param array $dependencies |
|
130 | + * @param string $media |
|
131 | + * @return StylesheetAsset |
|
132 | + * @throws DuplicateCollectionIdentifierException |
|
133 | + * @throws InvalidDataTypeException |
|
134 | + * @throws InvalidEntityException |
|
135 | + * @since $VID:$ |
|
136 | + */ |
|
137 | + public function addStylesheet( |
|
138 | + $handle, |
|
139 | + $source, |
|
140 | + array $dependencies = array(), |
|
141 | + $media = 'all' |
|
142 | + ) { |
|
143 | + $asset = new StylesheetAsset( |
|
144 | + $handle, |
|
145 | + $source, |
|
146 | + $dependencies, |
|
147 | + $this->domain, |
|
148 | + $media |
|
149 | + ); |
|
150 | + $this->assets->add($asset, $handle); |
|
151 | + return $asset; |
|
152 | + } |
|
153 | + |
|
154 | + |
|
155 | + /** |
|
156 | + * @return StylesheetAsset[] |
|
157 | + * @since $VID:$ |
|
158 | + */ |
|
159 | + public function getStylesheetAssets() |
|
160 | + { |
|
161 | + return $this->assets->getStylesheetAssets(); |
|
162 | + } |
|
163 | + |
|
164 | + |
|
165 | + /** |
|
166 | + * @param string $handle |
|
167 | + * @return bool |
|
168 | + * @since $VID:$ |
|
169 | + */ |
|
170 | + public function enqueueAsset($handle) |
|
171 | + { |
|
172 | + if ($this->assets->has($handle)) { |
|
173 | + $asset = $this->assets->get($handle); |
|
174 | + if ($asset->isRegistered()) { |
|
175 | + $asset->enqueueAsset(); |
|
176 | + return true; |
|
177 | + } |
|
178 | + } |
|
179 | + return false; |
|
180 | + } |
|
181 | 181 | } |
@@ -18,117 +18,117 @@ |
||
18 | 18 | */ |
19 | 19 | class ExportAttendeeBillingData implements PersonalDataExporterInterface |
20 | 20 | { |
21 | - /** |
|
22 | - * @var EEM_Attendee |
|
23 | - */ |
|
24 | - protected $attendee_model; |
|
21 | + /** |
|
22 | + * @var EEM_Attendee |
|
23 | + */ |
|
24 | + protected $attendee_model; |
|
25 | 25 | |
26 | - /** |
|
27 | - * @var EEM_Payment_Method |
|
28 | - */ |
|
29 | - protected $payment_method_model; |
|
26 | + /** |
|
27 | + * @var EEM_Payment_Method |
|
28 | + */ |
|
29 | + protected $payment_method_model; |
|
30 | 30 | |
31 | - /** |
|
32 | - * ExportAttendeeBillingData constructor. |
|
33 | - * |
|
34 | - * @param EEM_Attendee $attendee_model |
|
35 | - */ |
|
36 | - public function __construct(EEM_Attendee $attendee_model, EEM_Payment_Method $payment_method_model) |
|
37 | - { |
|
38 | - $this->attendee_model = $attendee_model; |
|
39 | - $this->payment_method_model = $payment_method_model; |
|
40 | - } |
|
31 | + /** |
|
32 | + * ExportAttendeeBillingData constructor. |
|
33 | + * |
|
34 | + * @param EEM_Attendee $attendee_model |
|
35 | + */ |
|
36 | + public function __construct(EEM_Attendee $attendee_model, EEM_Payment_Method $payment_method_model) |
|
37 | + { |
|
38 | + $this->attendee_model = $attendee_model; |
|
39 | + $this->payment_method_model = $payment_method_model; |
|
40 | + } |
|
41 | 41 | |
42 | - /** |
|
43 | - * Returns data for export. |
|
44 | - * |
|
45 | - * @param string $email_address , |
|
46 | - * @param int $page starts at 1, not 0 |
|
47 | - * @return array { |
|
48 | - * @type array $data { |
|
49 | - * @type array { |
|
50 | - * @type string $group_id (not translated, same for all exports) |
|
51 | - * @type string $group_label (translated string) |
|
52 | - * @type string|int $item_id |
|
53 | - * @type array $data { |
|
54 | - * @type array { |
|
55 | - * @type string $name what's shown in the left-column of the export row |
|
56 | - * @type string $value what's showin the right-column of the export row |
|
57 | - * } |
|
58 | - * } |
|
59 | - * } |
|
60 | - * } |
|
61 | - * } |
|
62 | - */ |
|
63 | - public function export($email_address, $page = 1) |
|
64 | - { |
|
65 | - $page_size = 10; |
|
66 | - $attendees = $this->attendee_model->get_all( |
|
67 | - array( |
|
68 | - array( |
|
69 | - 'ATT_email' => $email_address, |
|
70 | - ), |
|
71 | - 'limit' => array( |
|
72 | - ($page - 1) * $page_size, |
|
73 | - $page_size, |
|
74 | - ), |
|
75 | - ) |
|
76 | - ); |
|
77 | - // get all payment methods, even inactive ones |
|
78 | - $payment_methods = $this->payment_method_model->get_all( |
|
79 | - array( |
|
80 | - 'group_by' => array('PMD_type'), |
|
81 | - ) |
|
82 | - ); |
|
83 | - $export_items = array(); |
|
84 | - $found_something = false; |
|
85 | - foreach ($attendees as $attendee) { |
|
86 | - foreach ($payment_methods as $payment_method) { |
|
87 | - try { |
|
88 | - $billing_info = $attendee->billing_info_for_payment_method($payment_method); |
|
89 | - } catch (EE_Error $e) { |
|
90 | - $billing_info = null; |
|
91 | - } |
|
92 | - if (! $billing_info instanceof EE_Form_Section_Proper) { |
|
93 | - continue; |
|
94 | - } |
|
95 | - $found_something = true; |
|
96 | - $data = array(); |
|
97 | - foreach ($billing_info->input_pretty_values(true, true) as $input_name => $display_value) { |
|
98 | - try { |
|
99 | - $input = $billing_info->get_input($input_name); |
|
100 | - $input_display_name = $input->html_label_text(); |
|
101 | - } catch (EE_Error $e) { |
|
102 | - $input_display_name = $input_name; |
|
103 | - } |
|
104 | - $data[] = array( |
|
105 | - 'name' => strip_tags($input_display_name), |
|
106 | - 'value' => $display_value, |
|
107 | - ); |
|
108 | - } |
|
109 | - $export_items[] = array( |
|
110 | - 'group_id' => 'billing_data', |
|
111 | - 'group_label' => esc_html__('Billing Data', 'event_espresso'), |
|
112 | - 'item_id' => $attendee->ID() . '-' . $payment_method->ID(), |
|
113 | - 'data' => $data, |
|
114 | - ); |
|
115 | - } |
|
116 | - } |
|
117 | - return array( |
|
118 | - 'data' => $export_items, |
|
119 | - 'done' => ! $found_something, |
|
120 | - ); |
|
121 | - } |
|
42 | + /** |
|
43 | + * Returns data for export. |
|
44 | + * |
|
45 | + * @param string $email_address , |
|
46 | + * @param int $page starts at 1, not 0 |
|
47 | + * @return array { |
|
48 | + * @type array $data { |
|
49 | + * @type array { |
|
50 | + * @type string $group_id (not translated, same for all exports) |
|
51 | + * @type string $group_label (translated string) |
|
52 | + * @type string|int $item_id |
|
53 | + * @type array $data { |
|
54 | + * @type array { |
|
55 | + * @type string $name what's shown in the left-column of the export row |
|
56 | + * @type string $value what's showin the right-column of the export row |
|
57 | + * } |
|
58 | + * } |
|
59 | + * } |
|
60 | + * } |
|
61 | + * } |
|
62 | + */ |
|
63 | + public function export($email_address, $page = 1) |
|
64 | + { |
|
65 | + $page_size = 10; |
|
66 | + $attendees = $this->attendee_model->get_all( |
|
67 | + array( |
|
68 | + array( |
|
69 | + 'ATT_email' => $email_address, |
|
70 | + ), |
|
71 | + 'limit' => array( |
|
72 | + ($page - 1) * $page_size, |
|
73 | + $page_size, |
|
74 | + ), |
|
75 | + ) |
|
76 | + ); |
|
77 | + // get all payment methods, even inactive ones |
|
78 | + $payment_methods = $this->payment_method_model->get_all( |
|
79 | + array( |
|
80 | + 'group_by' => array('PMD_type'), |
|
81 | + ) |
|
82 | + ); |
|
83 | + $export_items = array(); |
|
84 | + $found_something = false; |
|
85 | + foreach ($attendees as $attendee) { |
|
86 | + foreach ($payment_methods as $payment_method) { |
|
87 | + try { |
|
88 | + $billing_info = $attendee->billing_info_for_payment_method($payment_method); |
|
89 | + } catch (EE_Error $e) { |
|
90 | + $billing_info = null; |
|
91 | + } |
|
92 | + if (! $billing_info instanceof EE_Form_Section_Proper) { |
|
93 | + continue; |
|
94 | + } |
|
95 | + $found_something = true; |
|
96 | + $data = array(); |
|
97 | + foreach ($billing_info->input_pretty_values(true, true) as $input_name => $display_value) { |
|
98 | + try { |
|
99 | + $input = $billing_info->get_input($input_name); |
|
100 | + $input_display_name = $input->html_label_text(); |
|
101 | + } catch (EE_Error $e) { |
|
102 | + $input_display_name = $input_name; |
|
103 | + } |
|
104 | + $data[] = array( |
|
105 | + 'name' => strip_tags($input_display_name), |
|
106 | + 'value' => $display_value, |
|
107 | + ); |
|
108 | + } |
|
109 | + $export_items[] = array( |
|
110 | + 'group_id' => 'billing_data', |
|
111 | + 'group_label' => esc_html__('Billing Data', 'event_espresso'), |
|
112 | + 'item_id' => $attendee->ID() . '-' . $payment_method->ID(), |
|
113 | + 'data' => $data, |
|
114 | + ); |
|
115 | + } |
|
116 | + } |
|
117 | + return array( |
|
118 | + 'data' => $export_items, |
|
119 | + 'done' => ! $found_something, |
|
120 | + ); |
|
121 | + } |
|
122 | 122 | |
123 | - /** |
|
124 | - * Gets the Translated name of this exporter |
|
125 | - * |
|
126 | - * @return string |
|
127 | - */ |
|
128 | - public function name() |
|
129 | - { |
|
130 | - return esc_html__('Event Espresso Attendee Billing Data Exporter', 'event_espresso'); |
|
131 | - } |
|
123 | + /** |
|
124 | + * Gets the Translated name of this exporter |
|
125 | + * |
|
126 | + * @return string |
|
127 | + */ |
|
128 | + public function name() |
|
129 | + { |
|
130 | + return esc_html__('Event Espresso Attendee Billing Data Exporter', 'event_espresso'); |
|
131 | + } |
|
132 | 132 | } |
133 | 133 | // End of file ExportAttendeeBillingData.php |
134 | 134 | // Location: EventEspresso\core\domain\services\admin\privacy\export/ExportAttendeeBillingData.php |
@@ -89,7 +89,7 @@ discard block |
||
89 | 89 | } catch (EE_Error $e) { |
90 | 90 | $billing_info = null; |
91 | 91 | } |
92 | - if (! $billing_info instanceof EE_Form_Section_Proper) { |
|
92 | + if ( ! $billing_info instanceof EE_Form_Section_Proper) { |
|
93 | 93 | continue; |
94 | 94 | } |
95 | 95 | $found_something = true; |
@@ -109,7 +109,7 @@ discard block |
||
109 | 109 | $export_items[] = array( |
110 | 110 | 'group_id' => 'billing_data', |
111 | 111 | 'group_label' => esc_html__('Billing Data', 'event_espresso'), |
112 | - 'item_id' => $attendee->ID() . '-' . $payment_method->ID(), |
|
112 | + 'item_id' => $attendee->ID().'-'.$payment_method->ID(), |
|
113 | 113 | 'data' => $data, |
114 | 114 | ); |
115 | 115 | } |
@@ -16,88 +16,88 @@ |
||
16 | 16 | */ |
17 | 17 | class EraseAnswers implements PersonalDataEraserInterface |
18 | 18 | { |
19 | - /** |
|
20 | - * @var EEM_Answer |
|
21 | - */ |
|
22 | - protected $answer_model; |
|
19 | + /** |
|
20 | + * @var EEM_Answer |
|
21 | + */ |
|
22 | + protected $answer_model; |
|
23 | 23 | |
24 | - /** |
|
25 | - * @var EEM_Question |
|
26 | - */ |
|
27 | - protected $question_model; |
|
24 | + /** |
|
25 | + * @var EEM_Question |
|
26 | + */ |
|
27 | + protected $question_model; |
|
28 | 28 | |
29 | - /** |
|
30 | - * EraseAnswers constructor. |
|
31 | - * |
|
32 | - * @param EEM_Answer $answer_model |
|
33 | - * @param EEM_Question $question_model |
|
34 | - */ |
|
35 | - public function __construct(EEM_Answer $answer_model, EEM_Question $question_model) |
|
36 | - { |
|
37 | - $this->answer_model = $answer_model; |
|
38 | - $this->question_model = $question_model; |
|
39 | - } |
|
29 | + /** |
|
30 | + * EraseAnswers constructor. |
|
31 | + * |
|
32 | + * @param EEM_Answer $answer_model |
|
33 | + * @param EEM_Question $question_model |
|
34 | + */ |
|
35 | + public function __construct(EEM_Answer $answer_model, EEM_Question $question_model) |
|
36 | + { |
|
37 | + $this->answer_model = $answer_model; |
|
38 | + $this->question_model = $question_model; |
|
39 | + } |
|
40 | 40 | |
41 | 41 | |
42 | - /** |
|
43 | - * Gets a translated string name for the data eraser |
|
44 | - * |
|
45 | - * @return string |
|
46 | - */ |
|
47 | - public function name() |
|
48 | - { |
|
49 | - return esc_html__('Event Espresso Registration Answers', 'event_espresso'); |
|
50 | - } |
|
42 | + /** |
|
43 | + * Gets a translated string name for the data eraser |
|
44 | + * |
|
45 | + * @return string |
|
46 | + */ |
|
47 | + public function name() |
|
48 | + { |
|
49 | + return esc_html__('Event Espresso Registration Answers', 'event_espresso'); |
|
50 | + } |
|
51 | 51 | |
52 | - /** |
|
53 | - * Erases a "page" of personal user data |
|
54 | - * |
|
55 | - * @return array { |
|
56 | - * @type boolean $items_removed whether items were removed successfully or not |
|
57 | - * @type boolean $items_retained whether any items were skipped or not |
|
58 | - * @type array $messages values are messages to show |
|
59 | - * @type boolean $done whether this eraser is done or has more pages |
|
60 | - * } |
|
61 | - */ |
|
62 | - public function erase($email_address, $page = 1) |
|
63 | - { |
|
64 | - $multi_answer_enum_question_types = $this->question_model->question_types_in_category('multi-answer-enum'); |
|
65 | - $normal_questions_updated = $this->answer_model->update( |
|
66 | - array( |
|
67 | - 'ANS_value' => '', |
|
68 | - ), |
|
69 | - array( |
|
70 | - array( |
|
71 | - 'Registration.Attendee.ATT_email' => $email_address, |
|
72 | - 'Question.QST_type' => array( |
|
73 | - 'NOT_IN', |
|
74 | - $multi_answer_enum_question_types, |
|
75 | - ), |
|
76 | - ), |
|
77 | - ) |
|
78 | - ); |
|
79 | - $multi_value_questions_updated = $this->answer_model->update( |
|
80 | - array( |
|
81 | - 'ANS_value' => array(), |
|
82 | - ), |
|
83 | - array( |
|
84 | - array( |
|
85 | - 'Registration.Attendee.ATT_email' => $email_address, |
|
86 | - 'Question.QST_type' => array( |
|
87 | - 'IN', |
|
88 | - $multi_answer_enum_question_types, |
|
89 | - ), |
|
90 | - ), |
|
91 | - ) |
|
92 | - ); |
|
52 | + /** |
|
53 | + * Erases a "page" of personal user data |
|
54 | + * |
|
55 | + * @return array { |
|
56 | + * @type boolean $items_removed whether items were removed successfully or not |
|
57 | + * @type boolean $items_retained whether any items were skipped or not |
|
58 | + * @type array $messages values are messages to show |
|
59 | + * @type boolean $done whether this eraser is done or has more pages |
|
60 | + * } |
|
61 | + */ |
|
62 | + public function erase($email_address, $page = 1) |
|
63 | + { |
|
64 | + $multi_answer_enum_question_types = $this->question_model->question_types_in_category('multi-answer-enum'); |
|
65 | + $normal_questions_updated = $this->answer_model->update( |
|
66 | + array( |
|
67 | + 'ANS_value' => '', |
|
68 | + ), |
|
69 | + array( |
|
70 | + array( |
|
71 | + 'Registration.Attendee.ATT_email' => $email_address, |
|
72 | + 'Question.QST_type' => array( |
|
73 | + 'NOT_IN', |
|
74 | + $multi_answer_enum_question_types, |
|
75 | + ), |
|
76 | + ), |
|
77 | + ) |
|
78 | + ); |
|
79 | + $multi_value_questions_updated = $this->answer_model->update( |
|
80 | + array( |
|
81 | + 'ANS_value' => array(), |
|
82 | + ), |
|
83 | + array( |
|
84 | + array( |
|
85 | + 'Registration.Attendee.ATT_email' => $email_address, |
|
86 | + 'Question.QST_type' => array( |
|
87 | + 'IN', |
|
88 | + $multi_answer_enum_question_types, |
|
89 | + ), |
|
90 | + ), |
|
91 | + ) |
|
92 | + ); |
|
93 | 93 | |
94 | - return array( |
|
95 | - 'items_removed' => (bool) $normal_questions_updated || (bool) $multi_value_questions_updated, |
|
96 | - 'items_retained' => false, // always false in this example |
|
97 | - 'messages' => array(), // no messages in this example |
|
98 | - 'done' => true, |
|
99 | - ); |
|
100 | - } |
|
94 | + return array( |
|
95 | + 'items_removed' => (bool) $normal_questions_updated || (bool) $multi_value_questions_updated, |
|
96 | + 'items_retained' => false, // always false in this example |
|
97 | + 'messages' => array(), // no messages in this example |
|
98 | + 'done' => true, |
|
99 | + ); |
|
100 | + } |
|
101 | 101 | } |
102 | 102 | // End of file EraseAnswers.php |
103 | 103 | // Location: EventEspresso\core\domain\services\privacy\erasure/EraseAnswers.php |