admin_data->general_setting->$key ) ) { return $this->admin_data->general_setting->$key; } if ( isset( $this->field_defaults[ 'default_' . $key ] ) ) { return $this->field_defaults[ 'default_' . $key ]; } return ''; } /** * Get advance setting values. * * @param string $key Atrribute of fields. */ public function get_advance_setting_data( $key ) { if ( isset( $this->admin_data->advance_setting->$key ) ) { return $this->admin_data->advance_setting->$key; } if ( isset( $this->field_defaults[ 'default_' . $key ] ) ) { return $this->field_defaults[ 'default_' . $key ]; } return ''; } /** * Include admin template for each form fields * * @param array $admin_data Admin Data. */ public function get_admin_template( $admin_data = array() ) { $this->admin_data = $admin_data; ob_start(); $template_path = str_replace( '_', '-', str_replace( 'user_registration_', 'admin-', $this->id ) ); /** * Filter the admin template path for a specific form element. * * The dynamic portion of the hook name, $this->id * * @param string $admin_template_path The default admin template path for the form element. */ $admin_template_path = apply_filters( $this->id . '_admin_template', UR_FORM_PATH . 'views' . UR_DS . 'admin' . UR_DS . $template_path . '.php' ); if ( file_exists( $admin_template_path ) ) { include $admin_template_path; } $template = ob_get_clean(); $settings = $this->get_setting(); $this->admin_data = array(); return array( 'template' => $template . $settings, 'settings' => $settings, ); } /** * Includes any classes we need within frontend. * * @param integer $form_id Form ID. * @param string $field_type Field Type. * @param string $field_key Field Key. * @param array $data Form data. */ public function frontend_includes( $form_id, $field_type, $field_key, $data = array() ) { $this->form_id = $form_id; $form_data = (array) $data['general_setting']; $form_data['form_id'] = $form_id; $form_data['type'] = $field_type; $form_data['field_key'] = $field_key; $form_data['icon'] = $data['icon']; if ( isset( $form_data['hide_label'] ) && ur_string_to_bool( $form_data['hide_label'] ) ) { unset( $form_data['label'] ); } if ( isset( $data['general_setting']->required ) ) { if ( in_array( $field_key, ur_get_required_fields() ) || ur_string_to_bool( $data['general_setting']->required ) ) { $form_data['required'] = true; $form_data['custom_attributes']['required'] = 'required'; } } if ( isset( $data['advance_setting']->size ) ) { $form_data['size'] = $data['advance_setting']->size; } if ( isset( $data['advance_setting']->limit_length ) && $data['advance_setting']->limit_length ) { if ( isset( $data['advance_setting']->limit_length_limit_count ) && isset( $data['advance_setting']->limit_length_limit_mode ) ) { if ( 'characters' === $data['advance_setting']->limit_length_limit_mode ) { $form_data['max-characters'] = $data['advance_setting']->limit_length_limit_count; } elseif ( 'words' === $data['advance_setting']->limit_length_limit_mode ) { $form_data['max-words'] = $data['advance_setting']->limit_length_limit_count; } } } if ( isset( $data['advance_setting']->minimum_length ) && $data['advance_setting']->minimum_length ) { if ( isset( $data['advance_setting']->minimum_length_limit_count ) && isset( $data['advance_setting']->minimum_length_limit_mode ) ) { if ( 'characters' === $data['advance_setting']->minimum_length_limit_mode ) { $form_data['min-characters'] = $data['advance_setting']->minimum_length_limit_count; } elseif ( 'words' === $data['advance_setting']->minimum_length_limit_mode ) { $form_data['min-words'] = $data['advance_setting']->minimum_length_limit_count; } } } if ( isset( $data['advance_setting']->min ) ) { $form_data['min'] = $data['advance_setting']->min; } if ( isset( $data['advance_setting']->max ) ) { $form_data['max'] = $data['advance_setting']->max; } if ( isset( $data['advance_setting']->step ) ) { $form_data['step'] = $data['advance_setting']->step; } if ( isset( $data['advance_setting']->default_value ) ) { $form_data['default'] = $data['advance_setting']->default_value; } if ( isset( $data['general_setting']->max_files ) ) { $form_data['max_files'] = $data['general_setting']->max_files; } if ( isset( $data['advance_setting']->max_upload_size ) ) { $form_data['max_upload_size'] = $data['advance_setting']->max_upload_size; } if ( isset( $data['advance_setting']->valid_file_type ) ) { $form_data['valid_file_type'] = $data['advance_setting']->valid_file_type; } if ( isset( $data['advance_setting']->enable_crop_picture ) ) { $form_data['enable_crop_picture'] = $data['advance_setting']->enable_crop_picture; } if ( isset( $data['advance_setting']->enable_take_picture ) ) { $form_data['enable_take_picture'] = $data['advance_setting']->enable_take_picture; } $form_data['input_class'] = array( 'ur-frontend-field ' ); if ( isset( $data['advance_setting']->custom_class ) ) { array_push( $form_data['input_class'], $data['advance_setting']->custom_class ); } if ( isset( $data['advance_setting']->date_format ) ) { update_option( 'user_registration_' . $data['general_setting']->field_name . '_date_format', $data['advance_setting']->date_format ); $form_data['custom_attributes']['data-date-format'] = $data['advance_setting']->date_format; } if ( isset( $data['advance_setting']->enable_min_max ) && ur_string_to_bool( $data['advance_setting']->enable_min_max ) ) { if ( isset( $data['advance_setting']->min_date ) ) { $min_date = str_replace( '/', '-', $data['advance_setting']->min_date ); $form_data['custom_attributes']['data-min-date'] = '' !== $min_date ? date_i18n( $data['advance_setting']->date_format, strtotime( $min_date ) ) : ''; } if ( isset( $data['advance_setting']->max_date ) ) { $max_date = str_replace( '/', '-', $data['advance_setting']->max_date ); $form_data['custom_attributes']['data-max-date'] = '' !== $max_date ? date_i18n( $data['advance_setting']->date_format, strtotime( $max_date ) ) : ''; } } if ( isset( $data['advance_setting']->set_current_date ) ) { $form_data['custom_attributes']['data-default-date'] = ur_string_to_bool( $data['advance_setting']->set_current_date ); } if ( isset( $data['advance_setting']->enable_date_range ) ) { $form_data['custom_attributes']['data-mode'] = ur_string_to_bool( $data['advance_setting']->enable_date_range ); } if ( isset( $data['advance_setting']->date_localization ) ) { if ( wp_script_is( 'flatpickr' ) && 'en' !== $data['advance_setting']->date_localization ) { wp_enqueue_script( 'flatpickr-localization_' . $data['advance_setting']->date_localization, UR()->plugin_url() . '/assets/js/flatpickr/dist/I10n/' . $data['advance_setting']->date_localization . '.js', array(), UR_VERSION, true ); } $form_data['custom_attributes']['data-locale'] = $data['advance_setting']->date_localization; } $form_data['custom_attributes']['data-label'] = ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_label', $data['general_setting']->label ); if ( isset( $form_data['label'] ) ) { $form_data['label'] = ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_label', $form_data['label'] ); } if ( isset( $form_data['placeholder'] ) ) { $form_data['placeholder'] = ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_placeholder', $form_data['placeholder'] ); } if ( isset( $form_data['description'] ) ) { $form_data['description'] = ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_description', $form_data['description'] ); } // Filter only selected countries for `Country` fields. if ( 'country' === $field_key || 'billing_country' === $field_key || 'shipping_country' === $field_key ) { $form_data['options'] = UR_Form_Field_Country::get_instance()->get_country(); $filtered_options = array(); $selected_countries = $data['advance_setting']->selected_countries; if ( is_array( $selected_countries ) ) { foreach ( $form_data['options'] as $iso => $country_name ) { if ( in_array( $iso, $selected_countries, true ) ) { $filtered_options[ $iso ] = $country_name; } } $form_data['options'] = $filtered_options; } } /** Redundant codes. */ if ( 'select' === $field_key || 'select2' === $field_key || 'multi_select2' === $field_key ) { $option_data = isset( $data['advance_setting']->options ) ? explode( ',', $data['advance_setting']->options ) : array(); // Backward compatibility. Modified since 1.5.7. $option_data = isset( $data['general_setting']->options ) ? $data['general_setting']->options : $option_data; $options = array(); if ( is_array( $option_data ) ) { foreach ( $option_data as $index_data => $option ) { $options[ $option ] = ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_option_' . ( ++$index_data ), $option ); } $form_data['options'] = $options; } if ( 'multi_select2' === $field_key ) { $form_data['choice_limit'] = isset( $data['advance_setting']->choice_limit ) ? $data['advance_setting']->choice_limit : ''; $form_data['select_all'] = isset( $data['advance_setting']->select_all ) ? ur_string_to_bool( $data['advance_setting']->select_all ) : false; } } if ( 'radio' === $field_key ) { if ( isset( $data['general_setting']->image_choice ) && ur_string_to_bool( $data['general_setting']->image_choice ) ) { $option_data = isset( $data['general_setting']->image_options ) ? $data['general_setting']->image_options : array(); $options = array(); if ( is_array( $option_data ) ) { foreach ( $option_data as $index_data => $option ) { $options[ $option->label ] = array( 'label' => ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_option_' . ( ++$index_data ), $option->label ), 'image' => $option->image, ); } $form_data['image_options'] = $options; } } else { $option_data = isset( $data['general_setting']->options ) ? $data['general_setting']->options : array(); $options = array(); if ( is_array( $option_data ) ) { foreach ( $option_data as $index_data => $option ) { $options[ $option ] = ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_option_' . ( ++$index_data ), $option ); } $form_data['options'] = $options; } } } if ( 'checkbox' === $field_key ) { $form_data['select_all'] = isset( $data['advance_setting']->select_all ) ? ur_string_to_bool( $data['advance_setting']->select_all ) : false; if ( isset( $data['general_setting']->image_choice ) && ur_string_to_bool( $data['general_setting']->image_choice ) ) { $option_data = isset( $data['general_setting']->image_options ) ? $data['general_setting']->image_options : array(); $options = array(); if ( is_array( $option_data ) ) { foreach ( $option_data as $index_data => $option ) { $options[ $option->label ] = array( 'label' => ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_option_' . ( ++$index_data ), $option->label ), 'image' => $option->image, ); } $form_data['image_options'] = $options; } } else { $option_data = isset( $data['general_setting']->options ) ? $data['general_setting']->options : array(); $options = array(); if ( is_array( $option_data ) ) { foreach ( $option_data as $index_data => $option ) { $options[ $option ] = ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_option_' . ( ++$index_data ), $option ); } $form_data['options'] = $options; } } $form_data['choice_limit'] = isset( $data['advance_setting']->choice_limit ) ? $data['advance_setting']->choice_limit : ''; } if ( 'single_item' === $field_key ) { $form_data['enable_selling_price_single_item'] = isset( $data['advance_setting']->enable_selling_price_single_item ) ? ur_string_to_bool( $data['advance_setting']->enable_selling_price_single_item ) : ''; $form_data['selling_price'] = isset( $data['advance_setting']->selling_price ) ? $data['advance_setting']->selling_price : ''; } if ( 'subscription_plan' === $field_key ) { $form_data['select_all'] = isset( $data['advance_setting']->select_all ) ? ur_string_to_bool( $data['advance_setting']->select_all ) : false; $choices = isset( $data['advance_setting']->choices ) ? explode( ',', $data['advance_setting']->choices ) : array(); // Backward compatibility. Modified since 1.5.7. $option_data = isset( $data['general_setting']->options ) ? $data['general_setting']->options : $choices; $options = array(); if ( is_array( $option_data ) ) { foreach ( $option_data as $index_data => $option ) { if ( isset( $option->label ) ) { $options[ $option->label ] = array( 'label' => $option->label, 'value' => $option->value, 'sell_value' => $option->sell_value, ); } } $form_data['options'] = $options; } } if ( 'multiple_choice' === $field_key ) { $form_data['select_all'] = isset( $data['advance_setting']->select_all ) ? ur_string_to_bool( $data['advance_setting']->select_all ) : false; $option_data = isset( $data['general_setting']->options ) ? $data['general_setting']->options : array(); $options = array(); if ( is_array( $option_data ) ) { foreach ( $option_data as $index_data => $option ) { if ( isset( $data['general_setting']->image_choice ) && ur_string_to_bool( $data['general_setting']->image_choice ) ) { $options[ $option->label ] = array( 'label' => $option->label, 'value' => $option->value, 'sell_value' => $option->sell_value, 'image' => $option->image, ); } else { $options[ $option->label ] = array( 'label' => $option->label, 'value' => $option->value, 'sell_value' => $option->sell_value, ); } } $form_data['options'] = $options; } $form_data['choice_limit'] = isset( $data['advance_setting']->choice_limit ) ? $data['advance_setting']->choice_limit : ''; } if ( 'captcha' === $field_key ) { $choices = isset( $data['advance_setting']->choices ) ? explode( ',', $data['advance_setting']->choices ) : array(); // Backward compatibility. Modified since 1.5.7. $option_data = isset( $data['general_setting']->options ) ? $data['general_setting']->options : $choices; $options = array(); if ( is_array( $option_data ) ) { foreach ( $option_data as $index_data => $option ) { $options[ $option->question ] = array( 'question' => ur_string_translation( $form_id, 'user_registration_' . $data['general_setting']->field_name . '_option_' . ( ++$index_data ), $option->question ), 'answer' => $option->answer, ); } $form_data['options'] = $options; } } if ( 'user_login' === $field_key ) { $form_data['username_length'] = isset( $data['advance_setting']->username_length ) ? $data['advance_setting']->username_length : ''; $form_data['username_character'] = isset( $data['advance_setting']->username_character ) ? $data['advance_setting']->username_character : ''; } if ( 'range' === $field_key ) { $form_data['range_min'] = ( isset( $data['advance_setting']->range_min ) && '' !== $data['advance_setting']->range_min ) ? $data['advance_setting']->range_min : '0'; $form_data['range_max'] = ( isset( $data['advance_setting']->range_max ) && '' !== $data['advance_setting']->range_max ) ? $data['advance_setting']->range_max : '10'; $form_data['range_step'] = isset( $data['advance_setting']->range_step ) ? $data['advance_setting']->range_step : ''; $enable_prefix_postfix = isset( $data['advance_setting']->enable_prefix_postfix ) ? ur_string_to_bool( $data['advance_setting']->enable_prefix_postfix ) : false; $enable_text_prefix_postfix = isset( $data['advance_setting']->enable_text_prefix_postfix ) ? ur_string_to_bool( $data['advance_setting']->enable_text_prefix_postfix ) : false; $form_data['enable_payment_slider'] = isset( $data['advance_setting']->enable_payment_slider ) ? ur_string_to_bool( $data['advance_setting']->enable_payment_slider ) : false; if ( $enable_prefix_postfix ) { if ( $enable_text_prefix_postfix ) { $form_data['range_prefix'] = isset( $data['advance_setting']->range_prefix ) ? $data['advance_setting']->range_prefix : ''; $form_data['range_postfix'] = isset( $data['advance_setting']->range_postfix ) ? $data['advance_setting']->range_postfix : ''; } else { $form_data['range_prefix'] = $form_data['range_min']; $form_data['range_postfix'] = $form_data['range_max']; } } } if ( 'timepicker' == $field_key ) { $form_data['current_time'] = isset( $data['advance_setting']->current_time ) ? $data['advance_setting']->current_time : ''; $form_data['time_interval'] = isset( $data['advance_setting']->time_interval ) ? $data['advance_setting']->time_interval : ''; $form_data['enable_time_slot_booking'] = isset( $data['advance_setting']->enable_time_slot_booking ) ? $data['advance_setting']->enable_time_slot_booking : ''; $form_data['time_format'] = isset( $data['advance_setting']->time_format ) ? $data['advance_setting']->time_format : ''; $form_data['time_range'] = isset( $data['advance_setting']->time_range ) ? $data['advance_setting']->time_range : ''; $form_data['target_date_field'] = isset( $data['advance_setting']->target_date_field ) ? $data['advance_setting']->target_date_field : ''; $form_data['time_min'] = ( isset( $data['advance_setting']->time_min ) && '' !== $data['advance_setting']->time_min ) ? $data['advance_setting']->time_min : ''; $form_data['time_max'] = ( isset( $data['advance_setting']->time_max ) && '' !== $data['advance_setting']->time_max ) ? $data['advance_setting']->time_max : ''; $timemin = isset( $form_data['time_min'] ) ? strtolower( substr( $form_data['time_min'], -2 ) ) : ''; $timemax = isset( $form_data['time_max'] ) ? strtolower( substr( $form_data['time_max'], -2 ) ) : ''; $minampm = intval( $form_data['time_min'] ) <= 12 ? 'AM' : 'PM'; $maxampm = intval( $form_data['time_max'] ) <= 12 ? 'AM' : 'PM'; // Handles the time format. if ( 'am' === $timemin || 'pm' === $timemin ) { $form_data['time_min'] = $form_data['time_min']; } else { $form_data['time_min'] = $form_data['time_min'] . '' . $minampm; } if ( 'am' === $timemax || 'pm' === $timemax ) { $form_data['time_max'] = $form_data['time_max']; } else { $form_data['time_max'] = $form_data['time_max'] . '' . $maxampm; } } if ( 'date' == $field_key ) { $form_data['enable_date_slot_booking'] = isset( $data['advance_setting']->enable_date_slot_booking ) ? $data['advance_setting']->enable_date_slot_booking : false; } /** Redundant Codes End. */ $filter_data = array( 'form_data' => $form_data, 'data' => $data, ); /** * Filter the field key based frontend form data . * * The dynamic portion of the hook name, $field_key. * * @param string $filter_data The filtered field data. */ $form_data_array = apply_filters( 'user_registration_' . $field_key . '_frontend_form_data', $filter_data, false ); $form_data = isset( $form_data_array['form_data'] ) ? $form_data_array['form_data'] : $form_data; if ( isset( $data['general_setting']->field_name ) ) { user_registration_form_field( $data['general_setting']->field_name, $form_data ); } } /** * Inlcude advance settings file if exists */ public function get_field_advance_settings() { $file_name = str_replace( 'user_registration_', '', $this->id ); $file_path = UR_FORM_PATH . 'settings' . UR_DS . 'class-ur-setting-' . strtolower( $file_name ) . '.php'; $class_name = 'UR_Setting_' . ucwords( $file_name ); if ( ! class_exists( $class_name ) ) { /** * Filter the file name and path of advance class. * * The dynamic portion of the hook name, $file_name. * * @param string $file_name The file name. * @param string $file_path The file path. */ $file_path_array = apply_filters( 'user_registration_' . strtolower( $file_name ) . '_advance_class', array( 'file_name' => strtolower( $file_name ), 'file_path' => $file_path, ) ); $file_path = isset( $file_path_array['file_path'] ) ? $file_path_array['file_path'] : $file_path; if ( file_exists( $file_path ) ) { include_once $file_path; $instance = new $class_name(); return $instance->output( $this->admin_data ); } } else { $instance = new $class_name(); return $instance->output( $this->admin_data ); } return ''; } /** * Get field general settings. * * @return string */ public function get_field_general_settings() { $general_settings = ur_get_general_settings( $this->id ); $general_setting_html = ''; $captcha_unique = uniqid(); foreach ( $general_settings as $setting_key => $setting_value ) { $tooltip_html = ! empty( $setting_value['tip'] ) ? ur_help_tip( $setting_value['tip'], false, 'ur-portal-tooltip' ) : ''; $setting_id = isset( $setting_value['setting_id'] ) ? $setting_value['setting_id'] : str_replace( ' ', '-', strtolower( $setting_value['label'] ) ); $general_setting_wrapper = '