Files
old-experiments/backend/wordpress/wp-content/plugins/woocommerce-jetpack/includes/class-wcj-checkout-custom-fields.php
2018-06-29 14:40:28 +02:00

643 lines
26 KiB
PHP
Executable File

<?php
/**
* Booster for WooCommerce - Module - Checkout Custom Fields
*
* @version 3.6.0
* @author Algoritmika Ltd.
*/
if ( ! defined( 'ABSPATH' ) ) exit;
if ( ! class_exists( 'WCJ_Checkout_Custom_Fields' ) ) :
class WCJ_Checkout_Custom_Fields extends WCJ_Module {
/**
* Constructor.
*
* @version 3.2.2
* @todo (maybe) check if `'wcj_checkout_custom_field_customer_meta_fields_' . $i` option should affect `add_default_checkout_custom_fields`
*/
function __construct() {
$this->id = 'checkout_custom_fields';
$this->short_desc = __( 'Checkout Custom Fields', 'woocommerce-jetpack' );
$this->desc = __( 'Add custom fields to the checkout page.', 'woocommerce-jetpack' );
$this->link_slug = 'woocommerce-checkout-custom-fields';
parent::__construct();
if ( $this->is_enabled() ) {
add_filter( 'woocommerce_checkout_fields', array( $this, 'add_custom_checkout_fields' ), PHP_INT_MAX );
add_action( 'woocommerce_admin_billing_fields', array( $this, 'add_custom_billing_fields_to_admin_order_display' ), PHP_INT_MAX );
add_action( 'woocommerce_admin_shipping_fields', array( $this, 'add_custom_shipping_fields_to_admin_order_display' ), PHP_INT_MAX );
add_action( 'woocommerce_admin_order_data_after_shipping_address', array( $this, 'add_custom_order_and_account_fields_to_admin_order_display' ), PHP_INT_MAX );
if ( 'yes' === get_option( 'wcj_checkout_custom_fields_add_to_order_received', 'yes' ) ) {
add_action( 'woocommerce_order_details_after_order_table', array( $this, 'add_custom_fields_to_view_order_and_thankyou_pages' ), PHP_INT_MAX );
}
add_action( 'woocommerce_email_after_order_table', array( $this, 'add_custom_fields_to_emails' ), PHP_INT_MAX, 2 );
add_filter( 'woo_ce_order_fields', array( $this, 'add_custom_fields_to_store_exporter' ) );
add_filter( 'woo_ce_order', array( $this, 'add_custom_fields_to_store_exporter_order' ), PHP_INT_MAX, 2 );
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'update_custom_checkout_fields_order_meta' ) );
// add_action( 'woocommerce_order_formatted_shipping_address', array( $this, 'add_custom_shipping_fields_to_formatted_address' ), PHP_INT_MAX, 2 );
// add_filter( 'woocommerce_form_field_' . 'number', array( $this, 'woocommerce_form_field_type_number' ), PHP_INT_MAX, 4 );
add_filter( 'woocommerce_form_field_' . 'text', array( $this, 'woocommerce_form_field_type_number' ), PHP_INT_MAX, 4 );
add_filter( 'woocommerce_customer_meta_fields', array( $this, 'add_checkout_custom_fields_customer_meta_fields' ) );
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
$the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
$the_key = 'wcj_checkout_field_' . $i;
$the_name = $the_section . '_' . $the_key;
add_filter( 'default_checkout_' . $the_name, array( $this, 'add_default_checkout_custom_fields' ), PHP_INT_MAX, 2 );
}
}
// select2 script
add_action( 'wp_enqueue_scripts', array( $this, 'maybe_enqueue_scripts' ) );
}
}
/**
* maybe_enqueue_scripts.
*
* @version 3.6.0
* @since 3.2.0
*/
function maybe_enqueue_scripts( $fields ) {
if ( is_checkout() ) {
$select2_fields = array();
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i, 'no' ) ) {
if ( 'select' === get_option( 'wcj_checkout_custom_field_type_' . $i, 'text' ) ) {
if ( 'yes' === get_option( 'wcj_checkout_custom_field_select_select2_' . $i, 'no' ) ) {
$select2_fields[] = array(
'field_id' => get_option( 'wcj_checkout_custom_field_section_' . $i, 'billing' ) . '_' . 'wcj_checkout_field_' . $i,
'minimumInputLength' => get_option( 'wcj_checkout_custom_field_select_select2_min_input_length' . $i, 0 ),
'maximumInputLength' => get_option( 'wcj_checkout_custom_field_select_select2_max_input_length' . $i, 0 ),
);
}
}
}
}
if ( ! empty( $select2_fields ) ) {
wp_enqueue_script(
'wcj-checkout-custom-fields',
wcj_plugin_url() . '/includes/js/wcj-checkout-custom-fields.js',
array( 'jquery' ),
WCJ()->version,
true
);
wp_localize_script(
'wcj-checkout-custom-fields',
'wcj_checkout_custom_fields',
array(
'select2_fields' => $select2_fields,
)
);
}
}
}
/**
* add_checkout_custom_fields_customer_meta_fields.
*
* @version 3.2.4
* @since 2.4.5
*/
function add_checkout_custom_fields_customer_meta_fields( $fields ) {
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
if ( 'no' === get_option( 'wcj_checkout_custom_field_customer_meta_fields_' . $i, 'yes' ) ) {
continue;
}
$the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
$the_key = 'wcj_checkout_field_' . $i;
$the_name = $the_section . '_' . $the_key;
$fields[ $the_section ]['fields'][ $the_name ] = array(
'label' => get_option( 'wcj_checkout_custom_field_label_' . $i ),
'description' => '',
);
}
}
return $fields;
}
/**
* add_default_checkout_custom_fields.
*
* @version 2.4.5
* @since 2.4.5
*/
function add_default_checkout_custom_fields( $default_value, $field_key ) {
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
if ( $meta = get_user_meta( $current_user->ID, $field_key, true ) ) {
return $meta;
}
}
return $default_value;
}
/**
* woocommerce_form_field_type_number.
*
* @version 2.3.0
* @since 2.3.0
*/
function woocommerce_form_field_type_number( $field, $key, $args, $value ) {
/*
$args['input_class'] = array();
$args['maxlength'] = '';
$custom_attributes = array();
$field = '<input type="number" class="input-text ' . esc_attr( implode( ' ', $args['input_class'] ) ) .'" name="' . esc_attr( $key ) . '" id="' . esc_attr( $args['id'] ) . '" placeholder="' . esc_attr( $args['placeholder'] ) . '" '.$args['maxlength'].' value="' . esc_attr( $value ) . '" ' . implode( ' ', $custom_attributes ) . ' />';
return $field;
*/
if ( isset( $args['custom_attributes']['display'] ) && 'number' === $args['custom_attributes']['display'] ) {
$field = str_replace( '<input type="text" ', '<input type="number" ', $field );
}
return $field;
}
/**
* add_custom_fields_to_store_exporter_order.
*
* @version 2.3.0
* @since 2.2.7
*/
function add_custom_fields_to_store_exporter_order( $order, $order_id ) {
$post_meta = get_post_meta( $order_id );
foreach( $post_meta as $key => $values ) {
if ( false !== strpos( $key, 'wcj_checkout_field_' ) && isset( $values[0] ) ) {
if ( false !== strpos( $key, '_label_' ) ) {
continue;
}
$order->$key = isset( $values[0]['value'] ) ? $values[0]['value'] : $values[0];
}
}
return $order;
}
/**
* add_custom_fields_to_store_exporter.
*/
function add_custom_fields_to_store_exporter( $fields ) {
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
$the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
$the_key = 'wcj_checkout_field_' . $i;
$fields[] = array(
'name' => $the_section . '_' . $the_key,
'label' => get_option( 'wcj_checkout_custom_field_label_' . $i ),
);
}
}
return $fields;
}
/**
* add_custom_shipping_fields_to_formatted_address.
*/
/* function add_custom_shipping_fields_to_formatted_address( $fields, $order ) {
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
//if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
$the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
if ( 'shipping' === $the_section ) {
$option_name = $the_section . '_' . 'wcj_checkout_field_' . $i;
$fields[ $option_name ] = get_post_meta( wcj_get_order_id( $order ), '_' . $option_name, true );
}
//}
}
return $fields;
} */
/**
* update_custom_checkout_fields_order_meta.
*
* @version 2.4.7
*/
function update_custom_checkout_fields_order_meta( $order_id ) {
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
$the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
$the_type = get_option( 'wcj_checkout_custom_field_type_' . $i );
$option_name = $the_section . '_' . 'wcj_checkout_field_' . $i;
$option_name_label = $the_section . '_' . 'wcj_checkout_field_label_' . $i;
$option_name_type = $the_section . '_' . 'wcj_checkout_field_type_' . $i;
if ( ! empty( $_POST[ $option_name ] ) || 'checkbox' === $the_type ) {
update_post_meta( $order_id, '_' . $option_name_type, $the_type );
update_post_meta( $order_id, '_' . $option_name_label, get_option( 'wcj_checkout_custom_field_label_' . $i ) );
if ( 'checkbox' === $the_type ) {
$the_value = ( isset( $_POST[ $option_name ] ) ) ? 1 : 0;
update_post_meta( $order_id, '_' . $option_name, $the_value );
$option_name_checkbox_value = $the_section . '_' . 'wcj_checkout_field_checkbox_value_' . $i;
$checkbox_value = ( 1 == $the_value ) ?
get_option( 'wcj_checkout_custom_field_checkbox_yes_' . $i ) :
get_option( 'wcj_checkout_custom_field_checkbox_no_' . $i );
update_post_meta( $order_id, '_' . $option_name_checkbox_value, $checkbox_value );
} elseif ( 'radio' === $the_type || 'select' === $the_type ) {
update_post_meta( $order_id, '_' . $option_name, wc_clean( $_POST[ $option_name ] ) );
$option_name_values = $the_section . '_' . 'wcj_checkout_field_select_options_' . $i;
$the_values = get_option( 'wcj_checkout_custom_field_select_options_' . $i );
update_post_meta( $order_id, '_' . $option_name_values, $the_values );
} else {
update_post_meta( $order_id, '_' . $option_name, wc_clean( $_POST[ $option_name ] ) );
}
}
}
}
}
/**
* add_custom_fields_to_emails.
*
* @version 3.2.2
*/
function add_custom_fields_to_emails( $order, $sent_to_admin ) {
if (
( $sent_to_admin && 'yes' === get_option( 'wcj_checkout_custom_fields_email_all_to_admin' ) ) ||
( ! $sent_to_admin && 'yes' === get_option( 'wcj_checkout_custom_fields_email_all_to_customer' ) )
) {
$templates = array(
'before' => get_option( 'wcj_checkout_custom_fields_emails_template_before', '' ),
'field' => get_option( 'wcj_checkout_custom_fields_emails_template_field', '<p><strong>%label%:</strong> %value%</p>' ),
'after' => get_option( 'wcj_checkout_custom_fields_emails_template_after', '' ),
);
$this->add_custom_fields_to_order_display( $order, '', $templates );
}
}
/**
* add_custom_fields_to_view_order_and_thankyou_pages.
*
* @version 3.2.2
* @since 3.2.2
*/
function add_custom_fields_to_view_order_and_thankyou_pages( $order ) {
$templates = array(
'before' => get_option( 'wcj_checkout_custom_fields_order_received_template_before', '' ),
'field' => get_option( 'wcj_checkout_custom_fields_order_received_template_field', '<p><strong>%label%:</strong> %value%</p>' ),
'after' => get_option( 'wcj_checkout_custom_fields_order_received_template_after', '' ),
);
$this->add_custom_fields_to_order_display( $order, '', $templates );
}
/**
* add_custom_fields_to_order_display.
*
* @version 3.2.2
* @since 2.3.0
* @todo convert from before version 2.3.0
*/
function add_custom_fields_to_order_display( $order, $section = '', $templates ) {
$post_meta = get_post_meta( wcj_get_order_id( $order ) );
$final_output = '';
foreach( $post_meta as $key => $values ) {
if ( false !== strpos( $key, 'wcj_checkout_field_' ) && isset( $values[0] ) ) {
// Checking section (if set)
if ( '' != $section ) {
$the_section = strtok( $key, '_' );
if ( $section !== $the_section ) {
continue;
}
}
// Skipping unnecessary meta
if (
false !== strpos( $key, '_label_' ) ||
false !== strpos( $key, '_type_' ) ||
false !== strpos( $key, '_checkbox_value_' ) ||
false !== strpos( $key, '_select_options_' )
) {
continue;
}
// Field label
$label = '';
$the_label_key = str_replace( 'wcj_checkout_field_', 'wcj_checkout_field_label_', $key );
if ( isset( $post_meta[ $the_label_key ][0] ) ) {
$label = $post_meta[ $the_label_key ][0];
} elseif ( is_array( $values[0] ) && isset( $values[0]['label'] ) ) {
$label = $values[0]['label'];
}
// Field value
$value = '';
$_value = ( is_array( $values[0] ) && isset( $values[0]['value'] ) ? $values[0]['value'] : $values[0] );
$type_key = str_replace( 'wcj_checkout_field_', 'wcj_checkout_field_type_', $key );
if ( isset( $post_meta[ $type_key ][0] ) && 'checkbox' === $post_meta[ $type_key ][0] ) {
$checkbox_value_key = str_replace( 'wcj_checkout_field_', 'wcj_checkout_field_checkbox_value_', $key );
$value = ( isset( $post_meta[ $checkbox_value_key ][0] ) ? $post_meta[ $checkbox_value_key ][0] : $_value );
} elseif ( isset( $post_meta[ $type_key ][0] ) && ( 'radio' === $post_meta[ $type_key ][0] || 'select' === $post_meta[ $type_key ][0] ) ) {
$select_values_key = str_replace( 'wcj_checkout_field_', 'wcj_checkout_field_select_options_', $key );
$select_values = ( isset( $post_meta[ $select_values_key ][0] ) ) ? $post_meta[ $select_values_key ][0] : '';
if ( ! empty( $select_values ) ) {
$select_values_prepared = wcj_get_select_options( $select_values );
$value = ( isset( $select_values_prepared[ $_value ] ) ? $select_values_prepared[ $_value ] : $_value );
} else {
$value = $_value;
}
} else {
$value = $_value;
}
// Adding field to final output
if ( '' != $label || '' != $value ) {
$replaced_values = array(
'%label%' => $label,
'%value%' => $value,
);
$final_output .= str_replace( array_keys( $replaced_values ), $replaced_values, $templates['field'] );
}
}
}
// Outputting
if ( '' != $final_output ) {
echo $templates['before'] . $final_output . $templates['after'];
}
}
/**
* add_woocommerce_admin_fields.
*
* @version 2.4.7
* @todo Converting from before version 2.3.0: section?
*/
function add_woocommerce_admin_fields( $fields, $section ) {
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
$the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
if ( $section != $the_section ) {
continue;
}
$the_type = get_option( 'wcj_checkout_custom_field_type_' . $i );
if ( 'select' === $the_type ) {
$the_class = 'first';
$options = wcj_get_select_options( get_option( 'wcj_checkout_custom_field_select_options_' . $i ) );
} elseif ( 'radio' === $the_type ) {
$the_options = get_post_meta( get_the_ID(), '_' . $section . '_' . 'wcj_checkout_field_select_options_' . $i, true );
if ( ! empty( $the_options ) ) {
$the_type = 'select';
$the_class = 'first';
$options = wcj_get_select_options( $the_options );
} else {
$the_options = wcj_get_select_options( get_option( 'wcj_checkout_custom_field_select_options_' . $i ) );
if ( ! empty( $the_options ) ) {
$the_type = 'select';
$the_class = 'first';
$options = $the_options;
} else {
$the_type = 'text';
$the_class = 'short';
}
}
} elseif ( 'country' === $the_type ) {
$the_type = 'select';
$the_class = 'js_field-country select short';
$options = WC()->countries->get_allowed_countries();
} else {
$the_type = 'text';
$the_class = 'short';
}
$the_key = 'wcj_checkout_field_' . $i;
$the_key_label = 'wcj_checkout_field_label_' . $i;
$the_meta = get_post_meta( get_the_ID(), '_' . $section . '_' . $the_key, true );
if ( is_array( $the_meta ) ) {
// Converting from before version 2.3.0
if ( isset( $the_meta['value'] ) ) update_post_meta( get_the_ID(), '_' . $section . '_' . $the_key, $the_meta['value'] );
if ( isset( $the_meta['label'] ) ) update_post_meta( get_the_ID(), '_' . $section . '_' . $the_key_label, $the_meta['label'] );
}
$fields[ $the_key ] = array(
'type' => $the_type,
'label' => ( '' != get_post_meta( get_the_ID(), '_' . $section . '_' . $the_key_label, true ) ) ?
get_post_meta( get_the_ID(), '_' . $section . '_' . $the_key_label, true ) :
get_option( 'wcj_checkout_custom_field_label_' . $i ),
'show' => true,
'class' => $the_class,
'wrapper_class' => 'form-field-wide',
);
if ( isset( $options ) ) {
$fields[ $the_key ]['options'] = $options;
}
}
}
return $fields;
}
/**
* add_custom_billing_fields_to_admin_order_display.
*/
function add_custom_billing_fields_to_admin_order_display( $fields ) {
return $this->add_woocommerce_admin_fields( $fields, 'billing' );
}
/**
* add_custom_shipping_fields_to_admin_order_display.
*/
function add_custom_shipping_fields_to_admin_order_display( $fields ) {
return $this->add_woocommerce_admin_fields( $fields, 'shipping' );
}
/**
* add_custom_order_and_account_fields_to_admin_order_display
*
* @version 3.2.2
*/
function add_custom_order_and_account_fields_to_admin_order_display( $order ) {
$templates = array(
'before' => '<div class="clear"></div><p>',
'field' => '<strong>%label%: </strong>%value%<br>',
'after' => '</p>',
);
$this->add_custom_fields_to_order_display( $order, 'order', $templates );
$this->add_custom_fields_to_order_display( $order, 'account', $templates );
/*
$fields = $this->add_woocommerce_admin_fields( $fields, 'order' );
$fields = $this->add_woocommerce_admin_fields( $fields, 'account' );
return $fields;
*/
}
/**
* is_visible.
*
* @version 3.4.0
* @since 2.6.0
* @todo add "user roles to include/exclude"
*/
function is_visible( $i ) {
if ( apply_filters( 'wcj_checkout_custom_field_always_visible_on_empty_cart', false ) && WC()->cart->is_empty() ) {
// Added for "One Page Checkout" plugin compatibility.
return true;
}
// Checking categories
$categories_ex = get_option( 'wcj_checkout_custom_field_categories_ex_' . $i );
if ( ! empty( $categories_ex ) ) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
$product_categories = get_the_terms( $values['product_id'], 'product_cat' );
if ( empty( $product_categories ) ) {
continue;
}
foreach( $product_categories as $product_category ) {
if ( in_array( $product_category->term_id, $categories_ex ) ) {
return false;
}
}
}
}
$categories_in = get_option( 'wcj_checkout_custom_field_categories_in_' . $i );
if ( ! empty( $categories_in ) ) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
$product_categories = get_the_terms( $values['product_id'], 'product_cat' );
if ( empty( $product_categories ) ) {
continue;
}
foreach( $product_categories as $product_category ) {
if ( in_array( $product_category->term_id, $categories_in ) ) {
return true;
}
}
}
return false;
}
// Checking products
$products_ex = get_option( 'wcj_checkout_custom_field_products_ex_' . $i );
if ( ! empty( $products_ex ) ) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
if ( in_array( $values['product_id'], $products_ex ) ) {
return false;
}
}
}
$products_in = get_option( 'wcj_checkout_custom_field_products_in_' . $i );
if ( ! empty( $products_in ) ) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
if ( in_array( $values['product_id'], $products_in ) ) {
return true;
}
}
return false;
}
// Checking min/max cart amount
$cart_total = false;
if ( ( $min_cart_amount = get_option( 'wcj_checkout_custom_field_min_cart_amount_' . $i, 0 ) ) > 0 ) {
WC()->cart->calculate_totals();
$cart_total = WC()->cart->total;
if ( $cart_total < $min_cart_amount ) {
return false;
}
}
if ( ( $max_cart_amount = get_option( 'wcj_checkout_custom_field_max_cart_amount_' . $i, 0 ) ) > 0 ) {
if ( false === $cart_total ) {
WC()->cart->calculate_totals();
$cart_total = WC()->cart->total;
}
if ( $cart_total > $max_cart_amount ) {
return false;
}
}
// All passed
return apply_filters( 'wcj_checkout_custom_field_visible', true, $i );
}
/**
* add_custom_checkout_fields.
*
* @version 3.2.4
* @todo (maybe) fix - priority seems to not affect tab order (same in Checkout Core Fields module)
*/
function add_custom_checkout_fields( $fields ) {
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
if ( ! $this->is_visible( $i ) ) {
continue;
}
$the_type = get_option( 'wcj_checkout_custom_field_type_' . $i );
$custom_attributes = array();
if ( 'datepicker' === $the_type || 'weekpicker' === $the_type || 'timepicker' === $the_type || 'number' === $the_type ) {
if ( 'datepicker' === $the_type || 'weekpicker' === $the_type ) {
$datepicker_format_option = get_option( 'wcj_checkout_custom_field_datepicker_format_' . $i, '' );
$datepicker_format = ( '' == $datepicker_format_option ) ? get_option( 'date_format' ) : $datepicker_format_option;
$datepicker_format = wcj_date_format_php_to_js( $datepicker_format );
$custom_attributes['dateformat'] = $datepicker_format;
$custom_attributes['mindate'] = get_option( 'wcj_checkout_custom_field_datepicker_mindate_' . $i, -365 );
if ( 0 == $custom_attributes['mindate'] ) {
$custom_attributes['mindate'] = 'zero';
}
$custom_attributes['maxdate'] = get_option( 'wcj_checkout_custom_field_datepicker_maxdate_' . $i, 365 );
if ( 0 == $custom_attributes['maxdate'] ) {
$custom_attributes['maxdate'] = 'zero';
}
$custom_attributes['firstday'] = get_option( 'wcj_checkout_custom_field_datepicker_firstday_' . $i, 0 );
if ( 'yes' === get_option( 'wcj_checkout_custom_field_datepicker_changeyear_' . $i, 'yes' ) ) {
$custom_attributes['changeyear'] = 1;
$custom_attributes['yearrange'] = get_option( 'wcj_checkout_custom_field_datepicker_yearrange_' . $i, 'c-10:c+10' );
}
$custom_attributes['display'] = ( 'datepicker' === $the_type ) ? 'date' : 'week';
} elseif ( 'timepicker' === $the_type ) {
$custom_attributes['timeformat'] = get_option( 'wcj_checkout_custom_field_timepicker_format_' . $i, 'hh:mm p' );
$custom_attributes['interval'] = get_option( 'wcj_checkout_custom_field_timepicker_interval_' . $i, 15 );
$custom_attributes['display'] = 'time';
} else/* if ( 'number' === $the_type ) */ {
$custom_attributes['display'] = $the_type;
}
$the_type = 'text';
}
$the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
$the_key = 'wcj_checkout_field_' . $i;
$the_field = array(
'type' => $the_type,
'label' => get_option( 'wcj_checkout_custom_field_label_' . $i ),
'placeholder' => get_option( 'wcj_checkout_custom_field_placeholder_' . $i ),
'required' => ( 'yes' === get_option( 'wcj_checkout_custom_field_required_' . $i ) ) ? true : false,
'custom_attributes' => $custom_attributes,
'clear' => ( 'yes' === get_option( 'wcj_checkout_custom_field_clear_' . $i ) ) ? true : false,
'class' => array( get_option( 'wcj_checkout_custom_field_class_' . $i ), ),
'priority' => get_option( 'wcj_checkout_custom_field_priority_' . $i, '' ),
);
if ( 'select' === $the_type || 'radio' === $the_type ) {
$select_options_raw = get_option( 'wcj_checkout_custom_field_select_options_' . $i );
$select_options = wcj_get_select_options( $select_options_raw );
if ( 'select' === $the_type ) {
$placeholder = get_option( 'wcj_checkout_custom_field_placeholder_' . $i );
if ( '' != $placeholder ) {
$select_options = array_replace( array( '' => $placeholder ), $select_options );
}
}
$the_field['options'] = $select_options;
if ( ! empty( $select_options ) ) {
reset( $select_options );
$the_field['default'] = key( $select_options );
}
}
if ( 'checkbox' === $the_type ) {
$the_field['default'] = ( 'yes' === get_option( 'wcj_checkout_custom_field_checkbox_default_' . $i ) ) ? 1 : 0;
}
$fields[ $the_section ][ $the_section . '_' . $the_key ] = $the_field;
}
}
return $fields;
}
}
endif;
return new WCJ_Checkout_Custom_Fields();