id === 'edit-king-addons-fb-sub') { wp_enqueue_style('king-addons-fb-sub-style', KING_ADDONS_URL . 'includes/widgets/Form_Builder/admin.css', '', KING_ADDONS_VERSION); } } public function renderAdminCustomHeader() { $current_screen = get_current_screen()->id; if ($current_screen !== 'edit-king-addons-fb-sub') { return; } ?>

can_use_premium_code__premium_only()): ?>
post_type === $post_type) { $form_page_id = absint(get_post_meta($post->ID, 'king_addons_form_page_id', true)); // Check if Pro constants are defined before using them if (defined('KING_ADDONS_PRO_URL') && defined('KING_ADDONS_PRO_VERSION')) { wp_enqueue_style('king-addons-form-builder-submissions-css', KING_ADDONS_PRO_URL . 'assets/css/king-addons-submissions.css', [], KING_ADDONS_VERSION); wp_enqueue_script('king-addons-form-builder-submissions-js', KING_ADDONS_PRO_URL . 'assets/js/king-addons-submissions.js', ['jquery'], KING_ADDONS_VERSION); } else { wp_enqueue_style('king-addons-form-builder-submissions-css', KING_ADDONS_URL . 'includes/widgets/Form_Builder/assets/css/king-addons-submissions.css', [], KING_ADDONS_VERSION); wp_enqueue_script('king-addons-form-builder-submissions-js', KING_ADDONS_URL . 'includes/widgets/Form_Builder/assets/js/king-addons-submissions.js', ['jquery'], KING_ADDONS_VERSION); } wp_localize_script( 'king-addons-form-builder-submissions-js', 'KingAddonsSubmissions', [ 'ajaxurl' => esc_url_raw(admin_url('admin-ajax.php')), 'resturl' => esc_url_raw(get_rest_url() . 'king-addons/v1'), 'nonce' => wp_create_nonce('king-addons-submissions-js'), 'form_name' => sanitize_text_field(get_post_meta($post->ID, 'king_addons_form_name', true)), 'form_id' => sanitize_key(get_post_meta($post->ID, 'king_addons_form_id', true)), 'form_page' => sanitize_text_field(get_post_meta($post->ID, 'king_addons_form_page', true)), 'form_page_id' => $form_page_id, 'form_page_url' => $form_page_id ? esc_url_raw(get_permalink($form_page_id)) : '', 'form_page_editor' => $form_page_id ? esc_url_raw(admin_url('post.php?post=' . $form_page_id . '&action=elementor')) : '', 'form_agent' => sanitize_textarea_field(get_post_meta($post->ID, 'king_addons_user_agent', true)), 'agent_ip' => sanitize_text_field(get_post_meta($post->ID, 'king_addons_user_ip', true)), 'post_created' => date('F j, Y g:i a', strtotime($post->post_date)), 'post_updated' => date('F j, Y g:i a', strtotime($post->post_modified)), ] ); } } } public function king_addons_submissions_meta_box() { $args = new WP_Query([ 'post_type' => 'king-addons-fb-sub' ]); foreach ($args as $arg) { add_meta_box( 'king_addons_submission_fields', 'King Addons Submissions', [$this, 'king_addons_meta_box_callback'], 'king-addons-fb-sub', 'normal', 'default' ); } } public function king_addons_meta_box_callback($post, $metabox) { echo ''; foreach (get_post_meta($post->ID) as $key => $value) { $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']; if (in_array($key, $exclude)) { continue; } echo '
'; $meta_value = $value[0]; if (is_serialized($meta_value)) { $unserialized = maybe_unserialize($meta_value); if (is_array($unserialized)) { $value = $unserialized; } else { $value = [$meta_value]; } } $prefix = "form_field-"; $key_title = !empty($value[2]) ? esc_html($value[2]) : esc_html(ucfirst(str_replace($prefix, "", $key))); if (str_contains($key, '_action_')) { $prefix = '_action_king_addons_form_builder_'; $label = ucfirst(substr($key, strpos($key, $prefix) + strlen($prefix))); echo ''; $status = isset($value['status']) ? sanitize_html_class($value['status']) : ''; $message = isset($value['message']) ? esc_html(ucfirst($value['message'])) : ''; echo '

' . $message . '

'; } elseif (isset($value[0]) && 'file' === $value[0]) { echo ''; if (is_array($value[1])) { foreach ($value[1] as $index => $file) { $file_url = esc_url($file); echo '' . $file_url . ''; } } } elseif (isset($value[0]) && 'textarea' === $value[0]) { echo ''; $text_value = isset($value[1]) ? esc_textarea($value[1]) : ''; echo ''; } elseif (isset($value[0]) && ('radio' === $value[0] || 'checkbox' === $value[0])) { echo ''; if (is_array($value[1])) { foreach ($value[1] as $index => $item) { $checked = (!empty($item[1]) && 'true' === $item[1]) ? 'checked' : ''; $input_value = isset($item[0]) ? esc_attr($item[0]) : ''; $input_name = isset($item[2]) ? esc_attr($item[2]) : ''; $input_id = isset($item[3]) ? esc_attr($item[3]) : esc_attr($key . '_' . $index); echo ''; echo ''; } } } elseif (isset($value[0]) && 'select' === $value[0]) { $select_value = $value[1]; if (is_array($select_value)) { $select_value = implode(",", $select_value); } echo ''; echo ''; } else { $type_attr = !empty($value[0]) ? $value[0] : 'text'; $input_val = isset($value[1]) ? $value[1] : (isset($value[0]) ? $value[0] : ''); echo ''; echo ''; } echo '
'; } } public function register_post_type_king_addons_submissions() { $labels = [ 'name' => esc_html__('Form Submissions', 'king-addons'), 'singular_name' => esc_html__('Submission', 'king-addons'), 'edit_item' => esc_html__('Edit Submission', 'king-addons'), 'view_item' => esc_html__('View Submission', 'king-addons'), 'all_items' => esc_html__('Form Submissions', 'king-addons'), 'search_items' => esc_html__('Search Submissions', 'king-addons'), 'parent_item_colon' => esc_html__('Parent Submissions:', 'king-addons'), 'not_found' => esc_html__('No Submissions found.', 'king-addons'), 'not_found_in_trash' => esc_html__('No Submissions found in Trash.', 'king-addons'), ]; $args = [ 'labels' => $labels, 'public' => true, 'show_ui' => true, // 'show_in_menu' => 'king-addons', 'show_in_menu' => false, 'rewrite' => ['slug' => 'king-addons-fb-sub'], 'supports' => [], 'register_meta_box_cb' => [$this, 'king_addons_submissions_meta_box'] ]; register_post_type('king-addons-fb-sub', $args); // Remove Title and Editor fields for submissions remove_post_type_support('king-addons-fb-sub', 'title'); remove_post_type_support('king-addons-fb-sub', 'editor'); } public function king_addons_submissions_custom_columns($columns) { unset($columns['title']); unset($columns['author']); unset($columns['categories']); unset($columns['date']); $columns['main'] = __('Main', 'king-addons'); $columns['action_status'] = __('Action Status', 'king-addons'); $columns['form_id'] = __('Form', 'king-addons'); $columns['page'] = __('Page', 'king-addons'); $columns['post_id'] = __('ID', 'king-addons'); $columns['read_status'] = __('Read Status'); $columns['date'] = __('Date', 'king-addons'); return $columns; } public function king_addons_submissions_sortable_columns($columns) { $columns['read_status'] = 'read_status'; return $columns; } public function king_addons_submissions_custom_column_content($column, $post_id) { $submission = get_post($post_id); $submission_meta = get_post_meta($post_id); $action_status = 'success'; $main_key = ''; foreach ($submission_meta as $key => $value) { if (str_contains($key, 'form_field-email')) { $main_key = $key; } if (str_contains($key, '_action_')) { if (str_contains($value[0], 'error')) { $action_status = 'error'; } } } switch ($column) { case 'main': $main_value = ''; if ($main_key !== '') { $main_meta = get_post_meta($post_id, $main_key, true); $main_value = is_array($main_meta) && isset($main_meta[1]) ? $main_meta[1] : $main_meta; } echo sprintf( '%s', esc_url(admin_url('post.php?post=' . $post_id . '&action=edit')), esc_attr__('View', 'king-addons'), esc_html($main_value) ); break; case 'action_status': echo esc_html($action_status); break; case 'form_id': $form_page_id = absint(get_post_meta($post_id, 'king_addons_form_page_id', true)); $form_name = sanitize_text_field(get_post_meta($post_id, 'king_addons_form_name', true)); echo ''; echo esc_html($form_name); echo ''; break; case 'page': $form_page_id = absint(get_post_meta($post_id, 'king_addons_form_page_id', true)); $form_page = sanitize_text_field(get_post_meta($post_id, 'king_addons_form_page', true)); echo ''; echo esc_html($form_page); echo ''; break; case 'post_id': echo esc_html(absint($submission->ID)); break; case 'read_status': $read_status = get_post_meta($post_id, 'king_addons_submission_read_status', true); if ($read_status == '1') { echo '' . esc_html__('Read', 'king-addons') . ''; } else { echo '' . esc_html__('Unread', 'king-addons') . ''; } break; case 'custom_date': echo get_post_meta($post_id, 'custom_date_key', true); break; } } public function king_addons_submissions_update_read_status() { if (!isset($_POST['post_id']) || !isset($_POST['read_status']) || !wp_verify_nonce($_POST['nonce'], 'king-addons-submissions-js')) { wp_send_json_error('Invalid request'); } $post_id = intval($_POST['post_id']); $read_status = $_POST['read_status'] === '1' ? '1' : '0'; if (!current_user_can('edit_post', $post_id)) { wp_send_json_error('Insufficient permissions'); } update_post_meta($post_id, 'king_addons_submission_read_status', $read_status); wp_send_json_success(); } public function king_addons_submissions_mark_as_read($screen) { if (is_admin()) { $screen = get_current_screen(); if ($screen && $screen->base == 'post' && $screen->post_type == 'king-addons-fb-sub') { if (isset($_GET['post']) && !empty($_GET['post'])) { $post_id = intval($_GET['post']); $post = get_post($post_id); if (!$post || !current_user_can('edit_post', $post_id)) { return; } update_post_meta($post_id, 'king_addons_submission_read_status', '1'); } } } } public function king_addons_submissions_row_actions($actions, $post) { if ($post->post_type === 'king-addons-fb-sub') { unset($actions['edit']); unset($actions['inline hide-if-no-js']); $actions['view'] = sprintf( '%s', esc_url(admin_url('post.php?post=' . $post->ID . '&action=edit')), __('View', 'king-addons'), __('View', 'king-addons') ); } return $actions; } public function king_addons_submissions_remove_bulk_edit($actions) { unset($actions['edit']); return $actions; } public function king_addons_submissions_remove_bulk_edit_filter() { $screen = get_current_screen(); if ($screen->id === 'edit-king-addons-fb-sub') { add_filter('bulk_actions-' . $screen->id, [$this, 'king_addons_submissions_remove_bulk_edit']); } } } new View_Submissions_Pro();