| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480 |
- <?php if ( ! defined( 'ABSPATH' ) ) exit;
- /*
- * Function to register a new field for user's country
- *
- * @since 2.2.37
- * @returns void
- */
- function ninja_forms_register_field_credit_card(){
- $reg_field = apply_filters( 'ninja_forms_enable_credit_card_field', false );
- $args = array(
- 'name' => __( 'Credit Card', 'ninja-forms' ),
- 'sidebar' => '',
- 'display_function' => 'ninja_forms_field_credit_card_display',
- 'group' => 'standard_fields',
- 'edit_conditional' => true,
- 'edit_custom_class' => false,
- 'edit_options' => array(),
- //'post_process' => 'ninja_forms_field_credit_card_test',
- 'save_sub' => false,
- 'process_field' => false,
- 'edit_label' => false,
- 'edit_label_pos' => false,
- 'edit_options' => array(
- array(
- 'type' => 'hidden',
- 'name' => 'payment_field_group',
- 'default' => 1,
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_number_label',
- 'label' => __( 'Card Number Label', 'ninja-forms' ),
- 'default' => __( 'Card Number', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_number_desc',
- 'label' => __( 'Card Number Description', 'ninja-forms' ),
- 'default' => __( 'The (typically) 16 digits on the front of your credit card.', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_cvc_label',
- 'label' => __( 'Card CVC Label', 'ninja-forms' ),
- 'default' => __( 'CVC', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_cvc_desc',
- 'label' => __( 'Card CVC Description', 'ninja-forms' ),
- 'default' => __( 'The 3 digit (back) or 4 digit (front) value on your card.', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_name_label',
- 'label' => __( 'Card Name Label', 'ninja-forms' ),
- 'default' => __( 'Name on the card', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_name_desc',
- 'label' => __( 'Card Name Description', 'ninja-forms' ),
- 'default' => __( 'The name printed on the front of your credit card.', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_exp_month_label',
- 'label' => __( 'Card Expiry Month Label', 'ninja-forms' ),
- 'default' => __( 'Expiration month (MM)', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_exp_month_desc',
- 'label' => __( 'Card Expiry Month Description', 'ninja-forms' ),
- 'default' => __( 'The month your credit card expires, typically on the front of the card.', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_exp_year_label',
- 'label' => __( 'Card Expiry Year Label', 'ninja-forms' ),
- 'default' => __( 'Expiration year (YYYY)', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- array(
- 'type' => 'text',
- 'name' => 'cc_exp_year_desc',
- 'label' => __( 'Card Expiry Year Description', 'ninja-forms' ),
- 'default' => __( 'The year your credit card expires, typically on the front of the card.', 'ninja-forms' ),
- 'width' => 'wide',
- 'class' => 'widefat',
- ),
- ),
- );
- if ( $reg_field ) {
- ninja_forms_register_field( '_credit_card', $args );
- }
- }
- add_action( 'init', 'ninja_forms_register_field_credit_card' );
- /*
- * Function to display our credit_card field on the front-end.
- *
- * @since 2.2.37
- * @returns void
- */
- function ninja_forms_field_credit_card_display( $field_id, $data, $form_id = '' ) {
- global $ninja_forms_processing;
- if( isset( $data['default_value'] ) ) {
- $default_value = $data['default_value'];
- }else{
- $default_value = '';
- }
- if ( isset ( $data['label_pos'] ) ) {
- $label_pos = $data['label_pos'];
- } else {
- $label_pos = 'above';
- }
- $cc_number_label = isset ( $data['cc_number_label'] ) ? $data['cc_number_label'] : __( 'Card Number', 'ninja-forms' );
- $cc_number_desc = isset ( $data['cc_number_desc'] ) ? $data['cc_number_desc'] : __( 'The (typically) 16 digits on the front of your credit card.', 'ninja-forms' );
-
- $cc_cvc_label = isset ( $data['cc_cvc_label'] ) ? $data['cc_cvc_label'] : __( 'CVC', 'ninja-forms' );
- $cc_cvc_desc = isset ( $data['cc_cvc_desc'] ) ? $data['cc_cvc_desc'] : __( 'The 3 digit (back) or 4 digit (front) value on your card.', 'ninja-forms' );
- $cc_name_label = isset ( $data['cc_name_label'] ) ? $data['cc_name_label'] : __( 'Name on the card', 'ninja-forms' );
- $cc_name_desc = isset ( $data['cc_name_desc'] ) ? $data['cc_name_desc'] : __( 'The name printed on the front of your credit card.', 'ninja-forms' );
- $cc_exp_month_label = isset ( $data['cc_exp_month_label'] ) ? $data['cc_exp_month_label'] : __( 'Expiration month (MM)', 'ninja-forms' );
- $cc_exp_month_desc = isset ( $data['cc_exp_month_desc'] ) ? $data['cc_exp_month_desc'] : __( 'The month your credit card expires, typically on the front of the card.', 'ninja-forms' );
- $cc_exp_year_label = isset ( $data['cc_exp_year_label'] ) ? $data['cc_exp_year_label'] : __( 'Expiration year (YYYY)', 'ninja-forms' );
- $cc_exp_year_desc = isset ( $data['cc_exp_year_desc'] ) ? $data['cc_exp_year_desc'] : __( 'The year your credit card expires, typically on the front of the card.', 'ninja-forms' );
- if ( isset ( $ninja_forms_processing ) ){
- $name = $ninja_forms_processing->get_extra_value( '_credit_card_name' );
- $expiry_month = $ninja_forms_processing->get_extra_value( '_credit_card_expiry_month' );
- $expiry_year = $ninja_forms_processing->get_extra_value( '_credit_card_expiry_year' );
- $card_number_errors = $ninja_forms_processing->get_errors_by_location( 'credit_card_number' );
- $card_cvc_errors = $ninja_forms_processing->get_errors_by_location( 'credit_card_cvc' );
- $card_name_errors = $ninja_forms_processing->get_errors_by_location( 'credit_card_name' );
- $card_month_errors = $ninja_forms_processing->get_errors_by_location( 'credit_card_month' );
- $card_year_errors = $ninja_forms_processing->get_errors_by_location( 'credit_card_year' );
- } else {
- $name = '';
- $expiry_month = '';
- $expiry_year = '';
- $card_number_errors = '';
- $card_cvc_errors = '';
- $card_name_errors = '';
- $card_month_errors = '';
- $card_year_errors = '';
- }
- $field_class = ninja_forms_get_field_class( $field_id, $form_id );
- $post_field = apply_filters( 'ninja_forms_post_credit_card_field', false );
- $desc_pos = apply_filters( 'ninja_forms_credit_card_field_desc_pos', 'after_label' );
- $hide_cc_fields = apply_filters( 'ninja_forms_hide_cc_field', array() );
-
- if( !in_array( 'number' , $hide_cc_fields ) ){
- ?>
- <div class="ninja-forms-credit-card-number label-<?php echo $label_pos; ?> field-wrap"> <!-- Open Credit Card Wrap -->
- <?php
- if ( $desc_pos == 'before_label' or $desc_pos == 'before_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_number_desc', $cc_number_desc ); ?></span>
- <?php
- }
- if ( $label_pos == 'above' or $label_pos == 'left' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_cvc_label', $cc_number_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_label' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_number_desc', $cc_number_desc ); ?></span>
- <?php
- }
- ?>
-
- <input type="text" <?php if ( $post_field ){ echo 'name="_credit_card_number"'; } ?> class="ninja-forms-field card-number">
-
- <?php
- if ( $label_pos == 'below' or $label_pos == 'right' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_cvc_label', $cc_number_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_number_desc', $cc_number_desc ); ?></span>
- <?php
- }
- ?>
- </div>
- <div>
- <div id="ninja_forms_field_credit_card_number_error" class="ninja-forms-credit-card-number-error ninja-forms-field-error">
- <?php
- if ( $card_number_errors ) {
- if( is_array( $card_number_errors ) ) {
- foreach ( $card_number_errors as $error ) {
- echo '<p>'.$error['msg'].'</p>';
- }
- }
- }
- ?>
- </div>
- </div>
- <?php
-
- }
- if( !in_array( 'cvc' , $hide_cc_fields ) ){
-
- ?>
- <div class="ninja-forms-credit-card-cvc label-<?php echo $label_pos; ?> field-wrap"> <!-- [open_cvc_wrap] -->
- <?php
- if ( $desc_pos == 'before_label' or $desc_pos == 'before_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_cvc_desc', $cc_cvc_desc ); ?></span>
- <?php
- }
- if ( $label_pos == 'above' or $label_pos == 'left' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_cvc_label', $cc_cvc_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_label' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_cvc_desc', $cc_cvc_desc ); ?></span>
- <?php
- }
- ?>
-
- <input type="text" <?php if ( $post_field ){ echo 'name="_credit_card_cvc"'; } ?> class="ninja-forms-field card-cvc">
-
- <?php
- if ( $label_pos == 'below' or $label_pos == 'right' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_cvc_label', $cc_cvc_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_cvc_desc', $cc_cvc_desc ); ?></span>
- <?php
- }
- ?>
- </div>
- <div>
- <div class="ninja-forms-credit-card-cvc-error ninja-forms-field-error">
- <?php
- if ( $card_cvc_errors ) {
- if( is_array( $card_cvc_errors ) ) {
- foreach ( $card_cvc_errors as $error ) {
- echo '<p>'.$error['msg'].'</p>';
- }
- }
- }
- ?>
- </div>
- </div>
- <?php
-
- }
- if( !in_array( 'name' , $hide_cc_fields ) ){
-
- ?>
-
- <div class="ninja-forms-credit-card-name label-<?php echo $label_pos; ?> field-wrap"> <!-- [open_nameoncard_wrap] -->
- <?php
- if ( $desc_pos == 'before_label' or $desc_pos == 'before_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_name_desc', $cc_name_desc ); ?></span>
- <?php
- }
- if ( $label_pos == 'above' or $label_pos == 'left' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_name_label', $cc_name_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_label' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_name_desc', $cc_name_desc ); ?></span>
- <?php
- }
- ?>
-
- <input type="text" <?php if ( $post_field ){ echo 'name="_credit_card_name"'; } ?> class="ninja-forms-field card-name" value="<?php echo $name;?>">
-
- <?php
- if ( $label_pos == 'below' or $label_pos == 'right' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_name_label', $cc_name_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_name_desc', $cc_name_desc ); ?></span>
- <?php
- }
- ?>
- </div>
- <div>
- <div class="ninja-forms-credit-card-name-error ninja-forms-field-error">
- <?php
- if ( $card_name_errors ) {
- if( is_array( $card_name_errors ) ) {
- foreach ( $card_name_errors as $error ) {
- echo '<p>'.$error['msg'].'</p>';
- }
- }
- }
- ?>
- </div>
- </div>
- <?php
-
- }
- if( !in_array( 'expires' , $hide_cc_fields ) ){
-
- ?>
- <div class="ninja-forms-credit-card-exp-month label-<?php echo $label_pos; ?> field-wrap"> <!-- [open_expires_wrap] -->
- <?php
- if ( $desc_pos == 'before_label' or $desc_pos == 'before_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_exp_month_desc', $cc_exp_month_desc ); ?></span>
- <?php
- }
- if ( $label_pos == 'above' or $label_pos == 'left' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_exp_month_label', $cc_exp_month_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_label' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_exp_month_desc', $cc_exp_month_desc ); ?></span>
- <?php
- }
- ?>
- <input type="text" <?php if ( $post_field ){ echo 'name="_credit_card_expires_month"'; } ?> class="ninja-forms-field ninja-forms-mask card-expiry-month" data-mask="99" value="<?php echo $expiry_month;?>">
-
- <?php
- if ( $label_pos == 'below' or $label_pos == 'right' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_exp_month_label', $cc_exp_month_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_exp_month_desc', $cc_exp_month_desc ); ?></span>
- <?php
- }
- ?>
- </div>
- <div>
- <div class="ninja-forms-credit-card-exp-month-error ninja-forms-field-error">
- <?php
- if ( $card_month_errors ) {
- if( is_array( $card_month_errors ) ) {
- foreach ( $card_month_errors as $error ) {
- echo '<p>'.$error['msg'].'</p>';
- }
- }
- }
- ?>
- </div> <!-- [close_exp_month_wrap] -->
- </div>
- <div class="ninja-forms-credit-card-exp-year label-<?php echo $label_pos; ?> field-wrap"> <!-- [open_exp_year_wrap] -->
- <?php
- if ( $desc_pos == 'before_label' or $desc_pos == 'before_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_exp_year_desc', $cc_exp_year_desc ); ?></span>
- <?php
- }
- if ( $label_pos == 'above' or $label_pos == 'left' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_exp_year_label', $cc_exp_year_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_label' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_exp_year_desc', $cc_exp_year_desc ); ?></span>
- <?php
- }
- ?>
- <input type="text" <?php if ( $post_field ){ echo 'name="_credit_card_expires_year"'; } ?> class="ninja-forms-field ninja-forms-mask card-expiry-year" data-mask="9999" value="<?php echo $expiry_year;?>">
-
- <?php
- if ( $label_pos == 'below' or $label_pos == 'right' ) {
- ?>
- <label><?php echo apply_filters( 'ninja_forms_credit_card_exp_year_label', $cc_exp_year_label ); ?></label>
- <?php
- }
- if ( $desc_pos == 'after_everything' ) {
- ?>
- <span><?php echo apply_filters( 'ninja_forms_credit_card_exp_year_desc', $cc_exp_year_desc ); ?></span>
- <?php
- }
- ?>
- </div>
- <div>
- <div class="ninja-forms-credit-card-exp-year-error ninja-forms-field-error">
- <?php
- if ( $card_year_errors ) {
- if( is_array( $card_year_errors ) ) {
- foreach ( $card_year_errors as $error ) {
- echo '<p>'.$error['msg'].'</p>';
- }
- }
- }
- ?>
- </div> <!-- [close_exp_month_wrap] -->
- </div>
- <?php
- }
- }
- /*
- *
- * Function that filters the display script field data so that the mask is included for the expires field.
- *
- * @since 2.2.37
- * @returns array $data
- */
- function ninja_forms_field_credit_card_expire_filter( $data, $field_id ){
- $field = ninja_forms_get_field_by_id( $field_id );
- if ( $field['type'] == '_credit_card' ) {
- $data['mask'] = '99/9999';
- }
- return $data;
- }
- add_action( 'ninja_forms_display_script_field_data', 'ninja_forms_field_credit_card_expire_filter', 10, 2 );
|