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;
}
?>
post_type === $post_type) {
// 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' => admin_url('admin-ajax.php'),
'resturl' => get_rest_url() . 'king-addons/v1',
'nonce' => wp_create_nonce('king-addons-submissions-js'),
'form_name' => get_post_meta($post->ID, 'king_addons_form_name', true),
'form_id' => get_post_meta($post->ID, 'king_addons_form_id', true),
'form_page' => get_post_meta($post->ID, 'king_addons_form_page', true),
'form_page_id' => get_post_meta($post->ID, 'king_addons_form_page_id', true),
'form_page_url' => get_permalink(get_post_meta($post->ID, 'king_addons_form_page_id', true)),
'form_page_editor' => admin_url('post.php?post=' . get_post_meta($post->ID, 'king_addons_form_page_id', true) . '&action=elementor'),
'form_agent' => get_post_meta($post->ID, 'king_addons_user_agent', true),
'agent_ip' => 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 '';
if (is_serialized($value[0])) {
if ($value[0]) {
// Security fix: Use safe unserialize with validation
$unserialized = @unserialize($value[0]);
if ($unserialized !== false && is_array($unserialized)) {
$value = $unserialized;
} else {
$value = $value[0]; // Fallback to original string if unserialize fails
}
}
$prefix = "form_field-";
$key_title = !empty($value[2]) ? $value[2] : 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 '
';
echo '
' . ucfirst($value['message']) . '
';
} elseif ('file' == $value[0]) {
echo '
';
if (is_array($value[1])) {
foreach ($value[1] as $index => $file) {
echo '
' . $file . '';
}
}
} elseif ('textarea' == $value[0]) {
echo '
';
echo '
';
} else {
if ($value[0] === 'radio' || $value[0] === 'checkbox') {
echo '
';
foreach ($value[1] as $index => $item) {
$checked = $item[1] == 'true' ? 'checked' : '';
echo '
';
echo '
';
}
} else {
if ($value[0] == 'select') {
if (is_array($value[1])) {
$value[1] = implode(",", $value[1]);
}
echo '
';
echo '
';
} else {
echo '
';
// Use 'text' if type is empty, and sanitize attributes
$type_attr = ! empty( $value[0] ) ? $value[0] : 'text';
echo '
';
}
}
}
} else {
$prefix = "form_field-";
$key_title = !empty($value[2]) ? $value[2] : ucfirst(str_replace($prefix, "", $key));
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';
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':
echo sprintf(
'