Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
.log-unix
/
wp-includes
/
wp-content
/
plugins
/
royal-elementor-addons
/
classes
/
modules
/
forms
:
wpr-submissions-cpt.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace WprAddons\Classes\Modules\Forms; use Elementor\Utils; use Elementor\Group_Control_Image_Size; use WprAddons\Classes\Utilities; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * WPR_Form_Builder_Submissions setup * * @since 3.4.6 */ class WPR_Form_Builder_Submissions { public function __construct() { add_action('wp_ajax_wpr_form_builder_submissions' , [$this, 'add_to_submissions']); add_action('wp_ajax_nopriv_wpr_form_builder_submissions',[$this, 'add_to_submissions']); add_action('save_post', [$this, 'update_submissions_post_meta']); } public function add_to_submissions() { $nonce = $_POST['nonce']; if ( !wp_verify_nonce( $nonce, 'wpr-addons-js' ) || !wpr_fs()->can_use_premium_code() ) { return; // Get out of here, the nonce is rotten! } $new = [ 'post_status' => 'publish', 'post_type' => 'wpr_submissions' ]; $post_id = wp_insert_post( $new ); foreach ($_POST['form_content'] as $key => $value ) { // update_post_meta($post_id, $key, [$value[0], $value[1], $value[2]]); $type = sanitize_key( $value[0] ); $label = $this->wpr_sanitize_form_field( $type, $value[1] ); $input = sanitize_text_field( $value[2] ); update_post_meta( $post_id, sanitize_key( $key ), [ $type, $label, $input ] ); } $sanitized_form_name = sanitize_text_field($_POST['form_name']); $sanitized_form_id = sanitize_text_field($_POST['form_id']); $sanitized_form_page = sanitize_text_field($_POST['form_page']); $sanitized_form_page_id = sanitize_text_field($_POST['form_page_id']); update_post_meta($post_id, 'wpr_form_name', $sanitized_form_name); update_post_meta($post_id, 'wpr_form_id', $sanitized_form_id); update_post_meta($post_id, 'wpr_form_page', $sanitized_form_page); update_post_meta($post_id, 'wpr_form_page_id', $sanitized_form_page_id); update_post_meta($post_id, 'wpr_user_agent', sanitize_textarea_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) )); update_post_meta($post_id, 'wpr_user_ip', Utilities::get_client_ip()); if( $post_id ) { wp_send_json_success(array( 'action' => 'wpr_form_builder_submissions', 'post_id' => $post_id, 'message' => esc_html__('Submission created successfully', 'wpr-addons'), 'status' => 'success', 'content' => $_POST['form_content'] )); } else { wp_send_json_success(array( 'action' => 'wpr_form_builder_submissions', 'post_id' => $post_id, 'message' => esc_html__('Submit action failed', 'wpr-addons'), 'status' => 'error' )); } } public function update_submissions_post_meta($post_id) { // Only allow users with edit permissions if ( ! current_user_can('edit_post', $post_id) ) { return; } if ( isset($_POST['wpr_submission_changes']) && ! empty($_POST['wpr_submission_changes']) ) { $changes = json_decode(stripslashes($_POST['wpr_submission_changes']), true); if ( ! is_array($changes) ) { return; } // List of disallowed meta keys $disallowed_keys = [ '_elementor_data', '_elementor_controls_usage', '_wp_attached_file', // Add more if needed ]; foreach ( $changes as $key => $value ) { // Skip blacklisted keys if ( in_array($key, $disallowed_keys, true) ) { continue; } // Sanitize key and value $safe_key = sanitize_key($key); if ( is_string($value) ) { $safe_value = sanitize_text_field($value); } elseif ( is_array($value) ) { $safe_value = array_map('sanitize_text_field', $value); } else { $safe_value = sanitize_text_field((string) $value); } update_post_meta($post_id, $safe_key, $safe_value); } } } public function wpr_sanitize_form_field( $type, $value ) { // if ( is_array( $value ) ) { // return array_map( function( $item ) use ( $type ) { // return $this->wpr_sanitize_form_field( $type, $item ); // }, $value ); // } switch ( $type ) { case 'email': return sanitize_email( $value ); case 'url': return esc_url_raw( $value ); case 'file': if ( is_array( $value ) ) { return array_map( 'esc_url_raw', $value ); } else { return esc_url_raw( $value ); } case 'number': return is_numeric( $value ) ? $value + 0 : ''; case 'tel': return preg_replace( '/[^0-9+\-\s\(\)]/', '', $value ); case 'textarea': return sanitize_textarea_field( $value ); case 'radio': case 'checkbox': if ( is_array( $value ) ) { return array_map( function( $item ) use ( $type ) { return $this->wpr_sanitize_form_field( $type, $item ); }, $value ); } case 'html': return wp_kses_post( $value ); // VERY IMPORTANT case 'hidden': case 'password': case 'text': case 'date': case 'time': case 'select': default: return sanitize_text_field( $value ); } } } new WPR_Form_Builder_Submissions();