PluginProbe
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder / 51.1.86
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder v51.1.86
51.1.86 51.1.84 51.1.85 51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 All 40 releases
← All changes | includes/widgets/Form_Builder/helpers/View_Submissions_Pro.php +104 -23 51.1.44 → 51.1.86 View file →
@@ -81,8 +81,9 @@
81 81 global $post;
82 82
83 83
84 84 if (isset($post) && $post->post_type === $post_type) {
85 + $form_page_id = absint(get_post_meta($post->ID, 'king_addons_form_page_id', true));
85 86
86 87 // Check if Pro constants are defined before using them
87 88 if (defined('KING_ADDONS_PRO_URL') && defined('KING_ADDONS_PRO_VERSION')) {
88 89 wp_enqueue_style('king-addons-form-builder-submissions-css', KING_ADDONS_PRO_URL . 'assets/css/king-addons-submissions.css', [], KING_ADDONS_VERSION);
@@ -95,19 +96,19 @@
95 96 wp_localize_script(
96 97 'king-addons-form-builder-submissions-js',
97 98 'KingAddonsSubmissions',
98 99 [
99 - 'ajaxurl' => admin_url('admin-ajax.php'),
100 - 'resturl' => get_rest_url() . 'king-addons/v1',
100 + 'ajaxurl' => esc_url_raw(admin_url('admin-ajax.php')),
101 + 'resturl' => esc_url_raw(get_rest_url() . 'king-addons/v1'),
101 102 'nonce' => wp_create_nonce('king-addons-submissions-js'),
102 - 'form_name' => get_post_meta($post->ID, 'king_addons_form_name', true),
103 - 'form_id' => get_post_meta($post->ID, 'king_addons_form_id', true),
104 - 'form_page' => get_post_meta($post->ID, 'king_addons_form_page', true),
105 - 'form_page_id' => get_post_meta($post->ID, 'king_addons_form_page_id', true),
106 - 'form_page_url' => get_permalink(get_post_meta($post->ID, 'king_addons_form_page_id', true)),
107 - 'form_page_editor' => admin_url('post.php?post=' . get_post_meta($post->ID, 'king_addons_form_page_id', true) . '&action=elementor'),
108 - 'form_agent' => get_post_meta($post->ID, 'king_addons_user_agent', true),
109 - 'agent_ip' => get_post_meta($post->ID, 'king_addons_user_ip', true),
103 + 'form_name' => sanitize_text_field(get_post_meta($post->ID, 'king_addons_form_name', true)),
104 + 'form_id' => sanitize_key(get_post_meta($post->ID, 'king_addons_form_id', true)),
105 + 'form_page' => sanitize_text_field(get_post_meta($post->ID, 'king_addons_form_page', true)),
106 + 'form_page_id' => $form_page_id,
107 + 'form_page_url' => $form_page_id ? esc_url_raw(get_permalink($form_page_id)) : '',
108 + 'form_page_editor' => $form_page_id ? esc_url_raw(admin_url('post.php?post=' . $form_page_id . '&action=elementor')) : '',
109 + 'form_agent' => sanitize_textarea_field(get_post_meta($post->ID, 'king_addons_user_agent', true)),
110 + 'agent_ip' => sanitize_text_field(get_post_meta($post->ID, 'king_addons_user_ip', true)),
110 111 'post_created' => date('F j, Y g:i a', strtotime($post->post_date)),
111 112 'post_updated' => date('F j, Y g:i a', strtotime($post->post_modified)),
112 113 ]
113 114 );
@@ -137,11 +138,20 @@
137 138
138 139 public function king_addons_meta_box_callback($post, $metabox)
139 140 {
140 141 echo '<button class="king-addons-edit-submissions button button-primary">' . esc_html__('Edit', 'king-addons') . '</button>';
142 + $this->render_payment_block($post);
141 143 foreach (get_post_meta($post->ID) as $key => $value) {
142 144
143 - $exclude = ['king_addons_form_id', 'king_addons_form_name', 'king_addons_form_page', 'king_addons_form_page_id', 'king_addons_user_agent', 'king_addons_user_ip', 'king_addons_submission_read_status', '_edit_lock', '_edit_last'];
145 + $exclude = [
146 + 'king_addons_form_id', 'king_addons_form_name', 'king_addons_form_page', 'king_addons_form_page_id',
147 + 'king_addons_user_agent', 'king_addons_user_ip', 'king_addons_submission_read_status',
148 + '_edit_lock', '_edit_last',
149 + 'king_addons_payment_status', 'king_addons_payment_provider', 'king_addons_payment_txn_id',
150 + 'king_addons_payment_amount', 'king_addons_payment_currency', 'king_addons_payment_time',
151 + 'king_addons_payment_events', 'king_addons_paypal_order_id', 'king_addons_stripe_session_id',
152 + 'king_addons_payment_expected_amount', 'king_addons_payment_expected_currency',
153 + ];
144 154
145 155 if (in_array($key, $exclude)) {
146 156 continue;
147 157 }
@@ -210,8 +220,48 @@
210 220
211 221
212 222 }
213 223
224 + /**
225 + * Payment status block on the submission card.
226 + *
227 + * @param \WP_Post $post Submission.
228 + *
229 + * @return void
230 + */
231 + private function render_payment_block($post): void
232 + {
233 + $status = sanitize_key((string) get_post_meta($post->ID, 'king_addons_payment_status', true));
234 + if ('' === $status) {
235 + return;
236 + }
237 +
238 + $provider = sanitize_key((string) get_post_meta($post->ID, 'king_addons_payment_provider', true));
239 + $txn = sanitize_text_field((string) get_post_meta($post->ID, 'king_addons_payment_txn_id', true));
240 + $amount = get_post_meta($post->ID, 'king_addons_payment_amount', true);
241 + $currency = sanitize_text_field((string) get_post_meta($post->ID, 'king_addons_payment_currency', true));
242 + $time = absint(get_post_meta($post->ID, 'king_addons_payment_time', true));
243 +
244 + echo '<div class="king-addons-submissions-wrap">';
245 + echo '<label>' . esc_html__('Payment', 'king-addons') . '</label>';
246 + echo '<p>';
247 + echo esc_html($status);
248 + if ('' !== $provider) {
249 + echo ' · ' . esc_html($provider);
250 + }
251 + if ('' !== (string) $amount) {
252 + echo ' · ' . esc_html((string) $amount . ' ' . $currency);
253 + }
254 + if ('' !== $txn) {
255 + echo ' · ' . esc_html($txn);
256 + }
257 + if ($time) {
258 + echo ' · ' . esc_html(date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $time));
259 + }
260 + echo '</p>';
261 + echo '</div>';
262 + }
263 +
214 264 public function register_post_type_king_addons_submissions()
215 265 {
216 266 $labels = [
217 267 'name' => esc_html__('Form Submissions', 'king-addons'),
@@ -251,8 +301,9 @@
251 301
252 302
253 303 $columns['main'] = __('Main', 'king-addons');
254 304 $columns['action_status'] = __('Action Status', 'king-addons');
305 + $columns['payment'] = __('Payment', 'king-addons');
255 306 $columns['form_id'] = __('Form', 'king-addons');
256 307 $columns['page'] = __('Page', 'king-addons');
257 308 $columns['post_id'] = __('ID', 'king-addons');
258 309 $columns['read_status'] = __('Read Status');
@@ -271,8 +322,9 @@
271 322 {
272 323 $submission = get_post($post_id);
273 324 $submission_meta = get_post_meta($post_id);
274 325 $action_status = 'success';
326 + $main_key = '';
275 327
276 328 foreach ($submission_meta as $key => $value) {
277 329 if (str_contains($key, 'form_field-email')) {
278 330 $main_key = $key;
@@ -286,37 +338,60 @@
286 338 }
287 339
288 340 switch ($column) {
289 341 case 'main':
342 + $main_value = '';
343 + if ($main_key !== '') {
344 + $main_meta = get_post_meta($post_id, $main_key, true);
345 + $main_value = is_array($main_meta) && isset($main_meta[1]) ? $main_meta[1] : $main_meta;
346 + }
290 347
291 348 echo sprintf(
292 349 '<a href="%s" title="%s">%s</a>',
293 350 esc_url(admin_url('post.php?post=' . $post_id . '&action=edit')),
294 - __('View', 'king-addons'),
295 - __(get_post_meta($post_id, $main_key, true)[1], 'king-addons')
351 + esc_attr__('View', 'king-addons'),
352 + esc_html($main_value)
296 353 );
297 354 break;
298 355
299 356 case 'action_status':
300 357
301 - echo $action_status;
358 + echo esc_html($action_status);
302 359 break;
303 360
361 + case 'payment':
362 + $pay_status = sanitize_key((string) get_post_meta($post_id, 'king_addons_payment_status', true));
363 + if ('' === $pay_status) {
364 + echo '&mdash;';
365 + break;
366 + }
367 + $pay_amount = get_post_meta($post_id, 'king_addons_payment_amount', true);
368 + $pay_currency = sanitize_text_field((string) get_post_meta($post_id, 'king_addons_payment_currency', true));
369 + echo esc_html($pay_status);
370 + if ('' !== (string) $pay_amount) {
371 + echo ' ' . esc_html((string) $pay_amount . ' ' . $pay_currency);
372 + }
373 + break;
374 +
304 375 case 'form_id':
305 - echo '<a href="' . admin_url('post.php?post=' . get_post_meta($post_id, 'king_addons_form_page_id', true) . '&action=elementor') . '" target="_blank">';
306 - echo get_post_meta($post_id, 'king_addons_form_name', true);
376 + $form_page_id = absint(get_post_meta($post_id, 'king_addons_form_page_id', true));
377 + $form_name = sanitize_text_field(get_post_meta($post_id, 'king_addons_form_name', true));
378 + echo '<a href="' . esc_url($form_page_id ? admin_url('post.php?post=' . $form_page_id . '&action=elementor') : '#') . '" target="_blank" rel="noopener noreferrer">';
379 + echo esc_html($form_name);
307 380 echo '</a>';
308 381 break;
309 382
310 383 case 'page':
311 - echo '<a href="' . get_permalink(get_post_meta($post_id, 'king_addons_form_page_id', true)) . '" target="_blank">';
312 - echo get_post_meta($post_id, 'king_addons_form_page', true);
384 + $form_page_id = absint(get_post_meta($post_id, 'king_addons_form_page_id', true));
385 + $form_page = sanitize_text_field(get_post_meta($post_id, 'king_addons_form_page', true));
386 + echo '<a href="' . esc_url($form_page_id ? get_permalink($form_page_id) : '#') . '" target="_blank" rel="noopener noreferrer">';
387 + echo esc_html($form_page);
313 388 echo '</a>';
314 389 break;
315 390
316 391 case 'post_id':
317 392
318 - echo $submission->ID;
393 + echo esc_html(absint($submission->ID));
319 394 break;
320 395
321 396 case 'read_status':
322 397 $read_status = get_post_meta($post_id, 'king_addons_submission_read_status', true);
@@ -321,17 +396,16 @@
321 396 case 'read_status':
322 397 $read_status = get_post_meta($post_id, 'king_addons_submission_read_status', true);
323 398
324 399 if ($read_status == '1') {
325 - echo '<span class="king-addons-button king-addons-submission-read">' . __('Read') . '</span>';
400 + echo '<span class="king-addons-button king-addons-submission-read">' . esc_html__('Read', 'king-addons') . '</span>';
326 401 } else {
327 - echo '<span class="king-addons-button king-addons-submission-unread">' . __('Unread') . '</span>';
402 + echo '<span class="king-addons-button king-addons-submission-unread">' . esc_html__('Unread', 'king-addons') . '</span>';
328 403 }
329 404 break;
330 405
331 406 case 'custom_date':
332 -
333 - echo get_post_meta($post_id, 'custom_date_key', true);
407 + echo esc_html((string) get_post_meta($post_id, 'custom_date_key', true));
334 408 break;
335 409 }
336 410 }
337 411
@@ -343,8 +417,12 @@
343 417
344 418 $post_id = intval($_POST['post_id']);
345 419 $read_status = $_POST['read_status'] === '1' ? '1' : '0';
346 420
421 + if (!current_user_can('edit_post', $post_id)) {
422 + wp_send_json_error('Insufficient permissions');
423 + }
424 +
347 425 update_post_meta($post_id, 'king_addons_submission_read_status', $read_status);
348 426
349 427 wp_send_json_success();
350 428 }
@@ -359,8 +437,11 @@
359 437 if (isset($_GET['post']) && !empty($_GET['post'])) {
360 438 $post_id = intval($_GET['post']);
361 439 $post = get_post($post_id);
362 440
441 + if (!$post || !current_user_can('edit_post', $post_id)) {
442 + return;
443 + }
363 444
364 445 update_post_meta($post_id, 'king_addons_submission_read_status', '1');
365 446 }
366 447 }