settings = Data::instance(); $this->query = QueryDB::instance(); add_shortcode( 'affi_register_policy_form', [ $this, 'affi_register_policy_form' ] ); if ( $this->settings->get_param( 'register_affiliate' ) ) { //register account add_action( 'woocommerce_register_form', [ $this, 'registration_privacy_policy' ], 20 ); add_action( 'user_register', [ $this, 'registration_affiliate' ], 10, 1 ); //update account add_action( 'woocommerce_edit_account_form', array( $this, 'woocommerce_edit_account_form' ) ); // add_action( 'woocommerce_save_account_details_errors', array( // $this, // 'woocommerce_save_account_details_errors' // ), 10, 2 ); // add_action( 'woocommerce_after_save_address_validation', array( // $this, // 'woocommerce_after_save_address_validation' // ), 99, 4 ); } add_action( 'wp_enqueue_scripts', [ $this, 'shortcode_enqueue_script' ] ); add_action( 'wp_ajax_affi_registration_affiliate', [ $this, 'affi_registration_affiliate' ] ); add_action( 'wp_ajax_affi_upgrade_user_affiliate', [ $this, 'affi_upgrade_user_affiliate' ] ); } public function registration_privacy_policy( $params ) { do_action( "affi_before_register_policy_form" ); echo do_shortcode( '[affi_register_policy_form]' ); do_action( "affi_after_register_policy_form" ); return; } public function registration_affiliate( $user_id ) { if ( isset( $_REQUEST['affi_register_policy_input'] ) && wc_clean( wp_unslash( $_REQUEST['affi_register_policy_input'] ) ) ) {// phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $payment_info = isset( $_REQUEST['affi_register_policy_info_area'] ) ? affi_sanitize_payment_info_for_storage( wp_unslash( $_REQUEST['affi_register_policy_info_area'] ) ) : '';// phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $default_rank = intval( $this->query->get_basic_rank() ); $status = $this->settings->get_param( 'register_auto' ) ? 'approved' : 'pending'; $insert_id = $this->query->insert_affiliate_user( [ 'user_id' => $user_id, 'rank' => $default_rank, 'payment_info' => $payment_info, 'status' => $status, 'date_created' => current_time( 'U' ), ] ); } return; } public function affi_registration_affiliate() { check_ajax_referer( 'affi_security', 'nonce' ); if ( ! is_user_logged_in() ) { wp_send_json_error(); } $accepted = isset( $_REQUEST['affi_register_policy_input'] ) && wc_clean( wp_unslash( $_REQUEST['affi_register_policy_input'] ) );// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $user_id = get_current_user_id(); $insert_id = 0; if ( $accepted ) { $payment_info = isset( $_REQUEST['affi_register_policy_info_area'] ) ? affi_sanitize_payment_info_for_storage( wp_unslash( $_REQUEST['affi_register_policy_info_area'] ) ) : '';// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $default_rank = intval( $this->query->get_basic_rank() ); $status = $this->settings->get_param( 'register_auto' ) ? 'approved' : 'pending'; $insert_id = $this->query->insert_affiliate_user( [ 'user_id' => $user_id, 'rank' => $default_rank, 'payment_info' => $payment_info, 'status' => $status, 'date_created' => current_time( 'U' ), ] ); } wp_send_json( $insert_id ); } public function affi_upgrade_user_affiliate() { check_ajax_referer( 'affi_security', 'nonce' ); if ( ! is_user_logged_in() ) { wp_send_json_error(); } $policy_data = isset( $_REQUEST['policy_data'] ) ? affi_sanitize_payment_info_for_storage( wp_unslash( $_REQUEST['policy_data'] ) ) : '';// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $user_id = get_current_user_id(); $status = $this->settings->get_param( 'register_auto' ) ? 'approved' : 'pending'; $already_register = $this->query->get_affiliate_id_by_user_id( $user_id ); if ( $already_register ) { $update_status = $this->query->update_affiliates_payment_info( $already_register, $policy_data ); wp_send_json( $update_status ); } $default_rank = intval( $this->query->get_basic_rank() ); $insert_id = $this->query->insert_affiliate_user( [ 'user_id' => $user_id, 'rank' => $default_rank, 'payment_info' => $policy_data, 'status' => $status, 'date_created' => current_time( 'U' ), ] ); wp_send_json( $insert_id ); } public function affi_register_policy_form( $params ) { ob_start(); $atts = shortcode_atts( [ 'class' => '' ], $params ); villatheme_get_template( "register-policy.php", [ 'class' => isset( $atts['class'] ) ? $atts['class'] : '', // 'user_id' => isset( $user_id ) ? $user_id : '', // 'registered' => isset( $registered ) ? $registered : '', // 'account_upgrade' => isset( $account_upgrade ) ? $account_upgrade : '', // 'payment_info' => isset( $payment_info ) ? $payment_info : '', 'policy_label' => $this->settings->get_param( 'register_info_label' ), 'policy_text' => $this->settings->get_param( 'register_policy' ) ], '', AffiEnv::get( 'templates_dir' ) ); add_action( 'wp_enqueue_scripts', array( $this, 'shortcode_enqueue_script' ) ); return ob_get_clean(); } public function woocommerce_edit_account_form() { do_action( "affi_before_account_policy_form" ); echo do_shortcode( '[affi_register_policy_form]' ); do_action( "affi_after_account_policy_form" ); return; } public function shortcode_enqueue_script() { $suffix = defined( 'WP_DEBUG' ) && WP_DEBUG ? '' : '.min'; wp_register_style( 'affi-register-policy', AffiEnv::get( 'css_url' ) . 'policy' . $suffix . '.css', '', AffiEnv::get( 'version' ) ); wp_enqueue_style( 'affi-register-policy', AffiEnv::get( 'css_url' ) . 'policy' . $suffix . '.css', '', AffiEnv::get( 'version' ) ); wp_register_script( 'affi-register-policy', AffiEnv::get( 'js_url' ) . 'af-policy' . $suffix . '.js', [ 'jquery' ], AffiEnv::get( 'version' ) );// phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NotInFooter wp_enqueue_script( 'affi-register-policy', AffiEnv::get( 'js_url' ) . 'af-policy' . $suffix . '.js', '', AffiEnv::get( 'version' ) );// phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NotInFooter $localize = [ 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'affi_security' ), 'total_text' => esc_html__( 'Total', 'affi-affiliate-marketing-for-woo' ), 'time_text' => esc_html__( 'Time', 'affi-affiliate-marketing-for-woo' ), ]; wp_localize_script( 'affi-register-policy', 'affiParams', $localize ); } }