<?php namespace WprAddons\Classes\Modules\Forms; use Elementor\Utils; use WprAddons\Classes\Utilities; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * WPR_Actions_Status setup * * @since 3.4.6 */ class WPR_Actions_Status { public function __construct() { add_action('wp_ajax_wpr_update_form_action_meta', [$this, 'wpr_update_form_action_meta']); add_action('wp_ajax_nopriv_wpr_update_form_action_meta', [$this, 'wpr_update_form_action_meta']); } // In your PHP file public function wpr_update_form_action_meta() { $nonce = $_POST['nonce']; if ( !wp_verify_nonce( $nonce, 'wpr-addons-js' ) ) { return; // Get out of here, the nonce is rotten! } $post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0; $submission_secret = isset( $_POST['submission_secret'] ) ? sanitize_text_field( wp_unslash( $_POST['submission_secret'] ) ) : ''; if ( ! $post_id || get_post_type( $post_id ) !== 'wpr_submissions' ) { wp_send_json_error( 'Invalid post' ); } $stored_secret = get_post_meta( $post_id, '_wpr_submission_action_secret', true ); if ( ! is_string( $stored_secret ) || $stored_secret === '' || ! hash_equals( $stored_secret, $submission_secret ) ) { wp_send_json_error( 'Invalid submission secret.' ); } // Validate custom token // $custom_token = $_POST['custom_token']; // if ( is_user_logged_in() ) { // // For logged-in users, validate against their user ID // $user_id = get_current_user_id(); // $stored_token = get_transient( 'wpr_custom_token_' . $user_id ); // } else { // // For non-logged-in users, use the guest token from the cookie // if ( isset( $_COOKIE['wpr_guest_token'] ) ) { // $guest_id = sanitize_text_field( $_COOKIE['wpr_guest_token'] ); // $stored_token = get_transient( 'wpr_custom_guest_token_' . $guest_id ); // } else { // wp_send_json_error( 'Invalid token.' ); // return; // } // } // if ( ! $stored_token || $custom_token !== $stored_token ) { // wp_send_json_error( 'Invalid token.' ); // return; // } $action_name = isset($_POST['action_name']) ? sanitize_text_field($_POST['action_name']) : ''; $status = isset($_POST['status']) ? sanitize_text_field($_POST['status']) : ''; $message = isset($_POST['message']) ? sanitize_text_field($_POST['message']) : ''; $meta_value = [ 'status' => $status, 'message' => $message ]; $actions_whitelist = [ 'wpr_form_builder_email', 'wpr_form_builder_submissions', 'wpr_form_builder_mailchimp', 'wpr_form_builder_webhook' ]; if ($post_id && $action_name && $status && in_array($action_name, $actions_whitelist)) { update_post_meta($post_id, '_action_' . $action_name, $meta_value); wp_send_json_success('Post meta updated successfully'); } else { wp_send_json_error('Invalid data provided'); } } } new WPR_Actions_Status();