@@ -126,25 +126,25 @@ |
||
| 126 | 126 | |
| 127 | 127 | if ( ! empty( $invoice_actions ) ) { |
| 128 | 128 | |
| 129 | - echo '<div class="wpinv-receipt-actions text-right mt-1 mb-4">'; |
|
| 129 | + echo '<div class="wpinv-receipt-actions text-right mt-1 mb-4">'; |
|
| 130 | 130 | |
| 131 | - foreach ( $invoice_actions as $key => $invoice_action ) { |
|
| 131 | + foreach ( $invoice_actions as $key => $invoice_action ) { |
|
| 132 | 132 | |
| 133 | - $key = sanitize_html_class( $key ); |
|
| 134 | - $class = empty( $invoice_action['class'] ) ? 'btn-dark' : sanitize_html_class( $invoice_action['class'] ); |
|
| 135 | - $url = empty( $invoice_action['url'] ) ? '#' : esc_url( $invoice_action['url'] ); |
|
| 136 | - $attrs = empty( $invoice_action['attrs'] ) ? '' : $invoice_action['attrs']; |
|
| 137 | - $anchor = esc_html( $invoice_action['name'] ); |
|
| 133 | + $key = sanitize_html_class( $key ); |
|
| 134 | + $class = empty( $invoice_action['class'] ) ? 'btn-dark' : sanitize_html_class( $invoice_action['class'] ); |
|
| 135 | + $url = empty( $invoice_action['url'] ) ? '#' : esc_url( $invoice_action['url'] ); |
|
| 136 | + $attrs = empty( $invoice_action['attrs'] ) ? '' : $invoice_action['attrs']; |
|
| 137 | + $anchor = esc_html( $invoice_action['name'] ); |
|
| 138 | 138 | |
| 139 | - echo wp_kses_post( "<a href='$url' class='btn btn-sm ml-1 $class $key' $attrs>$anchor</a>" ); |
|
| 139 | + echo wp_kses_post( "<a href='$url' class='btn btn-sm ml-1 $class $key' $attrs>$anchor</a>" ); |
|
| 140 | 140 | } |
| 141 | 141 | |
| 142 | - echo '</div>'; |
|
| 142 | + echo '</div>'; |
|
| 143 | 143 | |
| 144 | 144 | } |
| 145 | 145 | |
| 146 | 146 | if ( ! empty( $alert ) ) { |
| 147 | - echo wp_kses_post( $alert ); |
|
| 147 | + echo wp_kses_post( $alert ); |
|
| 148 | 148 | } |
| 149 | 149 | |
| 150 | 150 | ?> |
@@ -8,7 +8,7 @@ discard block |
||
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | 10 | if ( ! defined( 'ABSPATH' ) ) { |
| 11 | - exit; // Exit if accessed directly |
|
| 11 | + exit; // Exit if accessed directly |
|
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | /** |
@@ -17,10 +17,10 @@ discard block |
||
| 17 | 17 | class GetPaid_Meta_Box_Invoice_Address { |
| 18 | 18 | |
| 19 | 19 | /** |
| 20 | - * Output the metabox. |
|
| 21 | - * |
|
| 22 | - * @param WP_Post $post |
|
| 23 | - */ |
|
| 20 | + * Output the metabox. |
|
| 21 | + * |
|
| 22 | + * @param WP_Post $post |
|
| 23 | + */ |
|
| 24 | 24 | public static function output( $post ) { |
| 25 | 25 | |
| 26 | 26 | // Prepare the invoice. |
@@ -225,37 +225,37 @@ discard block |
||
| 225 | 225 | |
| 226 | 226 | if ( empty( $states ) ) { |
| 227 | 227 | |
| 228 | - aui()->input( |
|
| 229 | - array( |
|
| 230 | - 'type' => 'text', |
|
| 231 | - 'id' => 'wpinv_state', |
|
| 232 | - 'name' => 'wpinv_state', |
|
| 233 | - 'label' => __( 'State', 'invoicing' ), |
|
| 234 | - 'label_type' => 'vertical', |
|
| 235 | - 'placeholder' => '', |
|
| 236 | - 'class' => 'form-control-sm', |
|
| 237 | - 'value' => $invoice->get_state( 'edit' ), |
|
| 238 | - ), |
|
| 239 | - true |
|
| 240 | - ); |
|
| 228 | + aui()->input( |
|
| 229 | + array( |
|
| 230 | + 'type' => 'text', |
|
| 231 | + 'id' => 'wpinv_state', |
|
| 232 | + 'name' => 'wpinv_state', |
|
| 233 | + 'label' => __( 'State', 'invoicing' ), |
|
| 234 | + 'label_type' => 'vertical', |
|
| 235 | + 'placeholder' => '', |
|
| 236 | + 'class' => 'form-control-sm', |
|
| 237 | + 'value' => $invoice->get_state( 'edit' ), |
|
| 238 | + ), |
|
| 239 | + true |
|
| 240 | + ); |
|
| 241 | 241 | |
| 242 | 242 | } else { |
| 243 | 243 | |
| 244 | - aui()->select( |
|
| 245 | - array( |
|
| 246 | - 'id' => 'wpinv_state', |
|
| 247 | - 'name' => 'wpinv_state', |
|
| 248 | - 'label' => __( 'State', 'invoicing' ), |
|
| 249 | - 'label_type' => 'vertical', |
|
| 250 | - 'placeholder' => __( 'Select a state', 'invoicing' ), |
|
| 251 | - 'class' => 'form-control-sm', |
|
| 252 | - 'value' => $invoice->get_state( 'edit' ), |
|
| 253 | - 'options' => $states, |
|
| 254 | - 'data-allow-clear' => 'false', |
|
| 255 | - 'select2' => true, |
|
| 256 | - ), |
|
| 257 | - true |
|
| 258 | - ); |
|
| 244 | + aui()->select( |
|
| 245 | + array( |
|
| 246 | + 'id' => 'wpinv_state', |
|
| 247 | + 'name' => 'wpinv_state', |
|
| 248 | + 'label' => __( 'State', 'invoicing' ), |
|
| 249 | + 'label_type' => 'vertical', |
|
| 250 | + 'placeholder' => __( 'Select a state', 'invoicing' ), |
|
| 251 | + 'class' => 'form-control-sm', |
|
| 252 | + 'value' => $invoice->get_state( 'edit' ), |
|
| 253 | + 'options' => $states, |
|
| 254 | + 'data-allow-clear' => 'false', |
|
| 255 | + 'select2' => true, |
|
| 256 | + ), |
|
| 257 | + true |
|
| 258 | + ); |
|
| 259 | 259 | |
| 260 | 260 | } |
| 261 | 261 | |
@@ -381,18 +381,18 @@ discard block |
||
| 381 | 381 | } |
| 382 | 382 | |
| 383 | 383 | /** |
| 384 | - * Save meta box data. |
|
| 385 | - * |
|
| 386 | - * @param int $post_id |
|
| 387 | - */ |
|
| 388 | - public static function save( $post_id ) { |
|
| 384 | + * Save meta box data. |
|
| 385 | + * |
|
| 386 | + * @param int $post_id |
|
| 387 | + */ |
|
| 388 | + public static function save( $post_id ) { |
|
| 389 | 389 | |
| 390 | 390 | // Prepare the invoice. |
| 391 | 391 | $invoice = new WPInv_Invoice( $post_id ); |
| 392 | 392 | |
| 393 | 393 | // Load new data. |
| 394 | 394 | $invoice->set_props( |
| 395 | - array( |
|
| 395 | + array( |
|
| 396 | 396 | 'template' => isset( $_POST['wpinv_template'] ) ? wpinv_clean( $_POST['wpinv_template'] ) : null, |
| 397 | 397 | 'email_cc' => isset( $_POST['wpinv_cc'] ) ? wpinv_clean( $_POST['wpinv_cc'] ) : null, |
| 398 | 398 | 'disable_taxes' => ! empty( $_POST['disable_taxes'] ), |
@@ -415,7 +415,7 @@ discard block |
||
| 415 | 415 | 'due_date' => isset( $_POST['wpinv_due_date'] ) ? wpinv_clean( $_POST['wpinv_due_date'] ) : null, |
| 416 | 416 | 'number' => isset( $_POST['wpinv_number'] ) ? wpinv_clean( $_POST['wpinv_number'] ) : null, |
| 417 | 417 | 'status' => isset( $_POST['wpinv_status'] ) ? wpinv_clean( $_POST['wpinv_status'] ) : null, |
| 418 | - ) |
|
| 418 | + ) |
|
| 419 | 419 | ); |
| 420 | 420 | |
| 421 | 421 | // Discount code. |
@@ -471,6 +471,6 @@ discard block |
||
| 471 | 471 | } |
| 472 | 472 | |
| 473 | 473 | // Fires after an invoice is saved. |
| 474 | - do_action( 'wpinv_invoice_metabox_saved', $invoice ); |
|
| 475 | - } |
|
| 474 | + do_action( 'wpinv_invoice_metabox_saved', $invoice ); |
|
| 475 | + } |
|
| 476 | 476 | } |
@@ -13,9 +13,9 @@ discard block |
||
| 13 | 13 | |
| 14 | 14 | |
| 15 | 15 | function wpinv_get_default_country() { |
| 16 | - $country = wpinv_get_option( 'default_country', 'UK' ); |
|
| 16 | + $country = wpinv_get_option( 'default_country', 'UK' ); |
|
| 17 | 17 | |
| 18 | - return apply_filters( 'wpinv_default_country', $country ); |
|
| 18 | + return apply_filters( 'wpinv_default_country', $country ); |
|
| 19 | 19 | } |
| 20 | 20 | |
| 21 | 21 | /** |
@@ -36,7 +36,7 @@ discard block |
||
| 36 | 36 | */ |
| 37 | 37 | function wpinv_sanitize_country( $country ) { |
| 38 | 38 | |
| 39 | - // Enure the country is specified |
|
| 39 | + // Enure the country is specified |
|
| 40 | 40 | if ( empty( $country ) ) { |
| 41 | 41 | $country = wpinv_get_default_country(); |
| 42 | 42 | } |
@@ -66,9 +66,9 @@ discard block |
||
| 66 | 66 | } |
| 67 | 67 | |
| 68 | 68 | function wpinv_get_default_state() { |
| 69 | - $state = wpinv_get_option( 'default_state', '' ); |
|
| 69 | + $state = wpinv_get_option( 'default_state', '' ); |
|
| 70 | 70 | |
| 71 | - return apply_filters( 'wpinv_default_state', $state ); |
|
| 71 | + return apply_filters( 'wpinv_default_state', $state ); |
|
| 72 | 72 | } |
| 73 | 73 | |
| 74 | 74 | function wpinv_state_name( $state_code = '', $country_code = '' ) { |
@@ -303,11 +303,11 @@ discard block |
||
| 303 | 303 | |
| 304 | 304 | $country = wpinv_sanitize_country( $country ); |
| 305 | 305 | |
| 306 | - foreach ( wpinv_get_continents( 'countries' ) as $continent_code => $countries ) { |
|
| 307 | - if ( false !== array_search( $country, $countries, true ) ) { |
|
| 308 | - return $continent_code; |
|
| 309 | - } |
|
| 310 | - } |
|
| 306 | + foreach ( wpinv_get_continents( 'countries' ) as $continent_code => $countries ) { |
|
| 307 | + if ( false !== array_search( $country, $countries, true ) ) { |
|
| 308 | + return $continent_code; |
|
| 309 | + } |
|
| 310 | + } |
|
| 311 | 311 | |
| 312 | 312 | return ''; |
| 313 | 313 | |
@@ -599,31 +599,31 @@ discard block |
||
| 599 | 599 | } |
| 600 | 600 | |
| 601 | 601 | function wpinv_get_states_field() { |
| 602 | - if ( empty( $_POST['country'] ) ) { |
|
| 603 | - $_POST['country'] = wpinv_get_default_country(); |
|
| 604 | - } |
|
| 605 | - $states = wpinv_get_country_states( sanitize_text_field( $_POST['country'] ) ); |
|
| 602 | + if ( empty( $_POST['country'] ) ) { |
|
| 603 | + $_POST['country'] = wpinv_get_default_country(); |
|
| 604 | + } |
|
| 605 | + $states = wpinv_get_country_states( sanitize_text_field( $_POST['country'] ) ); |
|
| 606 | 606 | |
| 607 | - if ( ! empty( $states ) ) { |
|
| 608 | - $sanitized_field_name = sanitize_text_field( $_POST['field_name'] ); |
|
| 607 | + if ( ! empty( $states ) ) { |
|
| 608 | + $sanitized_field_name = sanitize_text_field( $_POST['field_name'] ); |
|
| 609 | 609 | |
| 610 | 610 | $class = isset( $_POST['class'] ) ? esc_attr( sanitize_text_field( $_POST['class'] ) ) : ''; |
| 611 | 611 | $class .= " $sanitized_field_name getpaid_js_field-state custom-select wpinv-select wpi_select2"; |
| 612 | 612 | |
| 613 | 613 | $args = array( |
| 614 | - 'name' => $sanitized_field_name, |
|
| 615 | - 'id' => $sanitized_field_name, |
|
| 616 | - 'class' => implode( ' ', array_unique( explode( ' ', $class ) ) ), |
|
| 617 | - 'options' => array_merge( array( '' => '' ), $states ), |
|
| 618 | - 'show_option_all' => false, |
|
| 619 | - 'show_option_none' => false, |
|
| 620 | - ); |
|
| 621 | - |
|
| 622 | - wpinv_html_select( $args ); |
|
| 623 | - |
|
| 624 | - } else { |
|
| 625 | - echo 'nostates'; |
|
| 626 | - } |
|
| 614 | + 'name' => $sanitized_field_name, |
|
| 615 | + 'id' => $sanitized_field_name, |
|
| 616 | + 'class' => implode( ' ', array_unique( explode( ' ', $class ) ) ), |
|
| 617 | + 'options' => array_merge( array( '' => '' ), $states ), |
|
| 618 | + 'show_option_all' => false, |
|
| 619 | + 'show_option_none' => false, |
|
| 620 | + ); |
|
| 621 | + |
|
| 622 | + wpinv_html_select( $args ); |
|
| 623 | + |
|
| 624 | + } else { |
|
| 625 | + echo 'nostates'; |
|
| 626 | + } |
|
| 627 | 627 | |
| 628 | 628 | } |
| 629 | 629 | |
@@ -642,47 +642,47 @@ discard block |
||
| 642 | 642 | */ |
| 643 | 643 | function wpinv_get_address_formats() { |
| 644 | 644 | |
| 645 | - return apply_filters( |
|
| 645 | + return apply_filters( |
|
| 646 | 646 | 'wpinv_localisation_address_formats', |
| 647 | - array( |
|
| 648 | - 'default' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}}\n{{zip}}\n{{country}}", |
|
| 649 | - 'AU' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}} {{zip}}\n{{country}}", |
|
| 650 | - 'AT' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 651 | - 'BE' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 652 | - 'CA' => "{{company}}\n{{name}}\n{{address}}\n{{city}} {{state_code}} {{zip}}\n{{country}}", |
|
| 653 | - 'CH' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 654 | - 'CL' => "{{company}}\n{{name}}\n{{address}}\n{{state}}\n{{zip}} {{city}}\n{{country}}", |
|
| 655 | - 'CN' => "{{country}} {{zip}}\n{{state}}, {{city}}, {{address}}\n{{company}}\n{{name}}", |
|
| 656 | - 'CZ' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 657 | - 'DE' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 658 | - 'EE' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 659 | - 'FI' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 660 | - 'DK' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 661 | - 'FR' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city_upper}}\n{{country}}", |
|
| 662 | - 'HK' => "{{company}}\n{{first_name}} {{last_name_upper}}\n{{address}}\n{{city_upper}}\n{{state_upper}}\n{{country}}", |
|
| 663 | - 'HU' => "{{name}}\n{{company}}\n{{city}}\n{{address}}\n{{zip}}\n{{country}}", |
|
| 664 | - 'IN' => "{{company}}\n{{name}}\n{{address}}\n{{city}} {{zip}}\n{{state}}, {{country}}", |
|
| 665 | - 'IS' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 666 | - 'IT' => "{{company}}\n{{name}}\n{{address}}\n{{zip}}\n{{city}}\n{{state_upper}}\n{{country}}", |
|
| 667 | - 'JP' => "{{zip}}\n{{state}} {{city}} {{address}}\n{{company}}\n{{last_name}} {{first_name}}\n{{country}}", |
|
| 668 | - 'TW' => "{{company}}\n{{last_name}} {{first_name}}\n{{address}}\n{{state}}, {{city}} {{zip}}\n{{country}}", |
|
| 669 | - 'LI' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 670 | - 'NL' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 671 | - 'NZ' => "{{name}}\n{{company}}\n{{address}}\n{{city}} {{zip}}\n{{country}}", |
|
| 672 | - 'NO' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 673 | - 'PL' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 674 | - 'PT' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 675 | - 'SK' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 676 | - 'RS' => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 677 | - 'SI' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 678 | - 'ES' => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}}\n{{state}}\n{{country}}", |
|
| 679 | - 'SE' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 680 | - 'TR' => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}} {{state}}\n{{country}}", |
|
| 681 | - 'UG' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}}, {{country}}", |
|
| 682 | - 'US' => "{{name}}\n{{company}}\n{{address}}\n{{city}}, {{state_code}} {{zip}}\n{{country}}", |
|
| 683 | - 'VN' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{country}}", |
|
| 684 | - ) |
|
| 685 | - ); |
|
| 647 | + array( |
|
| 648 | + 'default' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}}\n{{zip}}\n{{country}}", |
|
| 649 | + 'AU' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}} {{zip}}\n{{country}}", |
|
| 650 | + 'AT' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 651 | + 'BE' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 652 | + 'CA' => "{{company}}\n{{name}}\n{{address}}\n{{city}} {{state_code}} {{zip}}\n{{country}}", |
|
| 653 | + 'CH' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 654 | + 'CL' => "{{company}}\n{{name}}\n{{address}}\n{{state}}\n{{zip}} {{city}}\n{{country}}", |
|
| 655 | + 'CN' => "{{country}} {{zip}}\n{{state}}, {{city}}, {{address}}\n{{company}}\n{{name}}", |
|
| 656 | + 'CZ' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 657 | + 'DE' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 658 | + 'EE' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 659 | + 'FI' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 660 | + 'DK' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 661 | + 'FR' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city_upper}}\n{{country}}", |
|
| 662 | + 'HK' => "{{company}}\n{{first_name}} {{last_name_upper}}\n{{address}}\n{{city_upper}}\n{{state_upper}}\n{{country}}", |
|
| 663 | + 'HU' => "{{name}}\n{{company}}\n{{city}}\n{{address}}\n{{zip}}\n{{country}}", |
|
| 664 | + 'IN' => "{{company}}\n{{name}}\n{{address}}\n{{city}} {{zip}}\n{{state}}, {{country}}", |
|
| 665 | + 'IS' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 666 | + 'IT' => "{{company}}\n{{name}}\n{{address}}\n{{zip}}\n{{city}}\n{{state_upper}}\n{{country}}", |
|
| 667 | + 'JP' => "{{zip}}\n{{state}} {{city}} {{address}}\n{{company}}\n{{last_name}} {{first_name}}\n{{country}}", |
|
| 668 | + 'TW' => "{{company}}\n{{last_name}} {{first_name}}\n{{address}}\n{{state}}, {{city}} {{zip}}\n{{country}}", |
|
| 669 | + 'LI' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 670 | + 'NL' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 671 | + 'NZ' => "{{name}}\n{{company}}\n{{address}}\n{{city}} {{zip}}\n{{country}}", |
|
| 672 | + 'NO' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 673 | + 'PL' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 674 | + 'PT' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 675 | + 'SK' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 676 | + 'RS' => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 677 | + 'SI' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 678 | + 'ES' => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}}\n{{state}}\n{{country}}", |
|
| 679 | + 'SE' => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}", |
|
| 680 | + 'TR' => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}} {{state}}\n{{country}}", |
|
| 681 | + 'UG' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}}, {{country}}", |
|
| 682 | + 'US' => "{{name}}\n{{company}}\n{{address}}\n{{city}}, {{state_code}} {{zip}}\n{{country}}", |
|
| 683 | + 'VN' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{country}}", |
|
| 684 | + ) |
|
| 685 | + ); |
|
| 686 | 686 | } |
| 687 | 687 | |
| 688 | 688 | /** |
@@ -699,21 +699,21 @@ discard block |
||
| 699 | 699 | } |
| 700 | 700 | |
| 701 | 701 | // Get all formats. |
| 702 | - $formats = wpinv_get_address_formats(); |
|
| 702 | + $formats = wpinv_get_address_formats(); |
|
| 703 | 703 | |
| 704 | - // Get format for the specified country. |
|
| 705 | - $format = ( $country && isset( $formats[ $country ] ) ) ? $formats[ $country ] : $formats['default']; |
|
| 704 | + // Get format for the specified country. |
|
| 705 | + $format = ( $country && isset( $formats[ $country ] ) ) ? $formats[ $country ] : $formats['default']; |
|
| 706 | 706 | |
| 707 | 707 | /** |
| 708 | - * Filters the address format to use on Invoices. |
|
| 708 | + * Filters the address format to use on Invoices. |
|
| 709 | 709 | * |
| 710 | 710 | * New lines will be replaced by a `br` element. Double new lines will be replaced by a paragraph. HTML tags are allowed. |
| 711 | - * |
|
| 712 | - * @since 1.0.13 |
|
| 713 | - * |
|
| 714 | - * @param string $format The address format to use. |
|
| 711 | + * |
|
| 712 | + * @since 1.0.13 |
|
| 713 | + * |
|
| 714 | + * @param string $format The address format to use. |
|
| 715 | 715 | * @param string $country The country who's address format is being retrieved. |
| 716 | - */ |
|
| 716 | + */ |
|
| 717 | 717 | return apply_filters( 'wpinv_get_full_address_format', $format, $country ); |
| 718 | 718 | } |
| 719 | 719 | |
@@ -734,8 +734,8 @@ discard block |
||
| 734 | 734 | 'country' => '', |
| 735 | 735 | 'zip' => '', |
| 736 | 736 | 'first_name' => '', |
| 737 | - 'last_name' => '', |
|
| 738 | - 'company' => '', |
|
| 737 | + 'last_name' => '', |
|
| 738 | + 'company' => '', |
|
| 739 | 739 | ); |
| 740 | 740 | |
| 741 | 741 | $args = map_deep( wp_parse_args( $billing_details, $default_args ), 'trim' ); |
@@ -756,14 +756,14 @@ discard block |
||
| 756 | 756 | $args['country_code'] = $country; |
| 757 | 757 | |
| 758 | 758 | /** |
| 759 | - * Filters the address format replacements to use on Invoices. |
|
| 759 | + * Filters the address format replacements to use on Invoices. |
|
| 760 | + * |
|
| 761 | + * |
|
| 762 | + * @since 1.0.13 |
|
| 760 | 763 | * |
| 761 | - * |
|
| 762 | - * @since 1.0.13 |
|
| 763 | - * |
|
| 764 | - * @param array $replacements The address replacements to use. |
|
| 764 | + * @param array $replacements The address replacements to use. |
|
| 765 | 765 | * @param array $billing_details The billing details to use. |
| 766 | - */ |
|
| 766 | + */ |
|
| 767 | 767 | $replacements = apply_filters( 'wpinv_get_invoice_address_replacements', $args, $billing_details ); |
| 768 | 768 | |
| 769 | 769 | $return = array(); |
@@ -786,5 +786,5 @@ discard block |
||
| 786 | 786 | * @return string |
| 787 | 787 | */ |
| 788 | 788 | function wpinv_trim_formatted_address_line( $line ) { |
| 789 | - return trim( $line, ', ' ); |
|
| 789 | + return trim( $line, ', ' ); |
|
| 790 | 790 | } |
@@ -140,7 +140,7 @@ discard block |
||
| 140 | 140 | * @param string $default_path The root path to the default template. Defaults to invoicing/templates |
| 141 | 141 | */ |
| 142 | 142 | function wpinv_get_template_html( $template_name, $args = array(), $template_path = '', $default_path = '' ) { |
| 143 | - return getpaid_template()->get_template( $template_name, $args, $template_path, $default_path ); |
|
| 143 | + return getpaid_template()->get_template( $template_name, $args, $template_path, $default_path ); |
|
| 144 | 144 | } |
| 145 | 145 | |
| 146 | 146 | /** |
@@ -158,7 +158,7 @@ discard block |
||
| 158 | 158 | * @return string |
| 159 | 159 | */ |
| 160 | 160 | function wpinv_get_theme_template_dir_name() { |
| 161 | - return trailingslashit( apply_filters( 'wpinv_templates_dir', 'invoicing' ) ); |
|
| 161 | + return trailingslashit( apply_filters( 'wpinv_templates_dir', 'invoicing' ) ); |
|
| 162 | 162 | } |
| 163 | 163 | |
| 164 | 164 | /** |
@@ -175,125 +175,125 @@ discard block |
||
| 175 | 175 | } |
| 176 | 176 | |
| 177 | 177 | function wpinv_get_template_part( $slug, $name = null, $load = true ) { |
| 178 | - do_action( 'get_template_part_' . $slug, $slug, $name ); |
|
| 178 | + do_action( 'get_template_part_' . $slug, $slug, $name ); |
|
| 179 | 179 | |
| 180 | - // Setup possible parts |
|
| 181 | - $templates = array(); |
|
| 182 | - if ( isset( $name ) ) { |
|
| 183 | - $templates[] = $slug . '-' . $name . '.php'; |
|
| 180 | + // Setup possible parts |
|
| 181 | + $templates = array(); |
|
| 182 | + if ( isset( $name ) ) { |
|
| 183 | + $templates[] = $slug . '-' . $name . '.php'; |
|
| 184 | 184 | } |
| 185 | - $templates[] = $slug . '.php'; |
|
| 185 | + $templates[] = $slug . '.php'; |
|
| 186 | 186 | |
| 187 | - // Allow template parts to be filtered |
|
| 188 | - $templates = apply_filters( 'wpinv_get_template_part', $templates, $slug, $name ); |
|
| 187 | + // Allow template parts to be filtered |
|
| 188 | + $templates = apply_filters( 'wpinv_get_template_part', $templates, $slug, $name ); |
|
| 189 | 189 | |
| 190 | - // Return the part that is found |
|
| 191 | - return wpinv_locate_tmpl( $templates, $load, false ); |
|
| 190 | + // Return the part that is found |
|
| 191 | + return wpinv_locate_tmpl( $templates, $load, false ); |
|
| 192 | 192 | } |
| 193 | 193 | |
| 194 | 194 | function wpinv_locate_tmpl( $template_names, $load = false, $require_once = true ) { |
| 195 | - // No file found yet |
|
| 196 | - $located = false; |
|
| 195 | + // No file found yet |
|
| 196 | + $located = false; |
|
| 197 | 197 | |
| 198 | - // Try to find a template file |
|
| 199 | - foreach ( (array)$template_names as $template_name ) { |
|
| 198 | + // Try to find a template file |
|
| 199 | + foreach ( (array)$template_names as $template_name ) { |
|
| 200 | 200 | |
| 201 | - // Continue if template is empty |
|
| 202 | - if ( empty( $template_name ) ) { |
|
| 203 | - continue; |
|
| 201 | + // Continue if template is empty |
|
| 202 | + if ( empty( $template_name ) ) { |
|
| 203 | + continue; |
|
| 204 | 204 | } |
| 205 | 205 | |
| 206 | - // Trim off any slashes from the template name |
|
| 207 | - $template_name = ltrim( $template_name, '/' ); |
|
| 206 | + // Trim off any slashes from the template name |
|
| 207 | + $template_name = ltrim( $template_name, '/' ); |
|
| 208 | 208 | |
| 209 | - // try locating this template file by looping through the template paths |
|
| 210 | - foreach ( wpinv_get_theme_template_paths() as $template_path ) { |
|
| 209 | + // try locating this template file by looping through the template paths |
|
| 210 | + foreach ( wpinv_get_theme_template_paths() as $template_path ) { |
|
| 211 | 211 | |
| 212 | - if ( file_exists( $template_path . $template_name ) ) { |
|
| 213 | - $located = $template_path . $template_name; |
|
| 214 | - break; |
|
| 215 | - } |
|
| 216 | - } |
|
| 212 | + if ( file_exists( $template_path . $template_name ) ) { |
|
| 213 | + $located = $template_path . $template_name; |
|
| 214 | + break; |
|
| 215 | + } |
|
| 216 | + } |
|
| 217 | 217 | |
| 218 | - if ( ! empty( $located ) ) { |
|
| 219 | - break; |
|
| 220 | - } |
|
| 221 | - } |
|
| 218 | + if ( ! empty( $located ) ) { |
|
| 219 | + break; |
|
| 220 | + } |
|
| 221 | + } |
|
| 222 | 222 | |
| 223 | - if ( ( true == $load ) && ! empty( $located ) ) { |
|
| 224 | - load_template( $located, $require_once ); |
|
| 223 | + if ( ( true == $load ) && ! empty( $located ) ) { |
|
| 224 | + load_template( $located, $require_once ); |
|
| 225 | 225 | } |
| 226 | 226 | |
| 227 | - return $located; |
|
| 227 | + return $located; |
|
| 228 | 228 | } |
| 229 | 229 | |
| 230 | 230 | function wpinv_get_theme_template_paths() { |
| 231 | - $template_dir = wpinv_get_theme_template_dir_name(); |
|
| 231 | + $template_dir = wpinv_get_theme_template_dir_name(); |
|
| 232 | 232 | |
| 233 | - $file_paths = array( |
|
| 234 | - 1 => trailingslashit( get_stylesheet_directory() ) . $template_dir, |
|
| 235 | - 10 => trailingslashit( get_template_directory() ) . $template_dir, |
|
| 236 | - 100 => wpinv_get_templates_dir(), |
|
| 237 | - ); |
|
| 233 | + $file_paths = array( |
|
| 234 | + 1 => trailingslashit( get_stylesheet_directory() ) . $template_dir, |
|
| 235 | + 10 => trailingslashit( get_template_directory() ) . $template_dir, |
|
| 236 | + 100 => wpinv_get_templates_dir(), |
|
| 237 | + ); |
|
| 238 | 238 | |
| 239 | - $file_paths = apply_filters( 'wpinv_template_paths', $file_paths ); |
|
| 239 | + $file_paths = apply_filters( 'wpinv_template_paths', $file_paths ); |
|
| 240 | 240 | |
| 241 | - // sort the file paths based on priority |
|
| 242 | - ksort( $file_paths, SORT_NUMERIC ); |
|
| 241 | + // sort the file paths based on priority |
|
| 242 | + ksort( $file_paths, SORT_NUMERIC ); |
|
| 243 | 243 | |
| 244 | - return array_map( 'trailingslashit', $file_paths ); |
|
| 244 | + return array_map( 'trailingslashit', $file_paths ); |
|
| 245 | 245 | } |
| 246 | 246 | |
| 247 | 247 | function wpinv_checkout_meta_tags() { |
| 248 | 248 | |
| 249 | - $pages = array(); |
|
| 250 | - $pages[] = wpinv_get_option( 'success_page' ); |
|
| 251 | - $pages[] = wpinv_get_option( 'failure_page' ); |
|
| 252 | - $pages[] = wpinv_get_option( 'invoice_history_page' ); |
|
| 253 | - $pages[] = wpinv_get_option( 'invoice_subscription_page' ); |
|
| 249 | + $pages = array(); |
|
| 250 | + $pages[] = wpinv_get_option( 'success_page' ); |
|
| 251 | + $pages[] = wpinv_get_option( 'failure_page' ); |
|
| 252 | + $pages[] = wpinv_get_option( 'invoice_history_page' ); |
|
| 253 | + $pages[] = wpinv_get_option( 'invoice_subscription_page' ); |
|
| 254 | 254 | |
| 255 | - if ( ! wpinv_is_checkout() && ! is_page( $pages ) ) { |
|
| 256 | - return; |
|
| 257 | - } |
|
| 255 | + if ( ! wpinv_is_checkout() && ! is_page( $pages ) ) { |
|
| 256 | + return; |
|
| 257 | + } |
|
| 258 | 258 | |
| 259 | - echo '<meta name="robots" content="noindex,nofollow" />' . "\n"; |
|
| 259 | + echo '<meta name="robots" content="noindex,nofollow" />' . "\n"; |
|
| 260 | 260 | } |
| 261 | 261 | add_action( 'wp_head', 'wpinv_checkout_meta_tags' ); |
| 262 | 262 | |
| 263 | 263 | function wpinv_add_body_classes( $class ) { |
| 264 | - $classes = (array)$class; |
|
| 264 | + $classes = (array)$class; |
|
| 265 | 265 | |
| 266 | - if ( wpinv_is_checkout() ) { |
|
| 267 | - $classes[] = 'wpinv-checkout'; |
|
| 268 | - $classes[] = 'wpinv-page'; |
|
| 269 | - } |
|
| 266 | + if ( wpinv_is_checkout() ) { |
|
| 267 | + $classes[] = 'wpinv-checkout'; |
|
| 268 | + $classes[] = 'wpinv-page'; |
|
| 269 | + } |
|
| 270 | 270 | |
| 271 | - if ( wpinv_is_success_page() ) { |
|
| 272 | - $classes[] = 'wpinv-success'; |
|
| 273 | - $classes[] = 'wpinv-page'; |
|
| 274 | - } |
|
| 271 | + if ( wpinv_is_success_page() ) { |
|
| 272 | + $classes[] = 'wpinv-success'; |
|
| 273 | + $classes[] = 'wpinv-page'; |
|
| 274 | + } |
|
| 275 | 275 | |
| 276 | - if ( wpinv_is_failed_transaction_page() ) { |
|
| 277 | - $classes[] = 'wpinv-failed-transaction'; |
|
| 278 | - $classes[] = 'wpinv-page'; |
|
| 279 | - } |
|
| 276 | + if ( wpinv_is_failed_transaction_page() ) { |
|
| 277 | + $classes[] = 'wpinv-failed-transaction'; |
|
| 278 | + $classes[] = 'wpinv-page'; |
|
| 279 | + } |
|
| 280 | 280 | |
| 281 | - if ( wpinv_is_invoice_history_page() ) { |
|
| 282 | - $classes[] = 'wpinv-history'; |
|
| 283 | - $classes[] = 'wpinv-page'; |
|
| 284 | - } |
|
| 281 | + if ( wpinv_is_invoice_history_page() ) { |
|
| 282 | + $classes[] = 'wpinv-history'; |
|
| 283 | + $classes[] = 'wpinv-page'; |
|
| 284 | + } |
|
| 285 | 285 | |
| 286 | - if ( wpinv_is_subscriptions_history_page() ) { |
|
| 287 | - $classes[] = 'wpinv-subscription'; |
|
| 288 | - $classes[] = 'wpinv-page'; |
|
| 289 | - } |
|
| 286 | + if ( wpinv_is_subscriptions_history_page() ) { |
|
| 287 | + $classes[] = 'wpinv-subscription'; |
|
| 288 | + $classes[] = 'wpinv-page'; |
|
| 289 | + } |
|
| 290 | 290 | |
| 291 | - if ( wpinv_is_test_mode() ) { |
|
| 292 | - $classes[] = 'wpinv-test-mode'; |
|
| 293 | - $classes[] = 'wpinv-page'; |
|
| 294 | - } |
|
| 291 | + if ( wpinv_is_test_mode() ) { |
|
| 292 | + $classes[] = 'wpinv-test-mode'; |
|
| 293 | + $classes[] = 'wpinv-page'; |
|
| 294 | + } |
|
| 295 | 295 | |
| 296 | - return array_unique( $classes ); |
|
| 296 | + return array_unique( $classes ); |
|
| 297 | 297 | } |
| 298 | 298 | add_filter( 'body_class', 'wpinv_add_body_classes' ); |
| 299 | 299 | |
@@ -458,16 +458,16 @@ discard block |
||
| 458 | 458 | |
| 459 | 459 | wpinv_html_select( |
| 460 | 460 | array( |
| 461 | - 'name' => $args['name'], |
|
| 462 | - 'selected' => $args['selected'], |
|
| 463 | - 'id' => $args['id'], |
|
| 464 | - 'class' => $args['class'], |
|
| 465 | - 'options' => $options, |
|
| 466 | - 'multiple' => $args['multiple'], |
|
| 467 | - 'placeholder' => $args['placeholder'], |
|
| 468 | - 'show_option_all' => $args['show_option_all'], |
|
| 469 | - 'show_option_none' => $args['show_option_none'], |
|
| 470 | - 'data' => $args['data'], |
|
| 461 | + 'name' => $args['name'], |
|
| 462 | + 'selected' => $args['selected'], |
|
| 463 | + 'id' => $args['id'], |
|
| 464 | + 'class' => $args['class'], |
|
| 465 | + 'options' => $options, |
|
| 466 | + 'multiple' => $args['multiple'], |
|
| 467 | + 'placeholder' => $args['placeholder'], |
|
| 468 | + 'show_option_all' => $args['show_option_all'], |
|
| 469 | + 'show_option_none' => $args['show_option_none'], |
|
| 470 | + 'data' => $args['data'], |
|
| 471 | 471 | ) |
| 472 | 472 | ); |
| 473 | 473 | |
@@ -767,21 +767,21 @@ discard block |
||
| 767 | 767 | |
| 768 | 768 | $formatted_address = str_ireplace( array_keys( $replacements ), $replacements, $format ); |
| 769 | 769 | |
| 770 | - // Remove unavailable tags. |
|
| 770 | + // Remove unavailable tags. |
|
| 771 | 771 | $formatted_address = preg_replace( '/\{\{\w+\}\}/', '', $formatted_address ); |
| 772 | 772 | |
| 773 | 773 | // Clean up white space. |
| 774 | - $formatted_address = preg_replace( '/ +/', ' ', trim( $formatted_address ) ); |
|
| 774 | + $formatted_address = preg_replace( '/ +/', ' ', trim( $formatted_address ) ); |
|
| 775 | 775 | $formatted_address = preg_replace( '/\n\n+/', "\n", $formatted_address ); |
| 776 | 776 | |
| 777 | 777 | // Break newlines apart and remove empty lines/trim commas and white space. |
| 778 | - $formatted_address = array_filter( array_map( 'wpinv_trim_formatted_address_line', explode( "\n", $formatted_address ) ) ); |
|
| 778 | + $formatted_address = array_filter( array_map( 'wpinv_trim_formatted_address_line', explode( "\n", $formatted_address ) ) ); |
|
| 779 | 779 | |
| 780 | 780 | // Add html breaks. |
| 781 | - $formatted_address = implode( $separator, $formatted_address ); |
|
| 781 | + $formatted_address = implode( $separator, $formatted_address ); |
|
| 782 | 782 | |
| 783 | - // We're done! |
|
| 784 | - return $formatted_address; |
|
| 783 | + // We're done! |
|
| 784 | + return $formatted_address; |
|
| 785 | 785 | |
| 786 | 786 | } |
| 787 | 787 | |
@@ -827,7 +827,7 @@ discard block |
||
| 827 | 827 | function getpaid_display_invoice_subscriptions( $invoice ) { |
| 828 | 828 | |
| 829 | 829 | // Subscriptions. |
| 830 | - $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 830 | + $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 831 | 831 | |
| 832 | 832 | if ( empty( $subscriptions ) || ! $invoice->is_recurring() ) { |
| 833 | 833 | return; |
@@ -1039,7 +1039,7 @@ discard block |
||
| 1039 | 1039 | } |
| 1040 | 1040 | |
| 1041 | 1041 | function wpinv_empty_cart_message() { |
| 1042 | - return apply_filters( 'wpinv_empty_cart_message', '<span class="wpinv_empty_cart">' . __( 'Your cart is empty.', 'invoicing' ) . '</span>' ); |
|
| 1042 | + return apply_filters( 'wpinv_empty_cart_message', '<span class="wpinv_empty_cart">' . __( 'Your cart is empty.', 'invoicing' ) . '</span>' ); |
|
| 1043 | 1043 | } |
| 1044 | 1044 | |
| 1045 | 1045 | /** |
@@ -1237,9 +1237,9 @@ discard block |
||
| 1237 | 1237 | |
| 1238 | 1238 | if ( 0 == count( $form->get_items() ) ) { |
| 1239 | 1239 | aui()->alert( |
| 1240 | - array( |
|
| 1241 | - 'type' => 'warning', |
|
| 1242 | - 'content' => __( 'No published items found', 'invoicing' ), |
|
| 1240 | + array( |
|
| 1241 | + 'type' => 'warning', |
|
| 1242 | + 'content' => __( 'No published items found', 'invoicing' ), |
|
| 1243 | 1243 | ), |
| 1244 | 1244 | true |
| 1245 | 1245 | ); |
@@ -1262,10 +1262,10 @@ discard block |
||
| 1262 | 1262 | $invoice = wpinv_get_invoice( $invoice_id ); |
| 1263 | 1263 | |
| 1264 | 1264 | if ( empty( $invoice ) ) { |
| 1265 | - aui()->alert( |
|
| 1266 | - array( |
|
| 1267 | - 'type' => 'warning', |
|
| 1268 | - 'content' => __( 'Invoice not found', 'invoicing' ), |
|
| 1265 | + aui()->alert( |
|
| 1266 | + array( |
|
| 1267 | + 'type' => 'warning', |
|
| 1268 | + 'content' => __( 'Invoice not found', 'invoicing' ), |
|
| 1269 | 1269 | ), |
| 1270 | 1270 | true |
| 1271 | 1271 | ); |
@@ -1273,10 +1273,10 @@ discard block |
||
| 1273 | 1273 | } |
| 1274 | 1274 | |
| 1275 | 1275 | if ( $invoice->is_paid() ) { |
| 1276 | - aui()->alert( |
|
| 1277 | - array( |
|
| 1278 | - 'type' => 'warning', |
|
| 1279 | - 'content' => __( 'Invoice has already been paid', 'invoicing' ), |
|
| 1276 | + aui()->alert( |
|
| 1277 | + array( |
|
| 1278 | + 'type' => 'warning', |
|
| 1279 | + 'content' => __( 'Invoice has already been paid', 'invoicing' ), |
|
| 1280 | 1280 | ), |
| 1281 | 1281 | true |
| 1282 | 1282 | ); |
@@ -1340,7 +1340,7 @@ discard block |
||
| 1340 | 1340 | return "<button class='btn btn-primary getpaid-payment-button' type='button' data-form='$form'>$label</button>"; |
| 1341 | 1341 | } |
| 1342 | 1342 | |
| 1343 | - if ( ! empty( $items ) ) { |
|
| 1343 | + if ( ! empty( $items ) ) { |
|
| 1344 | 1344 | $items = esc_attr( $items ); |
| 1345 | 1345 | return "<button class='btn btn-primary getpaid-payment-button' type='button' data-item='$items'>$label</button>"; |
| 1346 | 1346 | } |
@@ -1526,21 +1526,21 @@ discard block |
||
| 1526 | 1526 | |
| 1527 | 1527 | return aui()->select( |
| 1528 | 1528 | array( |
| 1529 | - 'options' => $states, |
|
| 1530 | - 'name' => esc_attr( $field_name ), |
|
| 1531 | - 'id' => sanitize_html_class( $field_name ) . $uniqid, |
|
| 1532 | - 'value' => sanitize_text_field( $state ), |
|
| 1533 | - 'placeholder' => $placeholder, |
|
| 1534 | - 'required' => $required, |
|
| 1535 | - 'label' => wp_kses_post( $label ), |
|
| 1536 | - 'label_type' => 'vertical', |
|
| 1537 | - 'help_text' => $help_text, |
|
| 1538 | - 'class' => 'getpaid-address-field wpinv_state', |
|
| 1539 | - 'wrap_class' => "$wrapper_class getpaid-address-field-wrapper__state", |
|
| 1540 | - 'label_class' => 'getpaid-address-field-label getpaid-address-field-label__state', |
|
| 1541 | - 'extra_attributes' => array( |
|
| 1542 | - 'autocomplete' => 'address-level1', |
|
| 1543 | - ), |
|
| 1529 | + 'options' => $states, |
|
| 1530 | + 'name' => esc_attr( $field_name ), |
|
| 1531 | + 'id' => sanitize_html_class( $field_name ) . $uniqid, |
|
| 1532 | + 'value' => sanitize_text_field( $state ), |
|
| 1533 | + 'placeholder' => $placeholder, |
|
| 1534 | + 'required' => $required, |
|
| 1535 | + 'label' => wp_kses_post( $label ), |
|
| 1536 | + 'label_type' => 'vertical', |
|
| 1537 | + 'help_text' => $help_text, |
|
| 1538 | + 'class' => 'getpaid-address-field wpinv_state', |
|
| 1539 | + 'wrap_class' => "$wrapper_class getpaid-address-field-wrapper__state", |
|
| 1540 | + 'label_class' => 'getpaid-address-field-label getpaid-address-field-label__state', |
|
| 1541 | + 'extra_attributes' => array( |
|
| 1542 | + 'autocomplete' => 'address-level1', |
|
| 1543 | + ), |
|
| 1544 | 1544 | ), |
| 1545 | 1545 | $echo |
| 1546 | 1546 | ); |
@@ -14,7 +14,7 @@ discard block |
||
| 14 | 14 | */ |
| 15 | 15 | function wpinv_subscriptions_page() { |
| 16 | 16 | |
| 17 | - ?> |
|
| 17 | + ?> |
|
| 18 | 18 | |
| 19 | 19 | <div class="wrap"> |
| 20 | 20 | <h1><?php echo esc_html( get_admin_page_title() ); ?></h1> |
@@ -22,28 +22,28 @@ discard block |
||
| 22 | 22 | |
| 23 | 23 | <?php |
| 24 | 24 | |
| 25 | - // Verify user permissions. |
|
| 26 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
| 25 | + // Verify user permissions. |
|
| 26 | + if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
| 27 | 27 | |
| 28 | - aui()->alert( |
|
| 28 | + aui()->alert( |
|
| 29 | 29 | array( |
| 30 | - 'type' => 'danger', |
|
| 31 | - 'content' => __( 'You are not permitted to view this page.', 'invoicing' ), |
|
| 32 | - ), |
|
| 33 | - true |
|
| 30 | + 'type' => 'danger', |
|
| 31 | + 'content' => __( 'You are not permitted to view this page.', 'invoicing' ), |
|
| 32 | + ), |
|
| 33 | + true |
|
| 34 | 34 | ); |
| 35 | 35 | |
| 36 | - } elseif ( ! empty( $_GET['id'] ) && is_numeric( $_GET['id'] ) ) { |
|
| 36 | + } elseif ( ! empty( $_GET['id'] ) && is_numeric( $_GET['id'] ) ) { |
|
| 37 | 37 | |
| 38 | - // Display a single subscription. |
|
| 39 | - wpinv_recurring_subscription_details(); |
|
| 40 | - } else { |
|
| 38 | + // Display a single subscription. |
|
| 39 | + wpinv_recurring_subscription_details(); |
|
| 40 | + } else { |
|
| 41 | 41 | |
| 42 | - // Display a list of available subscriptions. |
|
| 43 | - getpaid_print_subscriptions_list(); |
|
| 44 | - } |
|
| 42 | + // Display a list of available subscriptions. |
|
| 43 | + getpaid_print_subscriptions_list(); |
|
| 44 | + } |
|
| 45 | 45 | |
| 46 | - ?> |
|
| 46 | + ?> |
|
| 47 | 47 | |
| 48 | 48 | </div> |
| 49 | 49 | </div> |
@@ -60,10 +60,10 @@ discard block |
||
| 60 | 60 | */ |
| 61 | 61 | function getpaid_print_subscriptions_list() { |
| 62 | 62 | |
| 63 | - $subscribers_table = new WPInv_Subscriptions_List_Table(); |
|
| 64 | - $subscribers_table->prepare_items(); |
|
| 63 | + $subscribers_table = new WPInv_Subscriptions_List_Table(); |
|
| 64 | + $subscribers_table->prepare_items(); |
|
| 65 | 65 | |
| 66 | - ?> |
|
| 66 | + ?> |
|
| 67 | 67 | <?php $subscribers_table->views(); ?> |
| 68 | 68 | <form id="subscribers-filter" class="bsui" method="get"> |
| 69 | 69 | <input type="hidden" name="page" value="wpinv-subscriptions" /> |
@@ -82,42 +82,42 @@ discard block |
||
| 82 | 82 | */ |
| 83 | 83 | function wpinv_recurring_subscription_details() { |
| 84 | 84 | |
| 85 | - // Fetch the subscription. |
|
| 86 | - $sub = new WPInv_Subscription( (int) $_GET['id'] ); |
|
| 87 | - if ( ! $sub->exists() ) { |
|
| 85 | + // Fetch the subscription. |
|
| 86 | + $sub = new WPInv_Subscription( (int) $_GET['id'] ); |
|
| 87 | + if ( ! $sub->exists() ) { |
|
| 88 | 88 | |
| 89 | - aui()->alert( |
|
| 90 | - array( |
|
| 91 | - 'type' => 'danger', |
|
| 92 | - 'content' => __( 'Subscription not found.', 'invoicing' ), |
|
| 93 | - ), |
|
| 94 | - true |
|
| 95 | - ); |
|
| 89 | + aui()->alert( |
|
| 90 | + array( |
|
| 91 | + 'type' => 'danger', |
|
| 92 | + 'content' => __( 'Subscription not found.', 'invoicing' ), |
|
| 93 | + ), |
|
| 94 | + true |
|
| 95 | + ); |
|
| 96 | 96 | |
| 97 | - return; |
|
| 98 | - } |
|
| 97 | + return; |
|
| 98 | + } |
|
| 99 | 99 | |
| 100 | - // Use metaboxes to display the subscription details. |
|
| 101 | - add_meta_box( 'getpaid_admin_subscription_details_metabox', __( 'Subscription Details', 'invoicing' ), 'getpaid_admin_subscription_details_metabox', get_current_screen(), 'normal', 'high' ); |
|
| 102 | - add_meta_box( 'getpaid_admin_subscription_update_metabox', __( 'Change Status', 'invoicing' ), 'getpaid_admin_subscription_update_metabox', get_current_screen(), 'side' ); |
|
| 100 | + // Use metaboxes to display the subscription details. |
|
| 101 | + add_meta_box( 'getpaid_admin_subscription_details_metabox', __( 'Subscription Details', 'invoicing' ), 'getpaid_admin_subscription_details_metabox', get_current_screen(), 'normal', 'high' ); |
|
| 102 | + add_meta_box( 'getpaid_admin_subscription_update_metabox', __( 'Change Status', 'invoicing' ), 'getpaid_admin_subscription_update_metabox', get_current_screen(), 'side' ); |
|
| 103 | 103 | |
| 104 | - $subscription_id = $sub->get_id(); |
|
| 105 | - $subscription_groups = getpaid_get_invoice_subscription_groups( $sub->get_parent_invoice_id() ); |
|
| 106 | - $subscription_group = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) ); |
|
| 104 | + $subscription_id = $sub->get_id(); |
|
| 105 | + $subscription_groups = getpaid_get_invoice_subscription_groups( $sub->get_parent_invoice_id() ); |
|
| 106 | + $subscription_group = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) ); |
|
| 107 | 107 | |
| 108 | - if ( 1 < count( $subscription_groups ) ) { |
|
| 109 | - add_meta_box( 'getpaid_admin_subscription_related_subscriptions_metabox', __( 'Related Subscriptions', 'invoicing' ), 'getpaid_admin_subscription_related_subscriptions_metabox', get_current_screen(), 'advanced' ); |
|
| 110 | - } |
|
| 108 | + if ( 1 < count( $subscription_groups ) ) { |
|
| 109 | + add_meta_box( 'getpaid_admin_subscription_related_subscriptions_metabox', __( 'Related Subscriptions', 'invoicing' ), 'getpaid_admin_subscription_related_subscriptions_metabox', get_current_screen(), 'advanced' ); |
|
| 110 | + } |
|
| 111 | 111 | |
| 112 | - if ( ! empty( $subscription_group ) ) { |
|
| 113 | - add_meta_box( 'getpaid_admin_subscription_item_details_metabox', __( 'Subscription Items', 'invoicing' ), 'getpaid_admin_subscription_item_details_metabox', get_current_screen(), 'normal', 'low' ); |
|
| 114 | - } |
|
| 112 | + if ( ! empty( $subscription_group ) ) { |
|
| 113 | + add_meta_box( 'getpaid_admin_subscription_item_details_metabox', __( 'Subscription Items', 'invoicing' ), 'getpaid_admin_subscription_item_details_metabox', get_current_screen(), 'normal', 'low' ); |
|
| 114 | + } |
|
| 115 | 115 | |
| 116 | - add_meta_box( 'getpaid_admin_subscription_invoice_details_metabox', __( 'Related Invoices', 'invoicing' ), 'getpaid_admin_subscription_invoice_details_metabox', get_current_screen(), 'advanced' ); |
|
| 116 | + add_meta_box( 'getpaid_admin_subscription_invoice_details_metabox', __( 'Related Invoices', 'invoicing' ), 'getpaid_admin_subscription_invoice_details_metabox', get_current_screen(), 'advanced' ); |
|
| 117 | 117 | |
| 118 | - do_action( 'getpaid_admin_single_subscription_register_metabox', $sub ); |
|
| 118 | + do_action( 'getpaid_admin_single_subscription_register_metabox', $sub ); |
|
| 119 | 119 | |
| 120 | - ?> |
|
| 120 | + ?> |
|
| 121 | 121 | |
| 122 | 122 | <form method="post" action="<?php echo esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $sub->get_id() ) ) ); ?>"> |
| 123 | 123 | |
@@ -157,44 +157,44 @@ discard block |
||
| 157 | 157 | */ |
| 158 | 158 | function getpaid_admin_subscription_details_metabox( $sub ) { |
| 159 | 159 | |
| 160 | - // Subscription items. |
|
| 161 | - $subscription_group = getpaid_get_invoice_subscription_group( $sub->get_parent_invoice_id(), $sub->get_id() ); |
|
| 162 | - $items_count = empty( $subscription_group ) ? 1 : count( $subscription_group['items'] ); |
|
| 163 | - |
|
| 164 | - // Prepare subscription detail columns. |
|
| 165 | - $fields = apply_filters( |
|
| 166 | - 'getpaid_subscription_admin_page_fields', |
|
| 167 | - array( |
|
| 168 | - 'subscription' => __( 'Subscription', 'invoicing' ), |
|
| 169 | - 'customer' => __( 'Customer', 'invoicing' ), |
|
| 170 | - 'amount' => __( 'Amount', 'invoicing' ), |
|
| 171 | - 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 172 | - 'renews_on' => __( 'Next Payment', 'invoicing' ), |
|
| 173 | - 'renewals' => __( 'Payments', 'invoicing' ), |
|
| 174 | - 'item' => _n( 'Item', 'Items', $items_count, 'invoicing' ), |
|
| 175 | - 'gateway' => __( 'Payment Method', 'invoicing' ), |
|
| 176 | - 'profile_id' => __( 'Profile ID', 'invoicing' ), |
|
| 177 | - 'status' => __( 'Status', 'invoicing' ), |
|
| 178 | - ) |
|
| 179 | - ); |
|
| 180 | - |
|
| 181 | - if ( ! $sub->is_active() ) { |
|
| 182 | - |
|
| 183 | - if ( isset( $fields['renews_on'] ) ) { |
|
| 184 | - unset( $fields['renews_on'] ); |
|
| 185 | - } |
|
| 186 | - |
|
| 187 | - if ( isset( $fields['gateway'] ) ) { |
|
| 188 | - unset( $fields['gateway'] ); |
|
| 189 | - } |
|
| 160 | + // Subscription items. |
|
| 161 | + $subscription_group = getpaid_get_invoice_subscription_group( $sub->get_parent_invoice_id(), $sub->get_id() ); |
|
| 162 | + $items_count = empty( $subscription_group ) ? 1 : count( $subscription_group['items'] ); |
|
| 163 | + |
|
| 164 | + // Prepare subscription detail columns. |
|
| 165 | + $fields = apply_filters( |
|
| 166 | + 'getpaid_subscription_admin_page_fields', |
|
| 167 | + array( |
|
| 168 | + 'subscription' => __( 'Subscription', 'invoicing' ), |
|
| 169 | + 'customer' => __( 'Customer', 'invoicing' ), |
|
| 170 | + 'amount' => __( 'Amount', 'invoicing' ), |
|
| 171 | + 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 172 | + 'renews_on' => __( 'Next Payment', 'invoicing' ), |
|
| 173 | + 'renewals' => __( 'Payments', 'invoicing' ), |
|
| 174 | + 'item' => _n( 'Item', 'Items', $items_count, 'invoicing' ), |
|
| 175 | + 'gateway' => __( 'Payment Method', 'invoicing' ), |
|
| 176 | + 'profile_id' => __( 'Profile ID', 'invoicing' ), |
|
| 177 | + 'status' => __( 'Status', 'invoicing' ), |
|
| 178 | + ) |
|
| 179 | + ); |
|
| 180 | + |
|
| 181 | + if ( ! $sub->is_active() ) { |
|
| 182 | + |
|
| 183 | + if ( isset( $fields['renews_on'] ) ) { |
|
| 184 | + unset( $fields['renews_on'] ); |
|
| 185 | + } |
|
| 186 | + |
|
| 187 | + if ( isset( $fields['gateway'] ) ) { |
|
| 188 | + unset( $fields['gateway'] ); |
|
| 189 | + } |
|
| 190 | 190 | } |
| 191 | 191 | |
| 192 | - $profile_id = $sub->get_profile_id(); |
|
| 193 | - if ( empty( $profile_id ) && isset( $fields['profile_id'] ) ) { |
|
| 194 | - unset( $fields['profile_id'] ); |
|
| 195 | - } |
|
| 192 | + $profile_id = $sub->get_profile_id(); |
|
| 193 | + if ( empty( $profile_id ) && isset( $fields['profile_id'] ) ) { |
|
| 194 | + unset( $fields['profile_id'] ); |
|
| 195 | + } |
|
| 196 | 196 | |
| 197 | - ?> |
|
| 197 | + ?> |
|
| 198 | 198 | |
| 199 | 199 | <table class="table table-borderless" style="font-size: 14px;"> |
| 200 | 200 | <tbody> |
@@ -228,20 +228,20 @@ discard block |
||
| 228 | 228 | */ |
| 229 | 229 | function getpaid_admin_subscription_metabox_display_customer( $subscription ) { |
| 230 | 230 | |
| 231 | - $username = __( '(Missing User)', 'invoicing' ); |
|
| 231 | + $username = __( '(Missing User)', 'invoicing' ); |
|
| 232 | 232 | |
| 233 | - $user = get_userdata( $subscription->get_customer_id() ); |
|
| 234 | - if ( $user ) { |
|
| 233 | + $user = get_userdata( $subscription->get_customer_id() ); |
|
| 234 | + if ( $user ) { |
|
| 235 | 235 | |
| 236 | - $username = sprintf( |
|
| 237 | - '<a href="user-edit.php?user_id=%s">%s</a>', |
|
| 238 | - absint( $user->ID ), |
|
| 239 | - ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email ) |
|
| 240 | - ); |
|
| 236 | + $username = sprintf( |
|
| 237 | + '<a href="user-edit.php?user_id=%s">%s</a>', |
|
| 238 | + absint( $user->ID ), |
|
| 239 | + ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email ) |
|
| 240 | + ); |
|
| 241 | 241 | |
| 242 | - } |
|
| 242 | + } |
|
| 243 | 243 | |
| 244 | - echo wp_kses_post( $username ); |
|
| 244 | + echo wp_kses_post( $username ); |
|
| 245 | 245 | } |
| 246 | 246 | add_action( 'getpaid_subscription_admin_display_customer', 'getpaid_admin_subscription_metabox_display_customer' ); |
| 247 | 247 | |
@@ -251,8 +251,8 @@ discard block |
||
| 251 | 251 | * @param WPInv_Subscription $subscription |
| 252 | 252 | */ |
| 253 | 253 | function getpaid_admin_subscription_metabox_display_amount( $subscription ) { |
| 254 | - $amount = getpaid_get_formatted_subscription_amount( $subscription ); |
|
| 255 | - echo wp_kses_post( "<span>$amount</span>" ); |
|
| 254 | + $amount = getpaid_get_formatted_subscription_amount( $subscription ); |
|
| 255 | + echo wp_kses_post( "<span>$amount</span>" ); |
|
| 256 | 256 | } |
| 257 | 257 | add_action( 'getpaid_subscription_admin_display_amount', 'getpaid_admin_subscription_metabox_display_amount' ); |
| 258 | 258 | |
@@ -263,11 +263,11 @@ discard block |
||
| 263 | 263 | */ |
| 264 | 264 | function getpaid_admin_subscription_metabox_display_id( $subscription ) { |
| 265 | 265 | |
| 266 | - printf( |
|
| 267 | - '<a href="%s">#%s</a>', |
|
| 268 | - esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $subscription->get_id() ) ) ), |
|
| 269 | - absint( $subscription->get_id() ) |
|
| 270 | - ); |
|
| 266 | + printf( |
|
| 267 | + '<a href="%s">#%s</a>', |
|
| 268 | + esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $subscription->get_id() ) ) ), |
|
| 269 | + absint( $subscription->get_id() ) |
|
| 270 | + ); |
|
| 271 | 271 | |
| 272 | 272 | } |
| 273 | 273 | add_action( 'getpaid_subscription_admin_display_subscription', 'getpaid_admin_subscription_metabox_display_id' ); |
@@ -278,7 +278,7 @@ discard block |
||
| 278 | 278 | * @param WPInv_Subscription $subscription |
| 279 | 279 | */ |
| 280 | 280 | function getpaid_admin_subscription_metabox_display_start_date( $subscription ) { |
| 281 | - echo esc_html( getpaid_format_date_value( $subscription->get_date_created() ) ); |
|
| 281 | + echo esc_html( getpaid_format_date_value( $subscription->get_date_created() ) ); |
|
| 282 | 282 | } |
| 283 | 283 | add_action( 'getpaid_subscription_admin_display_start_date', 'getpaid_admin_subscription_metabox_display_start_date' ); |
| 284 | 284 | |
@@ -288,7 +288,7 @@ discard block |
||
| 288 | 288 | * @param WPInv_Subscription $subscription |
| 289 | 289 | */ |
| 290 | 290 | function getpaid_admin_subscription_metabox_display_renews_on( $subscription ) { |
| 291 | - echo esc_html( getpaid_format_date_value( $subscription->get_expiration() ) ); |
|
| 291 | + echo esc_html( getpaid_format_date_value( $subscription->get_expiration() ) ); |
|
| 292 | 292 | } |
| 293 | 293 | add_action( 'getpaid_subscription_admin_display_renews_on', 'getpaid_admin_subscription_metabox_display_renews_on' ); |
| 294 | 294 | |
@@ -298,8 +298,8 @@ discard block |
||
| 298 | 298 | * @param WPInv_Subscription $subscription |
| 299 | 299 | */ |
| 300 | 300 | function getpaid_admin_subscription_metabox_display_renewals( $subscription ) { |
| 301 | - $max_bills = $subscription->get_bill_times(); |
|
| 302 | - echo ( (int) $subscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '∞' : (int) $max_bills ); |
|
| 301 | + $max_bills = $subscription->get_bill_times(); |
|
| 302 | + echo ( (int) $subscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '∞' : (int) $max_bills ); |
|
| 303 | 303 | } |
| 304 | 304 | add_action( 'getpaid_subscription_admin_display_renewals', 'getpaid_admin_subscription_metabox_display_renewals' ); |
| 305 | 305 | /** |
@@ -310,13 +310,13 @@ discard block |
||
| 310 | 310 | */ |
| 311 | 311 | function getpaid_admin_subscription_metabox_display_item( $subscription, $subscription_group = false ) { |
| 312 | 312 | |
| 313 | - if ( empty( $subscription_group ) ) { |
|
| 314 | - echo wp_kses_post( WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() ) ); |
|
| 315 | - return; |
|
| 316 | - } |
|
| 313 | + if ( empty( $subscription_group ) ) { |
|
| 314 | + echo wp_kses_post( WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() ) ); |
|
| 315 | + return; |
|
| 316 | + } |
|
| 317 | 317 | |
| 318 | - $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
| 319 | - echo wp_kses_post( implode( ' | ', $markup ) ); |
|
| 318 | + $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
| 319 | + echo wp_kses_post( implode( ' | ', $markup ) ); |
|
| 320 | 320 | |
| 321 | 321 | } |
| 322 | 322 | add_action( 'getpaid_subscription_admin_display_item', 'getpaid_admin_subscription_metabox_display_item', 10, 2 ); |
@@ -328,13 +328,13 @@ discard block |
||
| 328 | 328 | */ |
| 329 | 329 | function getpaid_admin_subscription_metabox_display_gateway( $subscription ) { |
| 330 | 330 | |
| 331 | - $gateway = $subscription->get_gateway(); |
|
| 331 | + $gateway = $subscription->get_gateway(); |
|
| 332 | 332 | |
| 333 | - if ( ! empty( $gateway ) ) { |
|
| 334 | - echo esc_html( wpinv_get_gateway_admin_label( $gateway ) ); |
|
| 335 | - } else { |
|
| 336 | - echo '—'; |
|
| 337 | - } |
|
| 333 | + if ( ! empty( $gateway ) ) { |
|
| 334 | + echo esc_html( wpinv_get_gateway_admin_label( $gateway ) ); |
|
| 335 | + } else { |
|
| 336 | + echo '—'; |
|
| 337 | + } |
|
| 338 | 338 | |
| 339 | 339 | } |
| 340 | 340 | add_action( 'getpaid_subscription_admin_display_gateway', 'getpaid_admin_subscription_metabox_display_gateway' ); |
@@ -345,7 +345,7 @@ discard block |
||
| 345 | 345 | * @param WPInv_Subscription $subscription |
| 346 | 346 | */ |
| 347 | 347 | function getpaid_admin_subscription_metabox_display_status( $subscription ) { |
| 348 | - echo wp_kses_post( $subscription->get_status_label_html() ); |
|
| 348 | + echo wp_kses_post( $subscription->get_status_label_html() ); |
|
| 349 | 349 | } |
| 350 | 350 | add_action( 'getpaid_subscription_admin_display_status', 'getpaid_admin_subscription_metabox_display_status' ); |
| 351 | 351 | |
@@ -356,27 +356,27 @@ discard block |
||
| 356 | 356 | */ |
| 357 | 357 | function getpaid_admin_subscription_metabox_display_profile_id( $subscription ) { |
| 358 | 358 | |
| 359 | - $profile_id = $subscription->get_profile_id(); |
|
| 360 | - |
|
| 361 | - aui()->input( |
|
| 362 | - array( |
|
| 363 | - 'type' => 'text', |
|
| 364 | - 'id' => 'wpinv_subscription_profile_id', |
|
| 365 | - 'name' => 'wpinv_subscription_profile_id', |
|
| 366 | - 'label' => __( 'Profile Id', 'invoicing' ), |
|
| 367 | - 'label_type' => 'hidden', |
|
| 368 | - 'placeholder' => __( 'Profile Id', 'invoicing' ), |
|
| 369 | - 'value' => esc_attr( $profile_id ), |
|
| 370 | - 'input_group_right' => '', |
|
| 371 | - 'no_wrap' => true, |
|
| 372 | - ), |
|
| 373 | - true |
|
| 374 | - ); |
|
| 375 | - |
|
| 376 | - $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $subscription ); |
|
| 377 | - if ( ! empty( $url ) ) { |
|
| 378 | - echo ' <a href="' . esc_url_raw( $url ) . '" title="' . esc_attr__( 'View in Gateway', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-xs fa-fw align-top"></i></a>'; |
|
| 379 | - } |
|
| 359 | + $profile_id = $subscription->get_profile_id(); |
|
| 360 | + |
|
| 361 | + aui()->input( |
|
| 362 | + array( |
|
| 363 | + 'type' => 'text', |
|
| 364 | + 'id' => 'wpinv_subscription_profile_id', |
|
| 365 | + 'name' => 'wpinv_subscription_profile_id', |
|
| 366 | + 'label' => __( 'Profile Id', 'invoicing' ), |
|
| 367 | + 'label_type' => 'hidden', |
|
| 368 | + 'placeholder' => __( 'Profile Id', 'invoicing' ), |
|
| 369 | + 'value' => esc_attr( $profile_id ), |
|
| 370 | + 'input_group_right' => '', |
|
| 371 | + 'no_wrap' => true, |
|
| 372 | + ), |
|
| 373 | + true |
|
| 374 | + ); |
|
| 375 | + |
|
| 376 | + $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $subscription ); |
|
| 377 | + if ( ! empty( $url ) ) { |
|
| 378 | + echo ' <a href="' . esc_url_raw( $url ) . '" title="' . esc_attr__( 'View in Gateway', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-xs fa-fw align-top"></i></a>'; |
|
| 379 | + } |
|
| 380 | 380 | |
| 381 | 381 | } |
| 382 | 382 | add_action( 'getpaid_subscription_admin_display_profile_id', 'getpaid_admin_subscription_metabox_display_profile_id' ); |
@@ -388,40 +388,40 @@ discard block |
||
| 388 | 388 | */ |
| 389 | 389 | function getpaid_admin_subscription_update_metabox( $subscription ) { |
| 390 | 390 | |
| 391 | - ?> |
|
| 391 | + ?> |
|
| 392 | 392 | <div class="mt-3"> |
| 393 | 393 | |
| 394 | 394 | <?php |
| 395 | - aui()->select( |
|
| 396 | - array( |
|
| 397 | - 'options' => getpaid_get_subscription_statuses(), |
|
| 398 | - 'name' => 'subscription_status', |
|
| 399 | - 'id' => 'subscription_status_update_select', |
|
| 400 | - 'required' => true, |
|
| 401 | - 'no_wrap' => false, |
|
| 402 | - 'label' => __( 'Subscription Status', 'invoicing' ), |
|
| 403 | - 'help_text' => __( 'Updating the status will trigger related actions and hooks', 'invoicing' ), |
|
| 404 | - 'select2' => true, |
|
| 405 | - 'value' => $subscription->get_status( 'edit' ), |
|
| 406 | - ), |
|
| 407 | - true |
|
| 408 | - ); |
|
| 409 | - ?> |
|
| 395 | + aui()->select( |
|
| 396 | + array( |
|
| 397 | + 'options' => getpaid_get_subscription_statuses(), |
|
| 398 | + 'name' => 'subscription_status', |
|
| 399 | + 'id' => 'subscription_status_update_select', |
|
| 400 | + 'required' => true, |
|
| 401 | + 'no_wrap' => false, |
|
| 402 | + 'label' => __( 'Subscription Status', 'invoicing' ), |
|
| 403 | + 'help_text' => __( 'Updating the status will trigger related actions and hooks', 'invoicing' ), |
|
| 404 | + 'select2' => true, |
|
| 405 | + 'value' => $subscription->get_status( 'edit' ), |
|
| 406 | + ), |
|
| 407 | + true |
|
| 408 | + ); |
|
| 409 | + ?> |
|
| 410 | 410 | |
| 411 | 411 | <div class="mt-2 px-3 py-2 bg-light border-top" style="margin: -12px;"> |
| 412 | 412 | |
| 413 | 413 | <?php |
| 414 | - submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false ); |
|
| 414 | + submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false ); |
|
| 415 | 415 | |
| 416 | - $url = wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' ); |
|
| 417 | - $anchor = __( 'Renew Subscription', 'invoicing' ); |
|
| 418 | - $title = esc_attr__( 'Are you sure you want to extend the subscription and generate a new invoice that will be automatically marked as paid?', 'invoicing' ); |
|
| 416 | + $url = wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' ); |
|
| 417 | + $anchor = __( 'Renew Subscription', 'invoicing' ); |
|
| 418 | + $title = esc_attr__( 'Are you sure you want to extend the subscription and generate a new invoice that will be automatically marked as paid?', 'invoicing' ); |
|
| 419 | 419 | |
| 420 | - if ( $subscription->is_active() ) { |
|
| 421 | - echo "<a href='" . esc_url( $url ) . "' class='float-right text-muted' onclick='return confirm(\"" . esc_attr( $title ) . "\")'>" . esc_html( $anchor ) . "</a>"; |
|
| 422 | - } |
|
| 420 | + if ( $subscription->is_active() ) { |
|
| 421 | + echo "<a href='" . esc_url( $url ) . "' class='float-right text-muted' onclick='return confirm(\"" . esc_attr( $title ) . "\")'>" . esc_html( $anchor ) . "</a>"; |
|
| 422 | + } |
|
| 423 | 423 | |
| 424 | - echo '</div></div>'; |
|
| 424 | + echo '</div></div>'; |
|
| 425 | 425 | } |
| 426 | 426 | |
| 427 | 427 | /** |
@@ -432,33 +432,33 @@ discard block |
||
| 432 | 432 | */ |
| 433 | 433 | function getpaid_admin_subscription_invoice_details_metabox( $subscription, $strict = true ) { |
| 434 | 434 | |
| 435 | - $columns = apply_filters( |
|
| 436 | - 'getpaid_subscription_related_invoices_columns', |
|
| 437 | - array( |
|
| 438 | - 'invoice' => __( 'Invoice', 'invoicing' ), |
|
| 439 | - 'relationship' => __( 'Relationship', 'invoicing' ), |
|
| 440 | - 'date' => __( 'Date', 'invoicing' ), |
|
| 441 | - 'status' => __( 'Status', 'invoicing' ), |
|
| 442 | - 'total' => __( 'Total', 'invoicing' ), |
|
| 443 | - ), |
|
| 444 | - $subscription |
|
| 445 | - ); |
|
| 446 | - |
|
| 447 | - // Prepare the invoices. |
|
| 448 | - $payments = $subscription->get_child_payments( ! is_admin() ); |
|
| 449 | - $parent = $subscription->get_parent_invoice(); |
|
| 450 | - |
|
| 451 | - if ( $parent->exists() ) { |
|
| 452 | - $payments = array_merge( array( $parent ), $payments ); |
|
| 453 | - } |
|
| 454 | - |
|
| 455 | - $table_class = 'w-100 bg-white'; |
|
| 456 | - |
|
| 457 | - if ( ! is_admin() ) { |
|
| 458 | - $table_class = 'table table-bordered'; |
|
| 459 | - } |
|
| 460 | - |
|
| 461 | - ?> |
|
| 435 | + $columns = apply_filters( |
|
| 436 | + 'getpaid_subscription_related_invoices_columns', |
|
| 437 | + array( |
|
| 438 | + 'invoice' => __( 'Invoice', 'invoicing' ), |
|
| 439 | + 'relationship' => __( 'Relationship', 'invoicing' ), |
|
| 440 | + 'date' => __( 'Date', 'invoicing' ), |
|
| 441 | + 'status' => __( 'Status', 'invoicing' ), |
|
| 442 | + 'total' => __( 'Total', 'invoicing' ), |
|
| 443 | + ), |
|
| 444 | + $subscription |
|
| 445 | + ); |
|
| 446 | + |
|
| 447 | + // Prepare the invoices. |
|
| 448 | + $payments = $subscription->get_child_payments( ! is_admin() ); |
|
| 449 | + $parent = $subscription->get_parent_invoice(); |
|
| 450 | + |
|
| 451 | + if ( $parent->exists() ) { |
|
| 452 | + $payments = array_merge( array( $parent ), $payments ); |
|
| 453 | + } |
|
| 454 | + |
|
| 455 | + $table_class = 'w-100 bg-white'; |
|
| 456 | + |
|
| 457 | + if ( ! is_admin() ) { |
|
| 458 | + $table_class = 'table table-bordered'; |
|
| 459 | + } |
|
| 460 | + |
|
| 461 | + ?> |
|
| 462 | 462 | <div class="m-0" style="overflow: auto;"> |
| 463 | 463 | |
| 464 | 464 | <table class="<?php echo esc_attr( $table_class ); ?>"> |
@@ -466,10 +466,10 @@ discard block |
||
| 466 | 466 | <thead> |
| 467 | 467 | <tr> |
| 468 | 468 | <?php |
| 469 | - foreach ( $columns as $key => $label ) { |
|
| 470 | - echo "<th class='subscription-invoice-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
| 471 | - } |
|
| 472 | - ?> |
|
| 469 | + foreach ( $columns as $key => $label ) { |
|
| 470 | + echo "<th class='subscription-invoice-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
| 471 | + } |
|
| 472 | + ?> |
|
| 473 | 473 | </tr> |
| 474 | 474 | </thead> |
| 475 | 475 | |
@@ -485,72 +485,72 @@ discard block |
||
| 485 | 485 | |
| 486 | 486 | <?php |
| 487 | 487 | |
| 488 | - foreach ( $payments as $payment ) : |
|
| 488 | + foreach ( $payments as $payment ) : |
|
| 489 | 489 | |
| 490 | - // Ensure that we have an invoice. |
|
| 491 | - $payment = new WPInv_Invoice( $payment ); |
|
| 490 | + // Ensure that we have an invoice. |
|
| 491 | + $payment = new WPInv_Invoice( $payment ); |
|
| 492 | 492 | |
| 493 | - // Abort if the invoice is invalid... |
|
| 494 | - if ( ! $payment->exists() ) { |
|
| 495 | - continue; |
|
| 496 | - } |
|
| 493 | + // Abort if the invoice is invalid... |
|
| 494 | + if ( ! $payment->exists() ) { |
|
| 495 | + continue; |
|
| 496 | + } |
|
| 497 | 497 | |
| 498 | - // ... or belongs to a different subscription. |
|
| 499 | - if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) { |
|
| 500 | - continue; |
|
| 501 | - } |
|
| 498 | + // ... or belongs to a different subscription. |
|
| 499 | + if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) { |
|
| 500 | + continue; |
|
| 501 | + } |
|
| 502 | 502 | |
| 503 | - echo '<tr>'; |
|
| 503 | + echo '<tr>'; |
|
| 504 | 504 | |
| 505 | - foreach ( array_keys( $columns ) as $key ) { |
|
| 505 | + foreach ( array_keys( $columns ) as $key ) { |
|
| 506 | 506 | |
| 507 | - echo "<td class='p-2 text-left'>"; |
|
| 507 | + echo "<td class='p-2 text-left'>"; |
|
| 508 | 508 | |
| 509 | - switch ( $key ) { |
|
| 509 | + switch ( $key ) { |
|
| 510 | 510 | |
| 511 | - case 'total': |
|
| 512 | - echo '<strong>'; |
|
| 513 | - wpinv_the_price( $payment->get_total(), $payment->get_currency() ); |
|
| 514 | - echo '</strong>'; |
|
| 515 | - break; |
|
| 511 | + case 'total': |
|
| 512 | + echo '<strong>'; |
|
| 513 | + wpinv_the_price( $payment->get_total(), $payment->get_currency() ); |
|
| 514 | + echo '</strong>'; |
|
| 515 | + break; |
|
| 516 | 516 | |
| 517 | - case 'relationship': |
|
| 518 | - echo $payment->is_renewal() ? esc_html__( 'Renewal Invoice', 'invoicing' ) : esc_html__( 'Initial Invoice', 'invoicing' ); |
|
| 519 | - break; |
|
| 517 | + case 'relationship': |
|
| 518 | + echo $payment->is_renewal() ? esc_html__( 'Renewal Invoice', 'invoicing' ) : esc_html__( 'Initial Invoice', 'invoicing' ); |
|
| 519 | + break; |
|
| 520 | 520 | |
| 521 | - case 'date': |
|
| 522 | - echo esc_html( getpaid_format_date_value( $payment->get_date_created() ) ); |
|
| 523 | - break; |
|
| 521 | + case 'date': |
|
| 522 | + echo esc_html( getpaid_format_date_value( $payment->get_date_created() ) ); |
|
| 523 | + break; |
|
| 524 | 524 | |
| 525 | - case 'status': |
|
| 526 | - $status = $payment->get_status_nicename(); |
|
| 527 | - if ( is_admin() ) { |
|
| 528 | - $status = $payment->get_status_label_html(); |
|
| 529 | - } |
|
| 525 | + case 'status': |
|
| 526 | + $status = $payment->get_status_nicename(); |
|
| 527 | + if ( is_admin() ) { |
|
| 528 | + $status = $payment->get_status_label_html(); |
|
| 529 | + } |
|
| 530 | 530 | |
| 531 | - echo wp_kses_post( $status ); |
|
| 532 | - break; |
|
| 531 | + echo wp_kses_post( $status ); |
|
| 532 | + break; |
|
| 533 | 533 | |
| 534 | - case 'invoice': |
|
| 535 | - $link = esc_url( get_edit_post_link( $payment->get_id() ) ); |
|
| 534 | + case 'invoice': |
|
| 535 | + $link = esc_url( get_edit_post_link( $payment->get_id() ) ); |
|
| 536 | 536 | |
| 537 | - if ( ! is_admin() ) { |
|
| 538 | - $link = esc_url( $payment->get_view_url() ); |
|
| 539 | - } |
|
| 537 | + if ( ! is_admin() ) { |
|
| 538 | + $link = esc_url( $payment->get_view_url() ); |
|
| 539 | + } |
|
| 540 | 540 | |
| 541 | - $invoice = esc_html( $payment->get_number() ); |
|
| 542 | - echo wp_kses_post( "<a href='$link'>$invoice</a>" ); |
|
| 543 | - break; |
|
| 544 | - } |
|
| 541 | + $invoice = esc_html( $payment->get_number() ); |
|
| 542 | + echo wp_kses_post( "<a href='$link'>$invoice</a>" ); |
|
| 543 | + break; |
|
| 544 | + } |
|
| 545 | 545 | |
| 546 | - echo '</td>'; |
|
| 546 | + echo '</td>'; |
|
| 547 | 547 | |
| 548 | - } |
|
| 548 | + } |
|
| 549 | 549 | |
| 550 | - echo '</tr>'; |
|
| 550 | + echo '</tr>'; |
|
| 551 | 551 | |
| 552 | - endforeach; |
|
| 553 | - ?> |
|
| 552 | + endforeach; |
|
| 553 | + ?> |
|
| 554 | 554 | |
| 555 | 555 | </tbody> |
| 556 | 556 | |
@@ -568,42 +568,42 @@ discard block |
||
| 568 | 568 | */ |
| 569 | 569 | function getpaid_admin_subscription_item_details_metabox( $subscription ) { |
| 570 | 570 | |
| 571 | - // Fetch the subscription group. |
|
| 572 | - $subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_payment_id(), $subscription->get_id() ); |
|
| 571 | + // Fetch the subscription group. |
|
| 572 | + $subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_payment_id(), $subscription->get_id() ); |
|
| 573 | 573 | |
| 574 | - if ( empty( $subscription_group ) || empty( $subscription_group['items'] ) ) { |
|
| 575 | - return; |
|
| 576 | - } |
|
| 574 | + if ( empty( $subscription_group ) || empty( $subscription_group['items'] ) ) { |
|
| 575 | + return; |
|
| 576 | + } |
|
| 577 | 577 | |
| 578 | - // Prepare table columns. |
|
| 579 | - $columns = apply_filters( |
|
| 580 | - 'getpaid_subscription_item_details_columns', |
|
| 581 | - array( |
|
| 582 | - 'item_name' => __( 'Item', 'invoicing' ), |
|
| 583 | - 'price' => __( 'Price', 'invoicing' ), |
|
| 584 | - 'tax' => __( 'Tax', 'invoicing' ), |
|
| 585 | - 'discount' => __( 'Discount', 'invoicing' ), |
|
| 586 | - //'initial' => __( 'Initial Amount', 'invoicing' ), |
|
| 587 | - 'recurring' => __( 'Subtotal', 'invoicing' ), |
|
| 588 | - ), |
|
| 589 | - $subscription |
|
| 590 | - ); |
|
| 578 | + // Prepare table columns. |
|
| 579 | + $columns = apply_filters( |
|
| 580 | + 'getpaid_subscription_item_details_columns', |
|
| 581 | + array( |
|
| 582 | + 'item_name' => __( 'Item', 'invoicing' ), |
|
| 583 | + 'price' => __( 'Price', 'invoicing' ), |
|
| 584 | + 'tax' => __( 'Tax', 'invoicing' ), |
|
| 585 | + 'discount' => __( 'Discount', 'invoicing' ), |
|
| 586 | + //'initial' => __( 'Initial Amount', 'invoicing' ), |
|
| 587 | + 'recurring' => __( 'Subtotal', 'invoicing' ), |
|
| 588 | + ), |
|
| 589 | + $subscription |
|
| 590 | + ); |
|
| 591 | 591 | |
| 592 | - // Prepare the invoices. |
|
| 592 | + // Prepare the invoices. |
|
| 593 | 593 | |
| 594 | - $invoice = $subscription->get_parent_invoice(); |
|
| 594 | + $invoice = $subscription->get_parent_invoice(); |
|
| 595 | 595 | |
| 596 | - if ( ( ! wpinv_use_taxes() || ! $invoice->is_taxable() ) && isset( $columns['tax'] ) ) { |
|
| 597 | - unset( $columns['tax'] ); |
|
| 598 | - } |
|
| 596 | + if ( ( ! wpinv_use_taxes() || ! $invoice->is_taxable() ) && isset( $columns['tax'] ) ) { |
|
| 597 | + unset( $columns['tax'] ); |
|
| 598 | + } |
|
| 599 | 599 | |
| 600 | - $table_class = 'w-100 bg-white'; |
|
| 600 | + $table_class = 'w-100 bg-white'; |
|
| 601 | 601 | |
| 602 | - if ( ! is_admin() ) { |
|
| 603 | - $table_class = 'table table-bordered'; |
|
| 604 | - } |
|
| 602 | + if ( ! is_admin() ) { |
|
| 603 | + $table_class = 'table table-bordered'; |
|
| 604 | + } |
|
| 605 | 605 | |
| 606 | - ?> |
|
| 606 | + ?> |
|
| 607 | 607 | <div class="m-0" style="overflow: auto;"> |
| 608 | 608 | |
| 609 | 609 | <table class="<?php echo esc_attr( $table_class ); ?>"> |
@@ -612,10 +612,10 @@ discard block |
||
| 612 | 612 | <tr> |
| 613 | 613 | <?php |
| 614 | 614 | |
| 615 | - foreach ( $columns as $key => $label ) { |
|
| 616 | - echo "<th class='subscription-item-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
| 617 | - } |
|
| 618 | - ?> |
|
| 615 | + foreach ( $columns as $key => $label ) { |
|
| 616 | + echo "<th class='subscription-item-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
| 617 | + } |
|
| 618 | + ?> |
|
| 619 | 619 | </tr> |
| 620 | 620 | </thead> |
| 621 | 621 | |
@@ -623,106 +623,106 @@ discard block |
||
| 623 | 623 | |
| 624 | 624 | <?php |
| 625 | 625 | |
| 626 | - foreach ( $subscription_group['items'] as $subscription_group_item ) : |
|
| 626 | + foreach ( $subscription_group['items'] as $subscription_group_item ) : |
|
| 627 | 627 | |
| 628 | - echo '<tr>'; |
|
| 628 | + echo '<tr>'; |
|
| 629 | 629 | |
| 630 | - foreach ( array_keys( $columns ) as $key ) { |
|
| 630 | + foreach ( array_keys( $columns ) as $key ) { |
|
| 631 | 631 | |
| 632 | - $class = 'text-left'; |
|
| 632 | + $class = 'text-left'; |
|
| 633 | 633 | |
| 634 | - echo "<td class='p-2 text-left'>"; |
|
| 634 | + echo "<td class='p-2 text-left'>"; |
|
| 635 | 635 | |
| 636 | - switch ( $key ) { |
|
| 636 | + switch ( $key ) { |
|
| 637 | 637 | |
| 638 | - case 'item_name': |
|
| 639 | - $item_name = get_the_title( $subscription_group_item['item_id'] ); |
|
| 640 | - $item_name = empty( $item_name ) ? $subscription_group_item['item_name'] : $item_name; |
|
| 638 | + case 'item_name': |
|
| 639 | + $item_name = get_the_title( $subscription_group_item['item_id'] ); |
|
| 640 | + $item_name = empty( $item_name ) ? $subscription_group_item['item_name'] : $item_name; |
|
| 641 | 641 | |
| 642 | - if ( $invoice->get_template() == 'amount' || 1 == (float) $subscription_group_item['quantity'] ) { |
|
| 643 | - echo esc_html( $item_name ); |
|
| 644 | - } else { |
|
| 645 | - printf( '%1$s x %2$d', esc_html( $item_name ), (float) $subscription_group_item['quantity'] ); |
|
| 646 | - } |
|
| 642 | + if ( $invoice->get_template() == 'amount' || 1 == (float) $subscription_group_item['quantity'] ) { |
|
| 643 | + echo esc_html( $item_name ); |
|
| 644 | + } else { |
|
| 645 | + printf( '%1$s x %2$d', esc_html( $item_name ), (float) $subscription_group_item['quantity'] ); |
|
| 646 | + } |
|
| 647 | 647 | |
| 648 | - break; |
|
| 648 | + break; |
|
| 649 | 649 | |
| 650 | - case 'price': |
|
| 651 | - wpinv_the_price( $subscription_group_item['item_price'], $invoice->get_currency() ); |
|
| 652 | - break; |
|
| 650 | + case 'price': |
|
| 651 | + wpinv_the_price( $subscription_group_item['item_price'], $invoice->get_currency() ); |
|
| 652 | + break; |
|
| 653 | 653 | |
| 654 | - case 'tax': |
|
| 655 | - wpinv_the_price( $subscription_group_item['tax'], $invoice->get_currency() ); |
|
| 656 | - break; |
|
| 654 | + case 'tax': |
|
| 655 | + wpinv_the_price( $subscription_group_item['tax'], $invoice->get_currency() ); |
|
| 656 | + break; |
|
| 657 | 657 | |
| 658 | - case 'discount': |
|
| 659 | - wpinv_the_price( $subscription_group_item['discount'], $invoice->get_currency() ); |
|
| 660 | - break; |
|
| 658 | + case 'discount': |
|
| 659 | + wpinv_the_price( $subscription_group_item['discount'], $invoice->get_currency() ); |
|
| 660 | + break; |
|
| 661 | 661 | |
| 662 | - case 'initial': |
|
| 663 | - wpinv_the_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ); |
|
| 664 | - break; |
|
| 662 | + case 'initial': |
|
| 663 | + wpinv_the_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ); |
|
| 664 | + break; |
|
| 665 | 665 | |
| 666 | - case 'recurring': |
|
| 667 | - echo wp_kses_post( '<strong>' . wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ) . '</strong>' ); |
|
| 668 | - break; |
|
| 666 | + case 'recurring': |
|
| 667 | + echo wp_kses_post( '<strong>' . wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ) . '</strong>' ); |
|
| 668 | + break; |
|
| 669 | 669 | |
| 670 | - } |
|
| 670 | + } |
|
| 671 | 671 | |
| 672 | - echo '</td>'; |
|
| 672 | + echo '</td>'; |
|
| 673 | 673 | |
| 674 | - } |
|
| 674 | + } |
|
| 675 | 675 | |
| 676 | - echo '</tr>'; |
|
| 676 | + echo '</tr>'; |
|
| 677 | 677 | |
| 678 | - endforeach; |
|
| 678 | + endforeach; |
|
| 679 | 679 | |
| 680 | - foreach ( $subscription_group['fees'] as $subscription_group_fee ) : |
|
| 680 | + foreach ( $subscription_group['fees'] as $subscription_group_fee ) : |
|
| 681 | 681 | |
| 682 | - echo '<tr>'; |
|
| 682 | + echo '<tr>'; |
|
| 683 | 683 | |
| 684 | - foreach ( array_keys( $columns ) as $key ) { |
|
| 684 | + foreach ( array_keys( $columns ) as $key ) { |
|
| 685 | 685 | |
| 686 | - $class = 'text-left'; |
|
| 686 | + $class = 'text-left'; |
|
| 687 | 687 | |
| 688 | - echo "<td class='p-2 text-left'>"; |
|
| 688 | + echo "<td class='p-2 text-left'>"; |
|
| 689 | 689 | |
| 690 | - switch ( $key ) { |
|
| 690 | + switch ( $key ) { |
|
| 691 | 691 | |
| 692 | - case 'item_name': |
|
| 693 | - echo esc_html( $subscription_group_fee['name'] ); |
|
| 694 | - break; |
|
| 692 | + case 'item_name': |
|
| 693 | + echo esc_html( $subscription_group_fee['name'] ); |
|
| 694 | + break; |
|
| 695 | 695 | |
| 696 | - case 'price': |
|
| 697 | - wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
| 698 | - break; |
|
| 696 | + case 'price': |
|
| 697 | + wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
| 698 | + break; |
|
| 699 | 699 | |
| 700 | - case 'tax': |
|
| 701 | - echo '—'; |
|
| 702 | - break; |
|
| 700 | + case 'tax': |
|
| 701 | + echo '—'; |
|
| 702 | + break; |
|
| 703 | 703 | |
| 704 | - case 'discount': |
|
| 705 | - echo '—'; |
|
| 706 | - break; |
|
| 704 | + case 'discount': |
|
| 705 | + echo '—'; |
|
| 706 | + break; |
|
| 707 | 707 | |
| 708 | - case 'initial': |
|
| 709 | - wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
| 710 | - break; |
|
| 708 | + case 'initial': |
|
| 709 | + wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
| 710 | + break; |
|
| 711 | 711 | |
| 712 | - case 'recurring': |
|
| 713 | - echo wp_kses_post( '<strong>' . wpinv_price( $subscription_group_fee['recurring_fee'], $invoice->get_currency() ) . '</strong>' ); |
|
| 714 | - break; |
|
| 712 | + case 'recurring': |
|
| 713 | + echo wp_kses_post( '<strong>' . wpinv_price( $subscription_group_fee['recurring_fee'], $invoice->get_currency() ) . '</strong>' ); |
|
| 714 | + break; |
|
| 715 | 715 | |
| 716 | - } |
|
| 716 | + } |
|
| 717 | 717 | |
| 718 | - echo '</td>'; |
|
| 718 | + echo '</td>'; |
|
| 719 | 719 | |
| 720 | - } |
|
| 720 | + } |
|
| 721 | 721 | |
| 722 | - echo '</tr>'; |
|
| 722 | + echo '</tr>'; |
|
| 723 | 723 | |
| 724 | - endforeach; |
|
| 725 | - ?> |
|
| 724 | + endforeach; |
|
| 725 | + ?> |
|
| 726 | 726 | |
| 727 | 727 | </tbody> |
| 728 | 728 | |
@@ -741,38 +741,38 @@ discard block |
||
| 741 | 741 | */ |
| 742 | 742 | function getpaid_admin_subscription_related_subscriptions_metabox( $subscription, $skip_current = true ) { |
| 743 | 743 | |
| 744 | - // Fetch the subscription groups. |
|
| 745 | - $subscription_groups = getpaid_get_invoice_subscription_groups( $subscription->get_parent_payment_id() ); |
|
| 746 | - |
|
| 747 | - if ( empty( $subscription_groups ) ) { |
|
| 748 | - return; |
|
| 749 | - } |
|
| 750 | - |
|
| 751 | - // Prepare table columns. |
|
| 752 | - $columns = apply_filters( |
|
| 753 | - 'getpaid_subscription_related_subscriptions_columns', |
|
| 754 | - array( |
|
| 755 | - 'subscription' => __( 'Subscription', 'invoicing' ), |
|
| 756 | - 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 757 | - 'renewal_date' => __( 'Next Payment', 'invoicing' ), |
|
| 758 | - 'renewals' => __( 'Payments', 'invoicing' ), |
|
| 759 | - 'item' => __( 'Items', 'invoicing' ), |
|
| 760 | - 'status' => __( 'Status', 'invoicing' ), |
|
| 761 | - ), |
|
| 762 | - $subscription |
|
| 763 | - ); |
|
| 764 | - |
|
| 765 | - if ( $subscription->get_status() == 'pending' ) { |
|
| 766 | - unset( $columns['start_date'], $columns['renewal_date'] ); |
|
| 767 | - } |
|
| 768 | - |
|
| 769 | - $table_class = 'w-100 bg-white'; |
|
| 770 | - |
|
| 771 | - if ( ! is_admin() ) { |
|
| 772 | - $table_class = 'table table-bordered'; |
|
| 773 | - } |
|
| 774 | - |
|
| 775 | - ?> |
|
| 744 | + // Fetch the subscription groups. |
|
| 745 | + $subscription_groups = getpaid_get_invoice_subscription_groups( $subscription->get_parent_payment_id() ); |
|
| 746 | + |
|
| 747 | + if ( empty( $subscription_groups ) ) { |
|
| 748 | + return; |
|
| 749 | + } |
|
| 750 | + |
|
| 751 | + // Prepare table columns. |
|
| 752 | + $columns = apply_filters( |
|
| 753 | + 'getpaid_subscription_related_subscriptions_columns', |
|
| 754 | + array( |
|
| 755 | + 'subscription' => __( 'Subscription', 'invoicing' ), |
|
| 756 | + 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 757 | + 'renewal_date' => __( 'Next Payment', 'invoicing' ), |
|
| 758 | + 'renewals' => __( 'Payments', 'invoicing' ), |
|
| 759 | + 'item' => __( 'Items', 'invoicing' ), |
|
| 760 | + 'status' => __( 'Status', 'invoicing' ), |
|
| 761 | + ), |
|
| 762 | + $subscription |
|
| 763 | + ); |
|
| 764 | + |
|
| 765 | + if ( $subscription->get_status() == 'pending' ) { |
|
| 766 | + unset( $columns['start_date'], $columns['renewal_date'] ); |
|
| 767 | + } |
|
| 768 | + |
|
| 769 | + $table_class = 'w-100 bg-white'; |
|
| 770 | + |
|
| 771 | + if ( ! is_admin() ) { |
|
| 772 | + $table_class = 'table table-bordered'; |
|
| 773 | + } |
|
| 774 | + |
|
| 775 | + ?> |
|
| 776 | 776 | <div class="m-0" style="overflow: auto;"> |
| 777 | 777 | |
| 778 | 778 | <table class="<?php echo esc_attr( $table_class ); ?>"> |
@@ -781,10 +781,10 @@ discard block |
||
| 781 | 781 | <tr> |
| 782 | 782 | <?php |
| 783 | 783 | |
| 784 | - foreach ( $columns as $key => $label ) { |
|
| 785 | - echo "<th class='related-subscription-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
| 786 | - } |
|
| 787 | - ?> |
|
| 784 | + foreach ( $columns as $key => $label ) { |
|
| 785 | + echo "<th class='related-subscription-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
| 786 | + } |
|
| 787 | + ?> |
|
| 788 | 788 | </tr> |
| 789 | 789 | </thead> |
| 790 | 790 | |
@@ -792,74 +792,74 @@ discard block |
||
| 792 | 792 | |
| 793 | 793 | <?php |
| 794 | 794 | |
| 795 | - foreach ( $subscription_groups as $subscription_group ) : |
|
| 795 | + foreach ( $subscription_groups as $subscription_group ) : |
|
| 796 | 796 | |
| 797 | - // Do not list current subscription. |
|
| 798 | - if ( $skip_current && (int) $subscription_group['subscription_id'] === $subscription->get_id() ) { |
|
| 799 | - continue; |
|
| 800 | - } |
|
| 797 | + // Do not list current subscription. |
|
| 798 | + if ( $skip_current && (int) $subscription_group['subscription_id'] === $subscription->get_id() ) { |
|
| 799 | + continue; |
|
| 800 | + } |
|
| 801 | 801 | |
| 802 | - // Ensure the subscription exists. |
|
| 803 | - $_suscription = new WPInv_Subscription( $subscription_group['subscription_id'] ); |
|
| 802 | + // Ensure the subscription exists. |
|
| 803 | + $_suscription = new WPInv_Subscription( $subscription_group['subscription_id'] ); |
|
| 804 | 804 | |
| 805 | - if ( ! $_suscription->exists() ) { |
|
| 806 | - continue; |
|
| 807 | - } |
|
| 805 | + if ( ! $_suscription->exists() ) { |
|
| 806 | + continue; |
|
| 807 | + } |
|
| 808 | 808 | |
| 809 | - echo '<tr>'; |
|
| 809 | + echo '<tr>'; |
|
| 810 | 810 | |
| 811 | - foreach ( array_keys( $columns ) as $key ) { |
|
| 811 | + foreach ( array_keys( $columns ) as $key ) { |
|
| 812 | 812 | |
| 813 | - $class = 'text-left'; |
|
| 813 | + $class = 'text-left'; |
|
| 814 | 814 | |
| 815 | - echo "<td class='p-2 text-left'>"; |
|
| 815 | + echo "<td class='p-2 text-left'>"; |
|
| 816 | 816 | |
| 817 | - switch ( $key ) { |
|
| 817 | + switch ( $key ) { |
|
| 818 | 818 | |
| 819 | - case 'status': |
|
| 820 | - echo wp_kses_post( $_suscription->get_status_label_html() ); |
|
| 821 | - break; |
|
| 819 | + case 'status': |
|
| 820 | + echo wp_kses_post( $_suscription->get_status_label_html() ); |
|
| 821 | + break; |
|
| 822 | 822 | |
| 823 | - case 'item': |
|
| 824 | - $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
| 825 | - echo wp_kses_post( implode( ' | ', $markup ) ); |
|
| 826 | - break; |
|
| 823 | + case 'item': |
|
| 824 | + $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
| 825 | + echo wp_kses_post( implode( ' | ', $markup ) ); |
|
| 826 | + break; |
|
| 827 | 827 | |
| 828 | - case 'renewals': |
|
| 829 | - $max_bills = $_suscription->get_bill_times(); |
|
| 830 | - echo ( (int) $_suscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '∞' : (int) $max_bills ); |
|
| 831 | - break; |
|
| 828 | + case 'renewals': |
|
| 829 | + $max_bills = $_suscription->get_bill_times(); |
|
| 830 | + echo ( (int) $_suscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '∞' : (int) $max_bills ); |
|
| 831 | + break; |
|
| 832 | 832 | |
| 833 | - case 'renewal_date': |
|
| 834 | - echo $_suscription->is_active() ? esc_html( getpaid_format_date_value( $_suscription->get_expiration() ) ) : '—'; |
|
| 835 | - break; |
|
| 833 | + case 'renewal_date': |
|
| 834 | + echo $_suscription->is_active() ? esc_html( getpaid_format_date_value( $_suscription->get_expiration() ) ) : '—'; |
|
| 835 | + break; |
|
| 836 | 836 | |
| 837 | - case 'start_date': |
|
| 838 | - echo 'pending' == $_suscription->get_status() ? '—' : esc_html( getpaid_format_date_value( $_suscription->get_date_created() ) ); |
|
| 839 | - break; |
|
| 837 | + case 'start_date': |
|
| 838 | + echo 'pending' == $_suscription->get_status() ? '—' : esc_html( getpaid_format_date_value( $_suscription->get_date_created() ) ); |
|
| 839 | + break; |
|
| 840 | 840 | |
| 841 | - case 'subscription': |
|
| 842 | - $url = is_admin() ? admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $_suscription->get_id() ) ) : $_suscription->get_view_url(); |
|
| 843 | - printf( |
|
| 841 | + case 'subscription': |
|
| 842 | + $url = is_admin() ? admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $_suscription->get_id() ) ) : $_suscription->get_view_url(); |
|
| 843 | + printf( |
|
| 844 | 844 | '%1$s#%2$s%3$s', |
| 845 | 845 | '<a href="' . esc_url( $url ) . '">', |
| 846 | 846 | '<strong>' . intval( $_suscription->get_id() ) . '</strong>', |
| 847 | - '</a>' |
|
| 847 | + '</a>' |
|
| 848 | 848 | ); |
| 849 | 849 | |
| 850 | - echo wp_kses_post( WPInv_Subscriptions_List_Table::column_amount( $_suscription ) ); |
|
| 851 | - break; |
|
| 850 | + echo wp_kses_post( WPInv_Subscriptions_List_Table::column_amount( $_suscription ) ); |
|
| 851 | + break; |
|
| 852 | 852 | |
| 853 | - } |
|
| 853 | + } |
|
| 854 | 854 | |
| 855 | - echo '</td>'; |
|
| 855 | + echo '</td>'; |
|
| 856 | 856 | |
| 857 | - } |
|
| 857 | + } |
|
| 858 | 858 | |
| 859 | - echo '</tr>'; |
|
| 859 | + echo '</tr>'; |
|
| 860 | 860 | |
| 861 | - endforeach; |
|
| 862 | - ?> |
|
| 861 | + endforeach; |
|
| 862 | + ?> |
|
| 863 | 863 | |
| 864 | 864 | </tbody> |
| 865 | 865 | |
@@ -126,14 +126,14 @@ |
||
| 126 | 126 | */ |
| 127 | 127 | function getpaid_doing_it_wrong( $function, $message, $version ) { |
| 128 | 128 | |
| 129 | - $message .= ' Backtrace: ' . wp_debug_backtrace_summary(); |
|
| 130 | - |
|
| 131 | - if ( wp_doing_ajax() || defined( 'REST_REQUEST' ) ) { |
|
| 132 | - do_action( 'doing_it_wrong_run', $function, $message, $version ); |
|
| 133 | - error_log( "{$function} was called incorrectly. {$message}. This message was added in version {$version}." ); |
|
| 134 | - } else { |
|
| 135 | - _doing_it_wrong( esc_html( $function ), wp_kses_post( $message ), esc_html( $version ) ); |
|
| 136 | - } |
|
| 129 | + $message .= ' Backtrace: ' . wp_debug_backtrace_summary(); |
|
| 130 | + |
|
| 131 | + if ( wp_doing_ajax() || defined( 'REST_REQUEST' ) ) { |
|
| 132 | + do_action( 'doing_it_wrong_run', $function, $message, $version ); |
|
| 133 | + error_log( "{$function} was called incorrectly. {$message}. This message was added in version {$version}." ); |
|
| 134 | + } else { |
|
| 135 | + _doing_it_wrong( esc_html( $function ), wp_kses_post( $message ), esc_html( $version ) ); |
|
| 136 | + } |
|
| 137 | 137 | |
| 138 | 138 | } |
| 139 | 139 | |
@@ -13,30 +13,30 @@ discard block |
||
| 13 | 13 | class GetPaid_Bank_Transfer_Gateway extends GetPaid_Payment_Gateway { |
| 14 | 14 | |
| 15 | 15 | /** |
| 16 | - * Payment method id. |
|
| 17 | - * |
|
| 18 | - * @var string |
|
| 19 | - */ |
|
| 16 | + * Payment method id. |
|
| 17 | + * |
|
| 18 | + * @var string |
|
| 19 | + */ |
|
| 20 | 20 | public $id = 'bank_transfer'; |
| 21 | 21 | |
| 22 | - /** |
|
| 23 | - * An array of features that this gateway supports. |
|
| 24 | - * |
|
| 25 | - * @var array |
|
| 26 | - */ |
|
| 27 | - protected $supports = array( 'subscription', 'addons', 'single_subscription_group', 'multiple_subscription_groups' ); |
|
| 22 | + /** |
|
| 23 | + * An array of features that this gateway supports. |
|
| 24 | + * |
|
| 25 | + * @var array |
|
| 26 | + */ |
|
| 27 | + protected $supports = array( 'subscription', 'addons', 'single_subscription_group', 'multiple_subscription_groups' ); |
|
| 28 | 28 | |
| 29 | 29 | /** |
| 30 | - * Payment method order. |
|
| 31 | - * |
|
| 32 | - * @var int |
|
| 33 | - */ |
|
| 34 | - public $order = 8; |
|
| 30 | + * Payment method order. |
|
| 31 | + * |
|
| 32 | + * @var int |
|
| 33 | + */ |
|
| 34 | + public $order = 8; |
|
| 35 | 35 | |
| 36 | 36 | /** |
| 37 | - * Class constructor. |
|
| 38 | - */ |
|
| 39 | - public function __construct() { |
|
| 37 | + * Class constructor. |
|
| 38 | + */ |
|
| 39 | + public function __construct() { |
|
| 40 | 40 | parent::__construct(); |
| 41 | 41 | |
| 42 | 42 | $this->title = __( 'Direct bank transfer', 'invoicing' ); |
@@ -44,24 +44,24 @@ discard block |
||
| 44 | 44 | $this->checkout_button_text = __( 'Proceed', 'invoicing' ); |
| 45 | 45 | $this->instructions = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) ); |
| 46 | 46 | |
| 47 | - add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
| 48 | - add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
| 49 | - add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
| 50 | - add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
| 51 | - add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) ); |
|
| 52 | - add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 ); |
|
| 47 | + add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
| 48 | + add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
| 49 | + add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
| 50 | + add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
| 51 | + add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) ); |
|
| 52 | + add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 ); |
|
| 53 | 53 | |
| 54 | 54 | } |
| 55 | 55 | |
| 56 | 56 | /** |
| 57 | - * Process Payment. |
|
| 58 | - * |
|
| 59 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 60 | - * @param array $submission_data Posted checkout fields. |
|
| 61 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
| 62 | - * @return array |
|
| 63 | - */ |
|
| 64 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
| 57 | + * Process Payment. |
|
| 58 | + * |
|
| 59 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 60 | + * @param array $submission_data Posted checkout fields. |
|
| 61 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
| 62 | + * @return array |
|
| 63 | + */ |
|
| 64 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
| 65 | 65 | |
| 66 | 66 | // Add a transaction id. |
| 67 | 67 | $invoice->set_transaction_id( $invoice->generate_key( 'bt_' ) ); |
@@ -82,66 +82,66 @@ discard block |
||
| 82 | 82 | } |
| 83 | 83 | |
| 84 | 84 | /** |
| 85 | - * Output for the order received page. |
|
| 86 | - * |
|
| 87 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 88 | - */ |
|
| 89 | - public function thankyou_page( $invoice ) { |
|
| 85 | + * Output for the order received page. |
|
| 86 | + * |
|
| 87 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 88 | + */ |
|
| 89 | + public function thankyou_page( $invoice ) { |
|
| 90 | 90 | |
| 91 | 91 | if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
| 92 | 92 | |
| 93 | - echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 93 | + echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 94 | 94 | |
| 95 | 95 | if ( ! empty( $this->instructions ) ) { |
| 96 | 96 | echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
| 97 | - } |
|
| 97 | + } |
|
| 98 | 98 | |
| 99 | - $this->bank_details( $invoice ); |
|
| 99 | + $this->bank_details( $invoice ); |
|
| 100 | 100 | |
| 101 | - echo '</div>'; |
|
| 101 | + echo '</div>'; |
|
| 102 | 102 | |
| 103 | 103 | } |
| 104 | 104 | |
| 105 | - } |
|
| 105 | + } |
|
| 106 | 106 | |
| 107 | 107 | /** |
| 108 | - * Add content to the WPI emails. |
|
| 109 | - * |
|
| 110 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 111 | - * @param string $email_type Email format: plain text or HTML. |
|
| 112 | - * @param bool $sent_to_admin Sent to admin. |
|
| 113 | - */ |
|
| 114 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
| 108 | + * Add content to the WPI emails. |
|
| 109 | + * |
|
| 110 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 111 | + * @param string $email_type Email format: plain text or HTML. |
|
| 112 | + * @param bool $sent_to_admin Sent to admin. |
|
| 113 | + */ |
|
| 114 | + public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
| 115 | 115 | |
| 116 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
| 116 | + if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
| 117 | 117 | |
| 118 | - echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
| 118 | + echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
| 119 | 119 | |
| 120 | - if ( $this->instructions ) { |
|
| 121 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
| 120 | + if ( $this->instructions ) { |
|
| 121 | + echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
| 122 | 122 | } |
| 123 | 123 | |
| 124 | - $this->bank_details( $invoice ); |
|
| 124 | + $this->bank_details( $invoice ); |
|
| 125 | 125 | |
| 126 | - echo '</div>'; |
|
| 126 | + echo '</div>'; |
|
| 127 | 127 | |
| 128 | - } |
|
| 128 | + } |
|
| 129 | 129 | |
| 130 | 130 | } |
| 131 | 131 | |
| 132 | 132 | /** |
| 133 | - * Get bank details and place into a list format. |
|
| 134 | - * |
|
| 135 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 136 | - */ |
|
| 137 | - protected function bank_details( $invoice ) { |
|
| 133 | + * Get bank details and place into a list format. |
|
| 134 | + * |
|
| 135 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 136 | + */ |
|
| 137 | + protected function bank_details( $invoice ) { |
|
| 138 | 138 | |
| 139 | - // Get the invoice country and country $locale. |
|
| 140 | - $country = $invoice->get_country(); |
|
| 141 | - $locale = $this->get_country_locale(); |
|
| 139 | + // Get the invoice country and country $locale. |
|
| 140 | + $country = $invoice->get_country(); |
|
| 141 | + $locale = $this->get_country_locale(); |
|
| 142 | 142 | |
| 143 | - // Get sortcode label in the $locale array and use appropriate one. |
|
| 144 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 143 | + // Get sortcode label in the $locale array and use appropriate one. |
|
| 144 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 145 | 145 | |
| 146 | 146 | $bank_fields = array( |
| 147 | 147 | 'ac_name' => __( 'Account Name', 'invoicing' ), |
@@ -160,9 +160,9 @@ discard block |
||
| 160 | 160 | |
| 161 | 161 | if ( ! empty( $value ) ) { |
| 162 | 162 | $bank_info[ $field ] = array( |
| 163 | - 'label' => $label, |
|
| 164 | - 'value' => $value, |
|
| 165 | - ); |
|
| 163 | + 'label' => $label, |
|
| 164 | + 'value' => $value, |
|
| 165 | + ); |
|
| 166 | 166 | } |
| 167 | 167 | } |
| 168 | 168 | |
@@ -172,139 +172,139 @@ discard block |
||
| 172 | 172 | return; |
| 173 | 173 | } |
| 174 | 174 | |
| 175 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) ) . '</h3>' . PHP_EOL; |
|
| 175 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) ) . '</h3>' . PHP_EOL; |
|
| 176 | 176 | |
| 177 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 177 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 178 | 178 | |
| 179 | - foreach ( $bank_info as $key => $data ) { |
|
| 180 | - echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . "</td></tr>" . PHP_EOL; |
|
| 181 | - } |
|
| 179 | + foreach ( $bank_info as $key => $data ) { |
|
| 180 | + echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . "</td></tr>" . PHP_EOL; |
|
| 181 | + } |
|
| 182 | 182 | |
| 183 | - echo '</table>'; |
|
| 183 | + echo '</table>'; |
|
| 184 | 184 | |
| 185 | 185 | } |
| 186 | 186 | |
| 187 | 187 | /** |
| 188 | - * Get country locale if localized. |
|
| 189 | - * |
|
| 190 | - * @return array |
|
| 191 | - */ |
|
| 192 | - public function get_country_locale() { |
|
| 193 | - |
|
| 194 | - if ( empty( $this->locale ) ) { |
|
| 195 | - |
|
| 196 | - // Locale information to be used - only those that are not 'Sort Code'. |
|
| 197 | - $this->locale = apply_filters( |
|
| 198 | - 'getpaid_get_bank_transfer_locale', |
|
| 199 | - array( |
|
| 200 | - 'AU' => array( |
|
| 201 | - 'sortcode' => array( |
|
| 202 | - 'label' => __( 'BSB', 'invoicing' ), |
|
| 203 | - ), |
|
| 204 | - ), |
|
| 205 | - 'CA' => array( |
|
| 206 | - 'sortcode' => array( |
|
| 207 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
| 208 | - ), |
|
| 209 | - ), |
|
| 210 | - 'IN' => array( |
|
| 211 | - 'sortcode' => array( |
|
| 212 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
| 213 | - ), |
|
| 214 | - ), |
|
| 215 | - 'IT' => array( |
|
| 216 | - 'sortcode' => array( |
|
| 217 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
| 218 | - ), |
|
| 219 | - ), |
|
| 220 | - 'NZ' => array( |
|
| 221 | - 'sortcode' => array( |
|
| 222 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
| 223 | - ), |
|
| 224 | - ), |
|
| 225 | - 'SE' => array( |
|
| 226 | - 'sortcode' => array( |
|
| 227 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
| 228 | - ), |
|
| 229 | - ), |
|
| 230 | - 'US' => array( |
|
| 231 | - 'sortcode' => array( |
|
| 232 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
| 233 | - ), |
|
| 234 | - ), |
|
| 235 | - 'ZA' => array( |
|
| 236 | - 'sortcode' => array( |
|
| 237 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
| 238 | - ), |
|
| 239 | - ), |
|
| 240 | - ) |
|
| 241 | - ); |
|
| 242 | - |
|
| 243 | - } |
|
| 244 | - |
|
| 245 | - return $this->locale; |
|
| 246 | - |
|
| 247 | - } |
|
| 248 | - |
|
| 249 | - /** |
|
| 250 | - * Filters the gateway settings. |
|
| 251 | - * |
|
| 252 | - * @param array $admin_settings |
|
| 253 | - */ |
|
| 254 | - public function admin_settings( $admin_settings ) { |
|
| 188 | + * Get country locale if localized. |
|
| 189 | + * |
|
| 190 | + * @return array |
|
| 191 | + */ |
|
| 192 | + public function get_country_locale() { |
|
| 193 | + |
|
| 194 | + if ( empty( $this->locale ) ) { |
|
| 195 | + |
|
| 196 | + // Locale information to be used - only those that are not 'Sort Code'. |
|
| 197 | + $this->locale = apply_filters( |
|
| 198 | + 'getpaid_get_bank_transfer_locale', |
|
| 199 | + array( |
|
| 200 | + 'AU' => array( |
|
| 201 | + 'sortcode' => array( |
|
| 202 | + 'label' => __( 'BSB', 'invoicing' ), |
|
| 203 | + ), |
|
| 204 | + ), |
|
| 205 | + 'CA' => array( |
|
| 206 | + 'sortcode' => array( |
|
| 207 | + 'label' => __( 'Bank transit number', 'invoicing' ), |
|
| 208 | + ), |
|
| 209 | + ), |
|
| 210 | + 'IN' => array( |
|
| 211 | + 'sortcode' => array( |
|
| 212 | + 'label' => __( 'IFSC', 'invoicing' ), |
|
| 213 | + ), |
|
| 214 | + ), |
|
| 215 | + 'IT' => array( |
|
| 216 | + 'sortcode' => array( |
|
| 217 | + 'label' => __( 'Branch sort', 'invoicing' ), |
|
| 218 | + ), |
|
| 219 | + ), |
|
| 220 | + 'NZ' => array( |
|
| 221 | + 'sortcode' => array( |
|
| 222 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
| 223 | + ), |
|
| 224 | + ), |
|
| 225 | + 'SE' => array( |
|
| 226 | + 'sortcode' => array( |
|
| 227 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
| 228 | + ), |
|
| 229 | + ), |
|
| 230 | + 'US' => array( |
|
| 231 | + 'sortcode' => array( |
|
| 232 | + 'label' => __( 'Routing number', 'invoicing' ), |
|
| 233 | + ), |
|
| 234 | + ), |
|
| 235 | + 'ZA' => array( |
|
| 236 | + 'sortcode' => array( |
|
| 237 | + 'label' => __( 'Branch code', 'invoicing' ), |
|
| 238 | + ), |
|
| 239 | + ), |
|
| 240 | + ) |
|
| 241 | + ); |
|
| 242 | + |
|
| 243 | + } |
|
| 244 | + |
|
| 245 | + return $this->locale; |
|
| 246 | + |
|
| 247 | + } |
|
| 248 | + |
|
| 249 | + /** |
|
| 250 | + * Filters the gateway settings. |
|
| 251 | + * |
|
| 252 | + * @param array $admin_settings |
|
| 253 | + */ |
|
| 254 | + public function admin_settings( $admin_settings ) { |
|
| 255 | 255 | |
| 256 | 256 | $admin_settings['bank_transfer_desc']['std'] = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' ); |
| 257 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
| 257 | + $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
| 258 | 258 | |
| 259 | - $locale = $this->get_country_locale(); |
|
| 259 | + $locale = $this->get_country_locale(); |
|
| 260 | 260 | |
| 261 | - // Get sortcode label in the $locale array and use appropriate one. |
|
| 262 | - $country = wpinv_default_billing_country(); |
|
| 263 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 261 | + // Get sortcode label in the $locale array and use appropriate one. |
|
| 262 | + $country = wpinv_default_billing_country(); |
|
| 263 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 264 | 264 | |
| 265 | - $admin_settings['bank_transfer_ac_name'] = array( |
|
| 265 | + $admin_settings['bank_transfer_ac_name'] = array( |
|
| 266 | 266 | 'type' => 'text', |
| 267 | 267 | 'id' => 'bank_transfer_ac_name', |
| 268 | 268 | 'name' => __( 'Account Name', 'invoicing' ), |
| 269 | - ); |
|
| 269 | + ); |
|
| 270 | 270 | |
| 271 | - $admin_settings['bank_transfer_ac_no'] = array( |
|
| 271 | + $admin_settings['bank_transfer_ac_no'] = array( |
|
| 272 | 272 | 'type' => 'text', |
| 273 | 273 | 'id' => 'bank_transfer_ac_no', |
| 274 | 274 | 'name' => __( 'Account Number', 'invoicing' ), |
| 275 | - ); |
|
| 275 | + ); |
|
| 276 | 276 | |
| 277 | - $admin_settings['bank_transfer_bank_name'] = array( |
|
| 277 | + $admin_settings['bank_transfer_bank_name'] = array( |
|
| 278 | 278 | 'type' => 'text', |
| 279 | 279 | 'id' => 'bank_transfer_bank_name', |
| 280 | 280 | 'name' => __( 'Bank Name', 'invoicing' ), |
| 281 | - ); |
|
| 281 | + ); |
|
| 282 | 282 | |
| 283 | - $admin_settings['bank_transfer_ifsc'] = array( |
|
| 283 | + $admin_settings['bank_transfer_ifsc'] = array( |
|
| 284 | 284 | 'type' => 'text', |
| 285 | 285 | 'id' => 'bank_transfer_ifsc', |
| 286 | 286 | 'name' => __( 'IFSC Code', 'invoicing' ), |
| 287 | - ); |
|
| 287 | + ); |
|
| 288 | 288 | |
| 289 | - $admin_settings['bank_transfer_iban'] = array( |
|
| 289 | + $admin_settings['bank_transfer_iban'] = array( |
|
| 290 | 290 | 'type' => 'text', |
| 291 | 291 | 'id' => 'bank_transfer_iban', |
| 292 | 292 | 'name' => __( 'IBAN', 'invoicing' ), |
| 293 | - ); |
|
| 293 | + ); |
|
| 294 | 294 | |
| 295 | - $admin_settings['bank_transfer_bic'] = array( |
|
| 295 | + $admin_settings['bank_transfer_bic'] = array( |
|
| 296 | 296 | 'type' => 'text', |
| 297 | 297 | 'id' => 'bank_transfer_bic', |
| 298 | 298 | 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
| 299 | - ); |
|
| 299 | + ); |
|
| 300 | 300 | |
| 301 | - $admin_settings['bank_transfer_sort_code'] = array( |
|
| 302 | - 'type' => 'text', |
|
| 303 | - 'id' => 'bank_transfer_sort_code', |
|
| 304 | - 'name' => $sortcode, |
|
| 305 | - ); |
|
| 301 | + $admin_settings['bank_transfer_sort_code'] = array( |
|
| 302 | + 'type' => 'text', |
|
| 303 | + 'id' => 'bank_transfer_sort_code', |
|
| 304 | + 'name' => $sortcode, |
|
| 305 | + ); |
|
| 306 | 306 | |
| 307 | - $admin_settings['bank_transfer_info'] = array( |
|
| 307 | + $admin_settings['bank_transfer_info'] = array( |
|
| 308 | 308 | 'id' => 'bank_transfer_info', |
| 309 | 309 | 'name' => __( 'Instructions', 'invoicing' ), |
| 310 | 310 | 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
@@ -314,17 +314,17 @@ discard block |
||
| 314 | 314 | 'rows' => 5, |
| 315 | 315 | ); |
| 316 | 316 | |
| 317 | - return $admin_settings; |
|
| 318 | - } |
|
| 317 | + return $admin_settings; |
|
| 318 | + } |
|
| 319 | 319 | |
| 320 | - /** |
|
| 321 | - * Processes invoice addons. |
|
| 322 | - * |
|
| 323 | - * @param WPInv_Invoice $invoice |
|
| 324 | - * @param GetPaid_Form_Item[] $items |
|
| 325 | - * @return WPInv_Invoice |
|
| 326 | - */ |
|
| 327 | - public function process_addons( $invoice, $items ) { |
|
| 320 | + /** |
|
| 321 | + * Processes invoice addons. |
|
| 322 | + * |
|
| 323 | + * @param WPInv_Invoice $invoice |
|
| 324 | + * @param GetPaid_Form_Item[] $items |
|
| 325 | + * @return WPInv_Invoice |
|
| 326 | + */ |
|
| 327 | + public function process_addons( $invoice, $items ) { |
|
| 328 | 328 | |
| 329 | 329 | foreach ( $items as $item ) { |
| 330 | 330 | $invoice->add_item( $item ); |
@@ -332,66 +332,66 @@ discard block |
||
| 332 | 332 | |
| 333 | 333 | $invoice->recalculate_total(); |
| 334 | 334 | $invoice->save(); |
| 335 | - } |
|
| 335 | + } |
|
| 336 | 336 | |
| 337 | - /** |
|
| 338 | - * (Maybe) renews a bank transfer subscription profile. |
|
| 339 | - * |
|
| 340 | - * |
|
| 337 | + /** |
|
| 338 | + * (Maybe) renews a bank transfer subscription profile. |
|
| 339 | + * |
|
| 340 | + * |
|
| 341 | 341 | * @param WPInv_Subscription $subscription |
| 342 | - */ |
|
| 343 | - public function maybe_renew_subscription( $subscription ) { |
|
| 342 | + */ |
|
| 343 | + public function maybe_renew_subscription( $subscription ) { |
|
| 344 | 344 | |
| 345 | 345 | // Ensure its our subscription && it's active. |
| 346 | 346 | if ( $this->id == $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
| 347 | - $subscription->create_payment(); |
|
| 347 | + $subscription->create_payment(); |
|
| 348 | 348 | } |
| 349 | 349 | |
| 350 | 350 | } |
| 351 | 351 | |
| 352 | - /** |
|
| 353 | - * Process a bank transfer payment. |
|
| 354 | - * |
|
| 355 | - * |
|
| 352 | + /** |
|
| 353 | + * Process a bank transfer payment. |
|
| 354 | + * |
|
| 355 | + * |
|
| 356 | 356 | * @param WPInv_Invoice $invoice |
| 357 | - */ |
|
| 358 | - public function invoice_paid( $invoice ) { |
|
| 359 | - |
|
| 360 | - // Abort if not paid by bank transfer. |
|
| 361 | - if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
| 362 | - return; |
|
| 363 | - } |
|
| 364 | - |
|
| 365 | - // Is it a parent payment? |
|
| 366 | - if ( 0 == $invoice->get_parent_id() ) { |
|
| 367 | - |
|
| 368 | - // (Maybe) activate subscriptions. |
|
| 369 | - $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 370 | - |
|
| 371 | - if ( ! empty( $subscriptions ) ) { |
|
| 372 | - $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
| 373 | - |
|
| 374 | - foreach ( $subscriptions as $subscription ) { |
|
| 375 | - if ( $subscription->exists() ) { |
|
| 376 | - $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
| 377 | - $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
| 378 | - |
|
| 379 | - $subscription->set_next_renewal_date( $expiry ); |
|
| 380 | - $subscription->set_date_created( current_time( 'mysql' ) ); |
|
| 381 | - $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
| 382 | - $subscription->activate(); |
|
| 383 | - } |
|
| 384 | - } |
|
| 357 | + */ |
|
| 358 | + public function invoice_paid( $invoice ) { |
|
| 359 | + |
|
| 360 | + // Abort if not paid by bank transfer. |
|
| 361 | + if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
| 362 | + return; |
|
| 363 | + } |
|
| 364 | + |
|
| 365 | + // Is it a parent payment? |
|
| 366 | + if ( 0 == $invoice->get_parent_id() ) { |
|
| 367 | + |
|
| 368 | + // (Maybe) activate subscriptions. |
|
| 369 | + $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 370 | + |
|
| 371 | + if ( ! empty( $subscriptions ) ) { |
|
| 372 | + $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
| 373 | + |
|
| 374 | + foreach ( $subscriptions as $subscription ) { |
|
| 375 | + if ( $subscription->exists() ) { |
|
| 376 | + $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
| 377 | + $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
| 378 | + |
|
| 379 | + $subscription->set_next_renewal_date( $expiry ); |
|
| 380 | + $subscription->set_date_created( current_time( 'mysql' ) ); |
|
| 381 | + $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
| 382 | + $subscription->activate(); |
|
| 383 | + } |
|
| 384 | + } |
|
| 385 | 385 | } |
| 386 | 386 | } else { |
| 387 | 387 | |
| 388 | - $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
| 388 | + $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
| 389 | 389 | |
| 390 | - // Renew the subscription. |
|
| 391 | - if ( $subscription && $subscription->exists() ) { |
|
| 392 | - $subscription->add_payment( array(), $invoice ); |
|
| 393 | - $subscription->renew(); |
|
| 394 | - } |
|
| 390 | + // Renew the subscription. |
|
| 391 | + if ( $subscription && $subscription->exists() ) { |
|
| 392 | + $subscription->add_payment( array(), $invoice ); |
|
| 393 | + $subscription->renew(); |
|
| 394 | + } |
|
| 395 | 395 | } |
| 396 | 396 | |
| 397 | 397 | } |
@@ -13,462 +13,462 @@ discard block |
||
| 13 | 13 | */ |
| 14 | 14 | abstract class GetPaid_Payment_Gateway { |
| 15 | 15 | |
| 16 | - /** |
|
| 17 | - * Set if the place checkout button should be renamed on selection. |
|
| 18 | - * |
|
| 19 | - * @var string |
|
| 20 | - */ |
|
| 21 | - public $checkout_button_text; |
|
| 22 | - |
|
| 23 | - /** |
|
| 24 | - * Boolean whether the method is enabled. |
|
| 25 | - * |
|
| 26 | - * @var bool |
|
| 27 | - */ |
|
| 28 | - public $enabled = true; |
|
| 29 | - |
|
| 30 | - /** |
|
| 31 | - * Payment method id. |
|
| 32 | - * |
|
| 33 | - * @var string |
|
| 34 | - */ |
|
| 35 | - public $id; |
|
| 36 | - |
|
| 37 | - /** |
|
| 38 | - * Payment method order. |
|
| 39 | - * |
|
| 40 | - * @var int |
|
| 41 | - */ |
|
| 42 | - public $order = 10; |
|
| 43 | - |
|
| 44 | - /** |
|
| 45 | - * Payment method title for the frontend. |
|
| 46 | - * |
|
| 47 | - * @var string |
|
| 48 | - */ |
|
| 49 | - public $title; |
|
| 50 | - |
|
| 51 | - /** |
|
| 52 | - * Payment method description for the frontend. |
|
| 53 | - * |
|
| 54 | - * @var string |
|
| 55 | - */ |
|
| 56 | - public $description; |
|
| 57 | - |
|
| 58 | - /** |
|
| 59 | - * Gateway title. |
|
| 60 | - * |
|
| 61 | - * @var string |
|
| 62 | - */ |
|
| 63 | - public $method_title = ''; |
|
| 64 | - |
|
| 65 | - /** |
|
| 66 | - * Gateway description. |
|
| 67 | - * |
|
| 68 | - * @var string |
|
| 69 | - */ |
|
| 70 | - public $method_description = ''; |
|
| 71 | - |
|
| 72 | - /** |
|
| 73 | - * Countries this gateway is allowed for. |
|
| 74 | - * |
|
| 75 | - * @var array |
|
| 76 | - */ |
|
| 77 | - public $countries; |
|
| 78 | - |
|
| 79 | - /** |
|
| 80 | - * Currencies this gateway is allowed for. |
|
| 81 | - * |
|
| 82 | - * @var array |
|
| 83 | - */ |
|
| 84 | - public $currencies; |
|
| 85 | - |
|
| 86 | - /** |
|
| 87 | - * Currencies this gateway is not allowed for. |
|
| 88 | - * |
|
| 89 | - * @var array |
|
| 90 | - */ |
|
| 91 | - public $exclude_currencies; |
|
| 92 | - |
|
| 93 | - /** |
|
| 94 | - * Maximum transaction amount, zero does not define a maximum. |
|
| 95 | - * |
|
| 96 | - * @var int |
|
| 97 | - */ |
|
| 98 | - public $max_amount = 0; |
|
| 99 | - |
|
| 100 | - /** |
|
| 101 | - * Optional URL to view a transaction. |
|
| 102 | - * |
|
| 103 | - * @var string |
|
| 104 | - */ |
|
| 105 | - public $view_transaction_url = ''; |
|
| 106 | - |
|
| 107 | - /** |
|
| 108 | - * Optional URL to view a subscription. |
|
| 109 | - * |
|
| 110 | - * @var string |
|
| 111 | - */ |
|
| 112 | - public $view_subscription_url = ''; |
|
| 113 | - |
|
| 114 | - /** |
|
| 115 | - * Optional label to show for "new payment method" in the payment |
|
| 116 | - * method/token selection radio selection. |
|
| 117 | - * |
|
| 118 | - * @var string |
|
| 119 | - */ |
|
| 120 | - public $new_method_label = ''; |
|
| 121 | - |
|
| 122 | - /** |
|
| 123 | - * Contains a user's saved tokens for this gateway. |
|
| 124 | - * |
|
| 125 | - * @var array |
|
| 126 | - */ |
|
| 127 | - protected $tokens = array(); |
|
| 128 | - |
|
| 129 | - /** |
|
| 130 | - * An array of features that this gateway supports. |
|
| 131 | - * |
|
| 132 | - * @var array |
|
| 133 | - */ |
|
| 134 | - protected $supports = array(); |
|
| 135 | - |
|
| 136 | - /** |
|
| 137 | - * Class constructor. |
|
| 138 | - */ |
|
| 139 | - public function __construct() { |
|
| 140 | - |
|
| 141 | - // Register gateway. |
|
| 142 | - add_filter( 'wpinv_payment_gateways', array( $this, 'register_gateway' ) ); |
|
| 143 | - |
|
| 144 | - $this->enabled = wpinv_is_gateway_active( $this->id ); |
|
| 145 | - |
|
| 146 | - // Add support for various features. |
|
| 147 | - foreach ( $this->supports as $feature ) { |
|
| 148 | - add_filter( "wpinv_{$this->id}_support_{$feature}", '__return_true' ); |
|
| 149 | - add_filter( "getpaid_{$this->id}_support_{$feature}", '__return_true' ); |
|
| 150 | - add_filter( "getpaid_{$this->id}_supports_{$feature}", '__return_true' ); |
|
| 151 | - } |
|
| 152 | - |
|
| 153 | - // Invoice addons. |
|
| 154 | - if ( $this->supports( 'addons' ) ) { |
|
| 155 | - add_action( "getpaid_process_{$this->id}_invoice_addons", array( $this, 'process_addons' ), 10, 2 ); |
|
| 156 | - } |
|
| 157 | - |
|
| 158 | - // Gateway settings. |
|
| 159 | - add_filter( "wpinv_gateway_settings_{$this->id}", array( $this, 'admin_settings' ) ); |
|
| 160 | - |
|
| 161 | - // Gateway checkout fiellds. |
|
| 162 | - add_action( "wpinv_{$this->id}_cc_form", array( $this, 'payment_fields' ), 10, 2 ); |
|
| 163 | - |
|
| 164 | - // Process payment. |
|
| 165 | - add_action( "getpaid_gateway_{$this->id}", array( $this, 'process_payment' ), 10, 3 ); |
|
| 166 | - |
|
| 167 | - // Change the checkout button text. |
|
| 168 | - if ( ! empty( $this->checkout_button_text ) ) { |
|
| 169 | - add_filter( "getpaid_gateway_{$this->id}_checkout_button_label", array( $this, 'rename_checkout_button' ) ); |
|
| 170 | - } |
|
| 171 | - |
|
| 172 | - // Check if a gateway is valid for a given currency. |
|
| 173 | - add_filter( "getpaid_gateway_{$this->id}_is_valid_for_currency", array( $this, 'validate_currency' ), 10, 2 ); |
|
| 174 | - |
|
| 175 | - // Generate the transaction url. |
|
| 176 | - add_filter( "getpaid_gateway_{$this->id}_transaction_url", array( $this, 'filter_transaction_url' ), 10, 2 ); |
|
| 177 | - |
|
| 178 | - // Generate the subscription url. |
|
| 179 | - add_filter( 'getpaid_remote_subscription_profile_url', array( $this, 'generate_subscription_url' ), 10, 2 ); |
|
| 180 | - |
|
| 181 | - // Confirm payments. |
|
| 182 | - add_filter( "wpinv_payment_confirm_{$this->id}", array( $this, 'confirm_payment' ), 10, 2 ); |
|
| 183 | - |
|
| 184 | - // Verify IPNs. |
|
| 185 | - add_action( "wpinv_verify_{$this->id}_ipn", array( $this, 'verify_ipn' ) ); |
|
| 186 | - |
|
| 187 | - } |
|
| 188 | - |
|
| 189 | - /** |
|
| 190 | - * Checks if this gateway is a given gateway. |
|
| 191 | - * |
|
| 192 | - * @since 1.0.19 |
|
| 193 | - * @return bool |
|
| 194 | - */ |
|
| 195 | - public function is( $gateway ) { |
|
| 196 | - return $gateway == $this->id; |
|
| 197 | - } |
|
| 198 | - |
|
| 199 | - /** |
|
| 200 | - * Returns a users saved tokens for this gateway. |
|
| 201 | - * |
|
| 202 | - * @since 1.0.19 |
|
| 203 | - * @return array |
|
| 204 | - */ |
|
| 205 | - public function get_tokens( $sandbox = null ) { |
|
| 206 | - |
|
| 207 | - if ( is_user_logged_in() && $this->supports( 'tokens' ) && 0 == count( $this->tokens ) ) { |
|
| 208 | - $tokens = get_user_meta( get_current_user_id(), "getpaid_{$this->id}_tokens", true ); |
|
| 209 | - |
|
| 210 | - if ( is_array( $tokens ) ) { |
|
| 211 | - $this->tokens = $tokens; |
|
| 212 | - } |
|
| 16 | + /** |
|
| 17 | + * Set if the place checkout button should be renamed on selection. |
|
| 18 | + * |
|
| 19 | + * @var string |
|
| 20 | + */ |
|
| 21 | + public $checkout_button_text; |
|
| 22 | + |
|
| 23 | + /** |
|
| 24 | + * Boolean whether the method is enabled. |
|
| 25 | + * |
|
| 26 | + * @var bool |
|
| 27 | + */ |
|
| 28 | + public $enabled = true; |
|
| 29 | + |
|
| 30 | + /** |
|
| 31 | + * Payment method id. |
|
| 32 | + * |
|
| 33 | + * @var string |
|
| 34 | + */ |
|
| 35 | + public $id; |
|
| 36 | + |
|
| 37 | + /** |
|
| 38 | + * Payment method order. |
|
| 39 | + * |
|
| 40 | + * @var int |
|
| 41 | + */ |
|
| 42 | + public $order = 10; |
|
| 43 | + |
|
| 44 | + /** |
|
| 45 | + * Payment method title for the frontend. |
|
| 46 | + * |
|
| 47 | + * @var string |
|
| 48 | + */ |
|
| 49 | + public $title; |
|
| 50 | + |
|
| 51 | + /** |
|
| 52 | + * Payment method description for the frontend. |
|
| 53 | + * |
|
| 54 | + * @var string |
|
| 55 | + */ |
|
| 56 | + public $description; |
|
| 57 | + |
|
| 58 | + /** |
|
| 59 | + * Gateway title. |
|
| 60 | + * |
|
| 61 | + * @var string |
|
| 62 | + */ |
|
| 63 | + public $method_title = ''; |
|
| 64 | + |
|
| 65 | + /** |
|
| 66 | + * Gateway description. |
|
| 67 | + * |
|
| 68 | + * @var string |
|
| 69 | + */ |
|
| 70 | + public $method_description = ''; |
|
| 71 | + |
|
| 72 | + /** |
|
| 73 | + * Countries this gateway is allowed for. |
|
| 74 | + * |
|
| 75 | + * @var array |
|
| 76 | + */ |
|
| 77 | + public $countries; |
|
| 78 | + |
|
| 79 | + /** |
|
| 80 | + * Currencies this gateway is allowed for. |
|
| 81 | + * |
|
| 82 | + * @var array |
|
| 83 | + */ |
|
| 84 | + public $currencies; |
|
| 85 | + |
|
| 86 | + /** |
|
| 87 | + * Currencies this gateway is not allowed for. |
|
| 88 | + * |
|
| 89 | + * @var array |
|
| 90 | + */ |
|
| 91 | + public $exclude_currencies; |
|
| 92 | + |
|
| 93 | + /** |
|
| 94 | + * Maximum transaction amount, zero does not define a maximum. |
|
| 95 | + * |
|
| 96 | + * @var int |
|
| 97 | + */ |
|
| 98 | + public $max_amount = 0; |
|
| 99 | + |
|
| 100 | + /** |
|
| 101 | + * Optional URL to view a transaction. |
|
| 102 | + * |
|
| 103 | + * @var string |
|
| 104 | + */ |
|
| 105 | + public $view_transaction_url = ''; |
|
| 106 | + |
|
| 107 | + /** |
|
| 108 | + * Optional URL to view a subscription. |
|
| 109 | + * |
|
| 110 | + * @var string |
|
| 111 | + */ |
|
| 112 | + public $view_subscription_url = ''; |
|
| 113 | + |
|
| 114 | + /** |
|
| 115 | + * Optional label to show for "new payment method" in the payment |
|
| 116 | + * method/token selection radio selection. |
|
| 117 | + * |
|
| 118 | + * @var string |
|
| 119 | + */ |
|
| 120 | + public $new_method_label = ''; |
|
| 121 | + |
|
| 122 | + /** |
|
| 123 | + * Contains a user's saved tokens for this gateway. |
|
| 124 | + * |
|
| 125 | + * @var array |
|
| 126 | + */ |
|
| 127 | + protected $tokens = array(); |
|
| 128 | + |
|
| 129 | + /** |
|
| 130 | + * An array of features that this gateway supports. |
|
| 131 | + * |
|
| 132 | + * @var array |
|
| 133 | + */ |
|
| 134 | + protected $supports = array(); |
|
| 135 | + |
|
| 136 | + /** |
|
| 137 | + * Class constructor. |
|
| 138 | + */ |
|
| 139 | + public function __construct() { |
|
| 140 | + |
|
| 141 | + // Register gateway. |
|
| 142 | + add_filter( 'wpinv_payment_gateways', array( $this, 'register_gateway' ) ); |
|
| 143 | + |
|
| 144 | + $this->enabled = wpinv_is_gateway_active( $this->id ); |
|
| 145 | + |
|
| 146 | + // Add support for various features. |
|
| 147 | + foreach ( $this->supports as $feature ) { |
|
| 148 | + add_filter( "wpinv_{$this->id}_support_{$feature}", '__return_true' ); |
|
| 149 | + add_filter( "getpaid_{$this->id}_support_{$feature}", '__return_true' ); |
|
| 150 | + add_filter( "getpaid_{$this->id}_supports_{$feature}", '__return_true' ); |
|
| 151 | + } |
|
| 152 | + |
|
| 153 | + // Invoice addons. |
|
| 154 | + if ( $this->supports( 'addons' ) ) { |
|
| 155 | + add_action( "getpaid_process_{$this->id}_invoice_addons", array( $this, 'process_addons' ), 10, 2 ); |
|
| 156 | + } |
|
| 157 | + |
|
| 158 | + // Gateway settings. |
|
| 159 | + add_filter( "wpinv_gateway_settings_{$this->id}", array( $this, 'admin_settings' ) ); |
|
| 160 | + |
|
| 161 | + // Gateway checkout fiellds. |
|
| 162 | + add_action( "wpinv_{$this->id}_cc_form", array( $this, 'payment_fields' ), 10, 2 ); |
|
| 163 | + |
|
| 164 | + // Process payment. |
|
| 165 | + add_action( "getpaid_gateway_{$this->id}", array( $this, 'process_payment' ), 10, 3 ); |
|
| 166 | + |
|
| 167 | + // Change the checkout button text. |
|
| 168 | + if ( ! empty( $this->checkout_button_text ) ) { |
|
| 169 | + add_filter( "getpaid_gateway_{$this->id}_checkout_button_label", array( $this, 'rename_checkout_button' ) ); |
|
| 170 | + } |
|
| 171 | + |
|
| 172 | + // Check if a gateway is valid for a given currency. |
|
| 173 | + add_filter( "getpaid_gateway_{$this->id}_is_valid_for_currency", array( $this, 'validate_currency' ), 10, 2 ); |
|
| 174 | + |
|
| 175 | + // Generate the transaction url. |
|
| 176 | + add_filter( "getpaid_gateway_{$this->id}_transaction_url", array( $this, 'filter_transaction_url' ), 10, 2 ); |
|
| 177 | + |
|
| 178 | + // Generate the subscription url. |
|
| 179 | + add_filter( 'getpaid_remote_subscription_profile_url', array( $this, 'generate_subscription_url' ), 10, 2 ); |
|
| 180 | + |
|
| 181 | + // Confirm payments. |
|
| 182 | + add_filter( "wpinv_payment_confirm_{$this->id}", array( $this, 'confirm_payment' ), 10, 2 ); |
|
| 183 | + |
|
| 184 | + // Verify IPNs. |
|
| 185 | + add_action( "wpinv_verify_{$this->id}_ipn", array( $this, 'verify_ipn' ) ); |
|
| 186 | + |
|
| 187 | + } |
|
| 188 | + |
|
| 189 | + /** |
|
| 190 | + * Checks if this gateway is a given gateway. |
|
| 191 | + * |
|
| 192 | + * @since 1.0.19 |
|
| 193 | + * @return bool |
|
| 194 | + */ |
|
| 195 | + public function is( $gateway ) { |
|
| 196 | + return $gateway == $this->id; |
|
| 197 | + } |
|
| 198 | + |
|
| 199 | + /** |
|
| 200 | + * Returns a users saved tokens for this gateway. |
|
| 201 | + * |
|
| 202 | + * @since 1.0.19 |
|
| 203 | + * @return array |
|
| 204 | + */ |
|
| 205 | + public function get_tokens( $sandbox = null ) { |
|
| 206 | + |
|
| 207 | + if ( is_user_logged_in() && $this->supports( 'tokens' ) && 0 == count( $this->tokens ) ) { |
|
| 208 | + $tokens = get_user_meta( get_current_user_id(), "getpaid_{$this->id}_tokens", true ); |
|
| 209 | + |
|
| 210 | + if ( is_array( $tokens ) ) { |
|
| 211 | + $this->tokens = $tokens; |
|
| 212 | + } |
|
| 213 | 213 | } |
| 214 | 214 | |
| 215 | - if ( ! is_bool( $sandbox ) ) { |
|
| 216 | - return $this->tokens; |
|
| 217 | - } |
|
| 218 | - |
|
| 219 | - // Filter tokens. |
|
| 220 | - $args = array( 'type' => $sandbox ? 'sandbox' : 'live' ); |
|
| 221 | - return wp_list_filter( $this->tokens, $args ); |
|
| 222 | - |
|
| 223 | - } |
|
| 224 | - |
|
| 225 | - /** |
|
| 226 | - * Saves a token for this gateway. |
|
| 227 | - * |
|
| 228 | - * @since 1.0.19 |
|
| 229 | - */ |
|
| 230 | - public function save_token( $token ) { |
|
| 231 | - |
|
| 232 | - $tokens = $this->get_tokens(); |
|
| 233 | - $tokens[] = $token; |
|
| 234 | - |
|
| 235 | - update_user_meta( get_current_user_id(), "getpaid_{$this->id}_tokens", $tokens ); |
|
| 236 | - |
|
| 237 | - $this->tokens = $tokens; |
|
| 238 | - |
|
| 239 | - } |
|
| 240 | - |
|
| 241 | - /** |
|
| 242 | - * Return the title for admin screens. |
|
| 243 | - * |
|
| 244 | - * @return string |
|
| 245 | - */ |
|
| 246 | - public function get_method_title() { |
|
| 247 | - return apply_filters( 'getpaid_gateway_method_title', $this->method_title, $this ); |
|
| 248 | - } |
|
| 249 | - |
|
| 250 | - /** |
|
| 251 | - * Return the description for admin screens. |
|
| 252 | - * |
|
| 253 | - * @return string |
|
| 254 | - */ |
|
| 255 | - public function get_method_description() { |
|
| 256 | - return apply_filters( 'getpaid_gateway_method_description', $this->method_description, $this ); |
|
| 257 | - } |
|
| 258 | - |
|
| 259 | - /** |
|
| 260 | - * Get the success url. |
|
| 261 | - * |
|
| 262 | - * @param WPInv_Invoice $invoice Invoice object. |
|
| 263 | - * @return string |
|
| 264 | - */ |
|
| 265 | - public function get_return_url( $invoice ) { |
|
| 266 | - |
|
| 267 | - // Payment success url |
|
| 268 | - $return_url = add_query_arg( |
|
| 269 | - array( |
|
| 270 | - 'payment-confirm' => $this->id, |
|
| 271 | - 'invoice_key' => $invoice->get_key(), |
|
| 272 | - 'utm_nooverride' => 1, |
|
| 273 | - ), |
|
| 274 | - wpinv_get_success_page_uri() |
|
| 275 | - ); |
|
| 276 | - |
|
| 277 | - return apply_filters( 'getpaid_gateway_success_url', $return_url, $invoice, $this ); |
|
| 278 | - } |
|
| 279 | - |
|
| 280 | - /** |
|
| 281 | - * Confirms payments when rendering the success page. |
|
| 282 | - * |
|
| 283 | - * @param string $content Success page content. |
|
| 284 | - * @return string |
|
| 285 | - */ |
|
| 286 | - public function confirm_payment( $content ) { |
|
| 287 | - |
|
| 288 | - // Retrieve the invoice. |
|
| 289 | - $invoice_id = getpaid_get_current_invoice_id(); |
|
| 290 | - $invoice = wpinv_get_invoice( $invoice_id ); |
|
| 291 | - |
|
| 292 | - // Ensure that it exists and that it is pending payment. |
|
| 293 | - if ( empty( $invoice_id ) || ! $invoice->needs_payment() ) { |
|
| 294 | - return $content; |
|
| 295 | - } |
|
| 296 | - |
|
| 297 | - // Can the user view this invoice?? |
|
| 298 | - if ( ! wpinv_user_can_view_invoice( $invoice ) ) { |
|
| 299 | - return $content; |
|
| 300 | - } |
|
| 301 | - |
|
| 302 | - // Show payment processing indicator. |
|
| 303 | - return wpinv_get_template_html( 'wpinv-payment-processing.php', compact( 'invoice' ) ); |
|
| 304 | - } |
|
| 305 | - |
|
| 306 | - /** |
|
| 307 | - * Processes ipns and marks payments as complete. |
|
| 308 | - * |
|
| 309 | - * @return void |
|
| 310 | - */ |
|
| 311 | - public function verify_ipn() {} |
|
| 312 | - |
|
| 313 | - /** |
|
| 314 | - * Processes invoice addons. |
|
| 315 | - * |
|
| 316 | - * @param WPInv_Invoice $invoice |
|
| 317 | - * @param GetPaid_Form_Item[] $items |
|
| 318 | - * @return WPInv_Invoice |
|
| 319 | - */ |
|
| 320 | - public function process_addons( $invoice, $items ) { |
|
| 321 | - |
|
| 322 | - } |
|
| 323 | - |
|
| 324 | - /** |
|
| 325 | - * Get a link to the transaction on the 3rd party gateway site (if applicable). |
|
| 326 | - * |
|
| 327 | - * @param string $transaction_url transaction url. |
|
| 328 | - * @param WPInv_Invoice $invoice Invoice object. |
|
| 329 | - * @return string transaction URL, or empty string. |
|
| 330 | - */ |
|
| 331 | - public function filter_transaction_url( $transaction_url, $invoice ) { |
|
| 332 | - |
|
| 333 | - $transaction_id = $invoice->get_transaction_id(); |
|
| 334 | - |
|
| 335 | - if ( ! empty( $this->view_transaction_url ) && ! empty( $transaction_id ) ) { |
|
| 336 | - $transaction_url = sprintf( $this->view_transaction_url, $transaction_id ); |
|
| 337 | - $replace = $this->is_sandbox( $invoice ) ? 'sandbox' : ''; |
|
| 338 | - $transaction_url = str_replace( '{sandbox}', $replace, $transaction_url ); |
|
| 339 | - } |
|
| 340 | - |
|
| 341 | - return $transaction_url; |
|
| 342 | - } |
|
| 343 | - |
|
| 344 | - /** |
|
| 345 | - * Get a link to the subscription on the 3rd party gateway site (if applicable). |
|
| 346 | - * |
|
| 347 | - * @param string $subscription_url transaction url. |
|
| 348 | - * @param WPInv_Subscription $subscription Subscription objectt. |
|
| 349 | - * @return string subscription URL, or empty string. |
|
| 350 | - */ |
|
| 351 | - public function generate_subscription_url( $subscription_url, $subscription ) { |
|
| 352 | - |
|
| 353 | - $profile_id = $subscription->get_profile_id(); |
|
| 354 | - |
|
| 355 | - if ( $this->id == $subscription->get_gateway() && ! empty( $this->view_subscription_url ) && ! empty( $profile_id ) ) { |
|
| 356 | - |
|
| 357 | - $subscription_url = sprintf( $this->view_subscription_url, $profile_id ); |
|
| 358 | - $replace = $this->is_sandbox( $subscription->get_parent_invoice() ) ? 'sandbox' : ''; |
|
| 359 | - $subscription_url = str_replace( '{sandbox}', $replace, $subscription_url ); |
|
| 360 | - |
|
| 361 | - } |
|
| 362 | - |
|
| 363 | - return $subscription_url; |
|
| 364 | - } |
|
| 365 | - |
|
| 366 | - /** |
|
| 367 | - * Check if the gateway is available for use. |
|
| 368 | - * |
|
| 369 | - * @return bool |
|
| 370 | - */ |
|
| 371 | - public function is_available() { |
|
| 372 | - return ! empty( $this->enabled ); |
|
| 373 | - } |
|
| 374 | - |
|
| 375 | - /** |
|
| 376 | - * Return the gateway's title. |
|
| 377 | - * |
|
| 378 | - * @return string |
|
| 379 | - */ |
|
| 380 | - public function get_title() { |
|
| 381 | - return apply_filters( 'getpaid_gateway_title', $this->title, $this ); |
|
| 382 | - } |
|
| 383 | - |
|
| 384 | - /** |
|
| 385 | - * Return the gateway's description. |
|
| 386 | - * |
|
| 387 | - * @return string |
|
| 388 | - */ |
|
| 389 | - public function get_description() { |
|
| 390 | - return apply_filters( 'getpaid_gateway_description', $this->description, $this ); |
|
| 391 | - } |
|
| 392 | - |
|
| 393 | - /** |
|
| 394 | - * Process Payment. |
|
| 395 | - * |
|
| 396 | - * |
|
| 397 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 398 | - * @param array $submission_data Posted checkout fields. |
|
| 399 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
| 400 | - * @return void |
|
| 401 | - */ |
|
| 402 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
| 403 | - // Process the payment then either redirect to the success page or the gateway. |
|
| 404 | - do_action( 'getpaid_process_invoice_payment_' . $this->id, $invoice, $submission_data, $submission ); |
|
| 405 | - } |
|
| 406 | - |
|
| 407 | - /** |
|
| 408 | - * Process refund. |
|
| 409 | - * |
|
| 410 | - * If the gateway declares 'refunds' support, this will allow it to refund. |
|
| 411 | - * a passed in amount. |
|
| 412 | - * |
|
| 413 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 414 | - * @param float $amount Refund amount. |
|
| 415 | - * @param string $reason Refund reason. |
|
| 416 | - * @return WP_Error|bool True or false based on success, or a WP_Error object. |
|
| 417 | - */ |
|
| 418 | - public function process_refund( $invoice, $amount = null, $reason = '' ) { |
|
| 419 | - return apply_filters( 'getpaid_process_invoice_refund_' . $this->id, false, $invoice, $amount, $reason ); |
|
| 420 | - } |
|
| 421 | - |
|
| 422 | - /** |
|
| 423 | - * Displays the payment fields, credit cards etc. |
|
| 424 | - * |
|
| 425 | - * @param int $invoice_id 0 or invoice id. |
|
| 426 | - * @param GetPaid_Payment_Form $form Current payment form. |
|
| 427 | - */ |
|
| 428 | - public function payment_fields( $invoice_id, $form ) { |
|
| 429 | - do_action( 'getpaid_getpaid_gateway_payment_fields_' . $this->id, $invoice_id, $form ); |
|
| 430 | - } |
|
| 431 | - |
|
| 432 | - /** |
|
| 433 | - * Filters the gateway settings. |
|
| 434 | - * |
|
| 435 | - * @param array $admin_settings |
|
| 436 | - */ |
|
| 437 | - public function admin_settings( $admin_settings ) { |
|
| 438 | - return $admin_settings; |
|
| 439 | - } |
|
| 440 | - |
|
| 441 | - /** |
|
| 442 | - * Retrieves the value of a gateway setting. |
|
| 443 | - * |
|
| 444 | - * @param string $option |
|
| 445 | - */ |
|
| 446 | - public function get_option( $option, $default = false ) { |
|
| 447 | - return wpinv_get_option( $this->id . '_' . $option, $default ); |
|
| 448 | - } |
|
| 449 | - |
|
| 450 | - /** |
|
| 451 | - * Check if a gateway supports a given feature. |
|
| 452 | - * |
|
| 453 | - * Gateways should override this to declare support (or lack of support) for a feature. |
|
| 454 | - * For backward compatibility, gateways support 'products' by default, but nothing else. |
|
| 455 | - * |
|
| 456 | - * @param string $feature string The name of a feature to test support for. |
|
| 457 | - * @return bool True if the gateway supports the feature, false otherwise. |
|
| 458 | - * @since 1.0.19 |
|
| 459 | - */ |
|
| 460 | - public function supports( $feature ) { |
|
| 461 | - return getpaid_payment_gateway_supports( $this->id, $feature ); |
|
| 462 | - } |
|
| 463 | - |
|
| 464 | - /** |
|
| 465 | - * Returns the credit card form html. |
|
| 466 | - * |
|
| 467 | - * @param bool $save whether or not to display the save button. |
|
| 468 | - */ |
|
| 215 | + if ( ! is_bool( $sandbox ) ) { |
|
| 216 | + return $this->tokens; |
|
| 217 | + } |
|
| 218 | + |
|
| 219 | + // Filter tokens. |
|
| 220 | + $args = array( 'type' => $sandbox ? 'sandbox' : 'live' ); |
|
| 221 | + return wp_list_filter( $this->tokens, $args ); |
|
| 222 | + |
|
| 223 | + } |
|
| 224 | + |
|
| 225 | + /** |
|
| 226 | + * Saves a token for this gateway. |
|
| 227 | + * |
|
| 228 | + * @since 1.0.19 |
|
| 229 | + */ |
|
| 230 | + public function save_token( $token ) { |
|
| 231 | + |
|
| 232 | + $tokens = $this->get_tokens(); |
|
| 233 | + $tokens[] = $token; |
|
| 234 | + |
|
| 235 | + update_user_meta( get_current_user_id(), "getpaid_{$this->id}_tokens", $tokens ); |
|
| 236 | + |
|
| 237 | + $this->tokens = $tokens; |
|
| 238 | + |
|
| 239 | + } |
|
| 240 | + |
|
| 241 | + /** |
|
| 242 | + * Return the title for admin screens. |
|
| 243 | + * |
|
| 244 | + * @return string |
|
| 245 | + */ |
|
| 246 | + public function get_method_title() { |
|
| 247 | + return apply_filters( 'getpaid_gateway_method_title', $this->method_title, $this ); |
|
| 248 | + } |
|
| 249 | + |
|
| 250 | + /** |
|
| 251 | + * Return the description for admin screens. |
|
| 252 | + * |
|
| 253 | + * @return string |
|
| 254 | + */ |
|
| 255 | + public function get_method_description() { |
|
| 256 | + return apply_filters( 'getpaid_gateway_method_description', $this->method_description, $this ); |
|
| 257 | + } |
|
| 258 | + |
|
| 259 | + /** |
|
| 260 | + * Get the success url. |
|
| 261 | + * |
|
| 262 | + * @param WPInv_Invoice $invoice Invoice object. |
|
| 263 | + * @return string |
|
| 264 | + */ |
|
| 265 | + public function get_return_url( $invoice ) { |
|
| 266 | + |
|
| 267 | + // Payment success url |
|
| 268 | + $return_url = add_query_arg( |
|
| 269 | + array( |
|
| 270 | + 'payment-confirm' => $this->id, |
|
| 271 | + 'invoice_key' => $invoice->get_key(), |
|
| 272 | + 'utm_nooverride' => 1, |
|
| 273 | + ), |
|
| 274 | + wpinv_get_success_page_uri() |
|
| 275 | + ); |
|
| 276 | + |
|
| 277 | + return apply_filters( 'getpaid_gateway_success_url', $return_url, $invoice, $this ); |
|
| 278 | + } |
|
| 279 | + |
|
| 280 | + /** |
|
| 281 | + * Confirms payments when rendering the success page. |
|
| 282 | + * |
|
| 283 | + * @param string $content Success page content. |
|
| 284 | + * @return string |
|
| 285 | + */ |
|
| 286 | + public function confirm_payment( $content ) { |
|
| 287 | + |
|
| 288 | + // Retrieve the invoice. |
|
| 289 | + $invoice_id = getpaid_get_current_invoice_id(); |
|
| 290 | + $invoice = wpinv_get_invoice( $invoice_id ); |
|
| 291 | + |
|
| 292 | + // Ensure that it exists and that it is pending payment. |
|
| 293 | + if ( empty( $invoice_id ) || ! $invoice->needs_payment() ) { |
|
| 294 | + return $content; |
|
| 295 | + } |
|
| 296 | + |
|
| 297 | + // Can the user view this invoice?? |
|
| 298 | + if ( ! wpinv_user_can_view_invoice( $invoice ) ) { |
|
| 299 | + return $content; |
|
| 300 | + } |
|
| 301 | + |
|
| 302 | + // Show payment processing indicator. |
|
| 303 | + return wpinv_get_template_html( 'wpinv-payment-processing.php', compact( 'invoice' ) ); |
|
| 304 | + } |
|
| 305 | + |
|
| 306 | + /** |
|
| 307 | + * Processes ipns and marks payments as complete. |
|
| 308 | + * |
|
| 309 | + * @return void |
|
| 310 | + */ |
|
| 311 | + public function verify_ipn() {} |
|
| 312 | + |
|
| 313 | + /** |
|
| 314 | + * Processes invoice addons. |
|
| 315 | + * |
|
| 316 | + * @param WPInv_Invoice $invoice |
|
| 317 | + * @param GetPaid_Form_Item[] $items |
|
| 318 | + * @return WPInv_Invoice |
|
| 319 | + */ |
|
| 320 | + public function process_addons( $invoice, $items ) { |
|
| 321 | + |
|
| 322 | + } |
|
| 323 | + |
|
| 324 | + /** |
|
| 325 | + * Get a link to the transaction on the 3rd party gateway site (if applicable). |
|
| 326 | + * |
|
| 327 | + * @param string $transaction_url transaction url. |
|
| 328 | + * @param WPInv_Invoice $invoice Invoice object. |
|
| 329 | + * @return string transaction URL, or empty string. |
|
| 330 | + */ |
|
| 331 | + public function filter_transaction_url( $transaction_url, $invoice ) { |
|
| 332 | + |
|
| 333 | + $transaction_id = $invoice->get_transaction_id(); |
|
| 334 | + |
|
| 335 | + if ( ! empty( $this->view_transaction_url ) && ! empty( $transaction_id ) ) { |
|
| 336 | + $transaction_url = sprintf( $this->view_transaction_url, $transaction_id ); |
|
| 337 | + $replace = $this->is_sandbox( $invoice ) ? 'sandbox' : ''; |
|
| 338 | + $transaction_url = str_replace( '{sandbox}', $replace, $transaction_url ); |
|
| 339 | + } |
|
| 340 | + |
|
| 341 | + return $transaction_url; |
|
| 342 | + } |
|
| 343 | + |
|
| 344 | + /** |
|
| 345 | + * Get a link to the subscription on the 3rd party gateway site (if applicable). |
|
| 346 | + * |
|
| 347 | + * @param string $subscription_url transaction url. |
|
| 348 | + * @param WPInv_Subscription $subscription Subscription objectt. |
|
| 349 | + * @return string subscription URL, or empty string. |
|
| 350 | + */ |
|
| 351 | + public function generate_subscription_url( $subscription_url, $subscription ) { |
|
| 352 | + |
|
| 353 | + $profile_id = $subscription->get_profile_id(); |
|
| 354 | + |
|
| 355 | + if ( $this->id == $subscription->get_gateway() && ! empty( $this->view_subscription_url ) && ! empty( $profile_id ) ) { |
|
| 356 | + |
|
| 357 | + $subscription_url = sprintf( $this->view_subscription_url, $profile_id ); |
|
| 358 | + $replace = $this->is_sandbox( $subscription->get_parent_invoice() ) ? 'sandbox' : ''; |
|
| 359 | + $subscription_url = str_replace( '{sandbox}', $replace, $subscription_url ); |
|
| 360 | + |
|
| 361 | + } |
|
| 362 | + |
|
| 363 | + return $subscription_url; |
|
| 364 | + } |
|
| 365 | + |
|
| 366 | + /** |
|
| 367 | + * Check if the gateway is available for use. |
|
| 368 | + * |
|
| 369 | + * @return bool |
|
| 370 | + */ |
|
| 371 | + public function is_available() { |
|
| 372 | + return ! empty( $this->enabled ); |
|
| 373 | + } |
|
| 374 | + |
|
| 375 | + /** |
|
| 376 | + * Return the gateway's title. |
|
| 377 | + * |
|
| 378 | + * @return string |
|
| 379 | + */ |
|
| 380 | + public function get_title() { |
|
| 381 | + return apply_filters( 'getpaid_gateway_title', $this->title, $this ); |
|
| 382 | + } |
|
| 383 | + |
|
| 384 | + /** |
|
| 385 | + * Return the gateway's description. |
|
| 386 | + * |
|
| 387 | + * @return string |
|
| 388 | + */ |
|
| 389 | + public function get_description() { |
|
| 390 | + return apply_filters( 'getpaid_gateway_description', $this->description, $this ); |
|
| 391 | + } |
|
| 392 | + |
|
| 393 | + /** |
|
| 394 | + * Process Payment. |
|
| 395 | + * |
|
| 396 | + * |
|
| 397 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 398 | + * @param array $submission_data Posted checkout fields. |
|
| 399 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
| 400 | + * @return void |
|
| 401 | + */ |
|
| 402 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
| 403 | + // Process the payment then either redirect to the success page or the gateway. |
|
| 404 | + do_action( 'getpaid_process_invoice_payment_' . $this->id, $invoice, $submission_data, $submission ); |
|
| 405 | + } |
|
| 406 | + |
|
| 407 | + /** |
|
| 408 | + * Process refund. |
|
| 409 | + * |
|
| 410 | + * If the gateway declares 'refunds' support, this will allow it to refund. |
|
| 411 | + * a passed in amount. |
|
| 412 | + * |
|
| 413 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 414 | + * @param float $amount Refund amount. |
|
| 415 | + * @param string $reason Refund reason. |
|
| 416 | + * @return WP_Error|bool True or false based on success, or a WP_Error object. |
|
| 417 | + */ |
|
| 418 | + public function process_refund( $invoice, $amount = null, $reason = '' ) { |
|
| 419 | + return apply_filters( 'getpaid_process_invoice_refund_' . $this->id, false, $invoice, $amount, $reason ); |
|
| 420 | + } |
|
| 421 | + |
|
| 422 | + /** |
|
| 423 | + * Displays the payment fields, credit cards etc. |
|
| 424 | + * |
|
| 425 | + * @param int $invoice_id 0 or invoice id. |
|
| 426 | + * @param GetPaid_Payment_Form $form Current payment form. |
|
| 427 | + */ |
|
| 428 | + public function payment_fields( $invoice_id, $form ) { |
|
| 429 | + do_action( 'getpaid_getpaid_gateway_payment_fields_' . $this->id, $invoice_id, $form ); |
|
| 430 | + } |
|
| 431 | + |
|
| 432 | + /** |
|
| 433 | + * Filters the gateway settings. |
|
| 434 | + * |
|
| 435 | + * @param array $admin_settings |
|
| 436 | + */ |
|
| 437 | + public function admin_settings( $admin_settings ) { |
|
| 438 | + return $admin_settings; |
|
| 439 | + } |
|
| 440 | + |
|
| 441 | + /** |
|
| 442 | + * Retrieves the value of a gateway setting. |
|
| 443 | + * |
|
| 444 | + * @param string $option |
|
| 445 | + */ |
|
| 446 | + public function get_option( $option, $default = false ) { |
|
| 447 | + return wpinv_get_option( $this->id . '_' . $option, $default ); |
|
| 448 | + } |
|
| 449 | + |
|
| 450 | + /** |
|
| 451 | + * Check if a gateway supports a given feature. |
|
| 452 | + * |
|
| 453 | + * Gateways should override this to declare support (or lack of support) for a feature. |
|
| 454 | + * For backward compatibility, gateways support 'products' by default, but nothing else. |
|
| 455 | + * |
|
| 456 | + * @param string $feature string The name of a feature to test support for. |
|
| 457 | + * @return bool True if the gateway supports the feature, false otherwise. |
|
| 458 | + * @since 1.0.19 |
|
| 459 | + */ |
|
| 460 | + public function supports( $feature ) { |
|
| 461 | + return getpaid_payment_gateway_supports( $this->id, $feature ); |
|
| 462 | + } |
|
| 463 | + |
|
| 464 | + /** |
|
| 465 | + * Returns the credit card form html. |
|
| 466 | + * |
|
| 467 | + * @param bool $save whether or not to display the save button. |
|
| 468 | + */ |
|
| 469 | 469 | public function get_cc_form( $save = false ) { |
| 470 | 470 | |
| 471 | - ob_start(); |
|
| 471 | + ob_start(); |
|
| 472 | 472 | |
| 473 | 473 | $id_prefix = esc_attr( uniqid( $this->id ) ); |
| 474 | 474 | |
@@ -528,7 +528,7 @@ discard block |
||
| 528 | 528 | |
| 529 | 529 | <?php |
| 530 | 530 | foreach ( $months as $key => $month ) { |
| 531 | - echo "<option value='" . esc_attr( $key ) . "'>" . esc_html( $month ) . "</option>" . PHP_EOL; |
|
| 531 | + echo "<option value='" . esc_attr( $key ) . "'>" . esc_html( $month ) . "</option>" . PHP_EOL; |
|
| 532 | 532 | } |
| 533 | 533 | ?> |
| 534 | 534 | |
@@ -541,7 +541,7 @@ discard block |
||
| 541 | 541 | |
| 542 | 542 | <?php |
| 543 | 543 | foreach ( $years as $key => $year ) { |
| 544 | - echo "<option value='" . esc_attr( $key ) . "'>" . esc_html( $year ) . "</option>" . PHP_EOL; |
|
| 544 | + echo "<option value='" . esc_attr( $key ) . "'>" . esc_html( $year ) . "</option>" . PHP_EOL; |
|
| 545 | 545 | } |
| 546 | 546 | ?> |
| 547 | 547 | |
@@ -559,13 +559,13 @@ discard block |
||
| 559 | 559 | 'name' => $this->id . '[cc_cvv2]', |
| 560 | 560 | 'id' => "$id_prefix-cc-cvv2", |
| 561 | 561 | 'label' => __( 'CCV', 'invoicing' ), |
| 562 | - 'label_type' => 'vertical', |
|
| 563 | - 'class' => 'form-control-sm', |
|
| 564 | - 'extra_attributes' => array( |
|
| 565 | - 'autocomplete' => 'cc-csc', |
|
| 566 | - ), |
|
| 562 | + 'label_type' => 'vertical', |
|
| 563 | + 'class' => 'form-control-sm', |
|
| 564 | + 'extra_attributes' => array( |
|
| 565 | + 'autocomplete' => 'cc-csc', |
|
| 566 | + ), |
|
| 567 | 567 | ), |
| 568 | - true |
|
| 568 | + true |
|
| 569 | 569 | ); |
| 570 | 570 | ?> |
| 571 | 571 | </div> |
@@ -574,192 +574,192 @@ discard block |
||
| 574 | 574 | |
| 575 | 575 | <?php |
| 576 | 576 | |
| 577 | - if ( $save ) { |
|
| 578 | - $this->save_payment_method_checkbox(); |
|
| 579 | - } |
|
| 577 | + if ( $save ) { |
|
| 578 | + $this->save_payment_method_checkbox(); |
|
| 579 | + } |
|
| 580 | 580 | |
| 581 | - ?> |
|
| 581 | + ?> |
|
| 582 | 582 | </div> |
| 583 | 583 | |
| 584 | 584 | </div> |
| 585 | 585 | <?php |
| 586 | 586 | |
| 587 | - return ob_get_clean(); |
|
| 587 | + return ob_get_clean(); |
|
| 588 | + |
|
| 589 | + } |
|
| 590 | + |
|
| 591 | + /** |
|
| 592 | + * Displays a new payment method entry form. |
|
| 593 | + * |
|
| 594 | + * @since 1.0.19 |
|
| 595 | + */ |
|
| 596 | + public function new_payment_method_entry( $form ) { |
|
| 597 | + echo "<div class='getpaid-new-payment-method-form' style='display:none;'> " . wp_kses( $form, getpaid_allowed_html() ) . " . </div>"; |
|
| 598 | + } |
|
| 599 | + |
|
| 600 | + /** |
|
| 601 | + * Grab and display our saved payment methods. |
|
| 602 | + * |
|
| 603 | + * @since 1.0.19 |
|
| 604 | + */ |
|
| 605 | + public function saved_payment_methods() { |
|
| 606 | + echo '<ul class="getpaid-saved-payment-methods list-unstyled m-0 mt-2" data-count="' . esc_attr( count( $this->get_tokens( $this->is_sandbox() ) ) ) . '">'; |
|
| 607 | + |
|
| 608 | + foreach ( $this->get_tokens( $this->is_sandbox() ) as $token ) { |
|
| 609 | + $this->get_saved_payment_method_option_html( $token ); |
|
| 610 | + } |
|
| 611 | + |
|
| 612 | + $this->get_new_payment_method_option_html(); |
|
| 613 | + echo '</ul>'; |
|
| 588 | 614 | |
| 589 | 615 | } |
| 590 | 616 | |
| 591 | - /** |
|
| 592 | - * Displays a new payment method entry form. |
|
| 593 | - * |
|
| 594 | - * @since 1.0.19 |
|
| 595 | - */ |
|
| 596 | - public function new_payment_method_entry( $form ) { |
|
| 597 | - echo "<div class='getpaid-new-payment-method-form' style='display:none;'> " . wp_kses( $form, getpaid_allowed_html() ) . " . </div>"; |
|
| 598 | - } |
|
| 599 | - |
|
| 600 | - /** |
|
| 601 | - * Grab and display our saved payment methods. |
|
| 602 | - * |
|
| 603 | - * @since 1.0.19 |
|
| 604 | - */ |
|
| 605 | - public function saved_payment_methods() { |
|
| 606 | - echo '<ul class="getpaid-saved-payment-methods list-unstyled m-0 mt-2" data-count="' . esc_attr( count( $this->get_tokens( $this->is_sandbox() ) ) ) . '">'; |
|
| 607 | - |
|
| 608 | - foreach ( $this->get_tokens( $this->is_sandbox() ) as $token ) { |
|
| 609 | - $this->get_saved_payment_method_option_html( $token ); |
|
| 610 | - } |
|
| 611 | - |
|
| 612 | - $this->get_new_payment_method_option_html(); |
|
| 613 | - echo '</ul>'; |
|
| 614 | - |
|
| 615 | - } |
|
| 616 | - |
|
| 617 | - /** |
|
| 618 | - * Gets saved payment method HTML from a token. |
|
| 619 | - * |
|
| 620 | - * @since 1.0.19 |
|
| 621 | - * @param array $token Payment Token. |
|
| 622 | - * @return string Generated payment method HTML |
|
| 623 | - */ |
|
| 624 | - public function get_saved_payment_method_option_html( $token ) { |
|
| 625 | - |
|
| 626 | - printf( |
|
| 627 | - '<li class="getpaid-payment-method form-group"> |
|
| 617 | + /** |
|
| 618 | + * Gets saved payment method HTML from a token. |
|
| 619 | + * |
|
| 620 | + * @since 1.0.19 |
|
| 621 | + * @param array $token Payment Token. |
|
| 622 | + * @return string Generated payment method HTML |
|
| 623 | + */ |
|
| 624 | + public function get_saved_payment_method_option_html( $token ) { |
|
| 625 | + |
|
| 626 | + printf( |
|
| 627 | + '<li class="getpaid-payment-method form-group"> |
|
| 628 | 628 | <label> |
| 629 | 629 | <input name="getpaid-%1$s-payment-method" type="radio" value="%2$s" data-currency="%5$s" style="width:auto;" class="getpaid-saved-payment-method-token-input" %4$s /> |
| 630 | 630 | <span>%3$s</span> |
| 631 | 631 | </label> |
| 632 | 632 | </li>', |
| 633 | - esc_attr( $this->id ), |
|
| 634 | - esc_attr( $token['id'] ), |
|
| 635 | - esc_html( $token['name'] ), |
|
| 636 | - checked( empty( $token['default'] ), false, false ), |
|
| 637 | - empty( $token['currency'] ) ? 'none' : esc_attr( $token['currency'] ) |
|
| 638 | - ); |
|
| 639 | - |
|
| 640 | - } |
|
| 641 | - |
|
| 642 | - /** |
|
| 643 | - * Displays a radio button for entering a new payment method (new CC details) instead of using a saved method. |
|
| 644 | - * |
|
| 645 | - * @since 1.0.19 |
|
| 646 | - */ |
|
| 647 | - public function get_new_payment_method_option_html() { |
|
| 648 | - |
|
| 649 | - $label = apply_filters( 'getpaid_new_payment_method_label', $this->new_method_label ? $this->new_method_label : __( 'Use a new payment method', 'invoicing' ), $this ); |
|
| 650 | - |
|
| 651 | - printf( |
|
| 652 | - '<li class="getpaid-new-payment-method"> |
|
| 633 | + esc_attr( $this->id ), |
|
| 634 | + esc_attr( $token['id'] ), |
|
| 635 | + esc_html( $token['name'] ), |
|
| 636 | + checked( empty( $token['default'] ), false, false ), |
|
| 637 | + empty( $token['currency'] ) ? 'none' : esc_attr( $token['currency'] ) |
|
| 638 | + ); |
|
| 639 | + |
|
| 640 | + } |
|
| 641 | + |
|
| 642 | + /** |
|
| 643 | + * Displays a radio button for entering a new payment method (new CC details) instead of using a saved method. |
|
| 644 | + * |
|
| 645 | + * @since 1.0.19 |
|
| 646 | + */ |
|
| 647 | + public function get_new_payment_method_option_html() { |
|
| 648 | + |
|
| 649 | + $label = apply_filters( 'getpaid_new_payment_method_label', $this->new_method_label ? $this->new_method_label : __( 'Use a new payment method', 'invoicing' ), $this ); |
|
| 650 | + |
|
| 651 | + printf( |
|
| 652 | + '<li class="getpaid-new-payment-method"> |
|
| 653 | 653 | <label> |
| 654 | 654 | <input name="getpaid-%1$s-payment-method" type="radio" data-currency="none" value="new" style="width:auto;" /> |
| 655 | 655 | <span>%2$s</span> |
| 656 | 656 | </label> |
| 657 | 657 | </li>', |
| 658 | - esc_attr( $this->id ), |
|
| 659 | - esc_html( $label ) |
|
| 660 | - ); |
|
| 661 | - |
|
| 662 | - } |
|
| 663 | - |
|
| 664 | - /** |
|
| 665 | - * Outputs a checkbox for saving a new payment method to the database. |
|
| 666 | - * |
|
| 667 | - * @since 1.0.19 |
|
| 668 | - */ |
|
| 669 | - public function save_payment_method_checkbox() { |
|
| 670 | - |
|
| 671 | - aui()->input( |
|
| 672 | - array( |
|
| 673 | - 'type' => 'checkbox', |
|
| 674 | - 'name' => esc_attr( "getpaid-$this->id-new-payment-method" ), |
|
| 675 | - 'id' => esc_attr( uniqid( $this->id ) ), |
|
| 676 | - 'required' => false, |
|
| 677 | - 'label' => esc_html__( 'Save payment method', 'invoicing' ), |
|
| 678 | - 'value' => 'true', |
|
| 679 | - 'checked' => true, |
|
| 680 | - 'wrap_class' => 'getpaid-save-payment-method pt-1 pb-1', |
|
| 681 | - ), |
|
| 682 | - true |
|
| 683 | - ); |
|
| 684 | - |
|
| 685 | - } |
|
| 686 | - |
|
| 687 | - /** |
|
| 688 | - * Registers the gateway. |
|
| 689 | - * |
|
| 690 | - * @return array |
|
| 691 | - */ |
|
| 692 | - public function register_gateway( $gateways ) { |
|
| 693 | - |
|
| 694 | - $gateways[ $this->id ] = array( |
|
| 695 | - |
|
| 696 | - 'admin_label' => $this->method_title, |
|
| 658 | + esc_attr( $this->id ), |
|
| 659 | + esc_html( $label ) |
|
| 660 | + ); |
|
| 661 | + |
|
| 662 | + } |
|
| 663 | + |
|
| 664 | + /** |
|
| 665 | + * Outputs a checkbox for saving a new payment method to the database. |
|
| 666 | + * |
|
| 667 | + * @since 1.0.19 |
|
| 668 | + */ |
|
| 669 | + public function save_payment_method_checkbox() { |
|
| 670 | + |
|
| 671 | + aui()->input( |
|
| 672 | + array( |
|
| 673 | + 'type' => 'checkbox', |
|
| 674 | + 'name' => esc_attr( "getpaid-$this->id-new-payment-method" ), |
|
| 675 | + 'id' => esc_attr( uniqid( $this->id ) ), |
|
| 676 | + 'required' => false, |
|
| 677 | + 'label' => esc_html__( 'Save payment method', 'invoicing' ), |
|
| 678 | + 'value' => 'true', |
|
| 679 | + 'checked' => true, |
|
| 680 | + 'wrap_class' => 'getpaid-save-payment-method pt-1 pb-1', |
|
| 681 | + ), |
|
| 682 | + true |
|
| 683 | + ); |
|
| 684 | + |
|
| 685 | + } |
|
| 686 | + |
|
| 687 | + /** |
|
| 688 | + * Registers the gateway. |
|
| 689 | + * |
|
| 690 | + * @return array |
|
| 691 | + */ |
|
| 692 | + public function register_gateway( $gateways ) { |
|
| 693 | + |
|
| 694 | + $gateways[ $this->id ] = array( |
|
| 695 | + |
|
| 696 | + 'admin_label' => $this->method_title, |
|
| 697 | 697 | 'checkout_label' => $this->title, |
| 698 | - 'ordering' => $this->order, |
|
| 698 | + 'ordering' => $this->order, |
|
| 699 | 699 | |
| 700 | - ); |
|
| 700 | + ); |
|
| 701 | 701 | |
| 702 | - return $gateways; |
|
| 702 | + return $gateways; |
|
| 703 | 703 | |
| 704 | - } |
|
| 704 | + } |
|
| 705 | 705 | |
| 706 | - /** |
|
| 707 | - * Checks whether or not this is a sandbox request. |
|
| 708 | - * |
|
| 709 | - * @param WPInv_Invoice|null $invoice Invoice object or null. |
|
| 710 | - * @return bool |
|
| 711 | - */ |
|
| 712 | - public function is_sandbox( $invoice = null ) { |
|
| 706 | + /** |
|
| 707 | + * Checks whether or not this is a sandbox request. |
|
| 708 | + * |
|
| 709 | + * @param WPInv_Invoice|null $invoice Invoice object or null. |
|
| 710 | + * @return bool |
|
| 711 | + */ |
|
| 712 | + public function is_sandbox( $invoice = null ) { |
|
| 713 | 713 | |
| 714 | - if ( ! empty( $invoice ) && ! $invoice->needs_payment() ) { |
|
| 715 | - return $invoice->get_mode() == 'test'; |
|
| 716 | - } |
|
| 714 | + if ( ! empty( $invoice ) && ! $invoice->needs_payment() ) { |
|
| 715 | + return $invoice->get_mode() == 'test'; |
|
| 716 | + } |
|
| 717 | 717 | |
| 718 | - return wpinv_is_test_mode( $this->id ); |
|
| 718 | + return wpinv_is_test_mode( $this->id ); |
|
| 719 | 719 | |
| 720 | - } |
|
| 720 | + } |
|
| 721 | 721 | |
| 722 | - /** |
|
| 723 | - * Renames the checkout button |
|
| 724 | - * |
|
| 725 | - * @return string |
|
| 726 | - */ |
|
| 727 | - public function rename_checkout_button() { |
|
| 728 | - return $this->checkout_button_text; |
|
| 729 | - } |
|
| 722 | + /** |
|
| 723 | + * Renames the checkout button |
|
| 724 | + * |
|
| 725 | + * @return string |
|
| 726 | + */ |
|
| 727 | + public function rename_checkout_button() { |
|
| 728 | + return $this->checkout_button_text; |
|
| 729 | + } |
|
| 730 | 730 | |
| 731 | - /** |
|
| 732 | - * Validate gateway currency |
|
| 733 | - * |
|
| 734 | - * @return bool |
|
| 735 | - */ |
|
| 736 | - public function validate_currency( $validation, $currency ) { |
|
| 731 | + /** |
|
| 732 | + * Validate gateway currency |
|
| 733 | + * |
|
| 734 | + * @return bool |
|
| 735 | + */ |
|
| 736 | + public function validate_currency( $validation, $currency ) { |
|
| 737 | 737 | |
| 738 | - // Required currencies. |
|
| 739 | - if ( ! empty( $this->currencies ) && ! in_array( $currency, $this->currencies ) ) { |
|
| 740 | - return false; |
|
| 741 | - } |
|
| 738 | + // Required currencies. |
|
| 739 | + if ( ! empty( $this->currencies ) && ! in_array( $currency, $this->currencies ) ) { |
|
| 740 | + return false; |
|
| 741 | + } |
|
| 742 | 742 | |
| 743 | - // Excluded currencies. |
|
| 744 | - if ( ! empty( $this->exclude_currencies ) && in_array( $currency, $this->exclude_currencies ) ) { |
|
| 745 | - return false; |
|
| 746 | - } |
|
| 743 | + // Excluded currencies. |
|
| 744 | + if ( ! empty( $this->exclude_currencies ) && in_array( $currency, $this->exclude_currencies ) ) { |
|
| 745 | + return false; |
|
| 746 | + } |
|
| 747 | 747 | |
| 748 | - return $validation; |
|
| 749 | - } |
|
| 748 | + return $validation; |
|
| 749 | + } |
|
| 750 | 750 | |
| 751 | - /** |
|
| 752 | - * Displays an error |
|
| 753 | - * |
|
| 754 | - */ |
|
| 755 | - public function show_error( $code, $message, $type ) { |
|
| 751 | + /** |
|
| 752 | + * Displays an error |
|
| 753 | + * |
|
| 754 | + */ |
|
| 755 | + public function show_error( $code, $message, $type ) { |
|
| 756 | 756 | |
| 757 | - if ( is_admin() ) { |
|
| 758 | - getpaid_admin()->{"show_$type"}( $message ); |
|
| 759 | - } |
|
| 757 | + if ( is_admin() ) { |
|
| 758 | + getpaid_admin()->{"show_$type"}( $message ); |
|
| 759 | + } |
|
| 760 | 760 | |
| 761 | - wpinv_set_error( $code, $message, $type ); |
|
| 761 | + wpinv_set_error( $code, $message, $type ); |
|
| 762 | 762 | |
| 763 | - } |
|
| 763 | + } |
|
| 764 | 764 | |
| 765 | 765 | } |
@@ -12,49 +12,49 @@ discard block |
||
| 12 | 12 | */ |
| 13 | 13 | class GetPaid_Reports { |
| 14 | 14 | |
| 15 | - /** |
|
| 16 | - * Class constructor. |
|
| 17 | - * |
|
| 18 | - */ |
|
| 19 | - public function __construct() { |
|
| 20 | - add_action( 'admin_menu', array( $this, 'register_reports_page' ), 20 ); |
|
| 21 | - add_action( 'wpinv_reports_tab_reports', array( $this, 'display_reports_tab' ) ); |
|
| 22 | - add_action( 'wpinv_reports_tab_export', array( $this, 'display_exports_tab' ) ); |
|
| 23 | - add_action( 'getpaid_authenticated_admin_action_download_graph', array( $this, 'download_graph' ) ); |
|
| 24 | - add_action( 'getpaid_authenticated_admin_action_export_invoices', array( $this, 'export_invoices' ) ); |
|
| 25 | - |
|
| 26 | - } |
|
| 27 | - |
|
| 28 | - /** |
|
| 29 | - * Registers the reports page. |
|
| 30 | - * |
|
| 31 | - */ |
|
| 32 | - public function register_reports_page() { |
|
| 33 | - |
|
| 34 | - add_submenu_page( |
|
| 15 | + /** |
|
| 16 | + * Class constructor. |
|
| 17 | + * |
|
| 18 | + */ |
|
| 19 | + public function __construct() { |
|
| 20 | + add_action( 'admin_menu', array( $this, 'register_reports_page' ), 20 ); |
|
| 21 | + add_action( 'wpinv_reports_tab_reports', array( $this, 'display_reports_tab' ) ); |
|
| 22 | + add_action( 'wpinv_reports_tab_export', array( $this, 'display_exports_tab' ) ); |
|
| 23 | + add_action( 'getpaid_authenticated_admin_action_download_graph', array( $this, 'download_graph' ) ); |
|
| 24 | + add_action( 'getpaid_authenticated_admin_action_export_invoices', array( $this, 'export_invoices' ) ); |
|
| 25 | + |
|
| 26 | + } |
|
| 27 | + |
|
| 28 | + /** |
|
| 29 | + * Registers the reports page. |
|
| 30 | + * |
|
| 31 | + */ |
|
| 32 | + public function register_reports_page() { |
|
| 33 | + |
|
| 34 | + add_submenu_page( |
|
| 35 | 35 | 'wpinv', |
| 36 | 36 | __( 'Reports', 'invoicing' ), |
| 37 | 37 | __( 'Reports', 'invoicing' ), |
| 38 | 38 | wpinv_get_capability(), |
| 39 | 39 | 'wpinv-reports', |
| 40 | 40 | array( $this, 'display_reports_page' ) |
| 41 | - ); |
|
| 41 | + ); |
|
| 42 | 42 | |
| 43 | - } |
|
| 43 | + } |
|
| 44 | 44 | |
| 45 | - /** |
|
| 46 | - * Displays the reports page. |
|
| 47 | - * |
|
| 48 | - */ |
|
| 49 | - public function display_reports_page() { |
|
| 45 | + /** |
|
| 46 | + * Displays the reports page. |
|
| 47 | + * |
|
| 48 | + */ |
|
| 49 | + public function display_reports_page() { |
|
| 50 | 50 | |
| 51 | - // Prepare variables. |
|
| 52 | - $tabs = $this->get_tabs(); |
|
| 53 | - $current_tab = isset( $_GET['tab'] ) ? sanitize_text_field( $_GET['tab'] ) : 'reports'; |
|
| 54 | - $current_tab = array_key_exists( $current_tab, $tabs ) ? $current_tab : 'reports'; |
|
| 51 | + // Prepare variables. |
|
| 52 | + $tabs = $this->get_tabs(); |
|
| 53 | + $current_tab = isset( $_GET['tab'] ) ? sanitize_text_field( $_GET['tab'] ) : 'reports'; |
|
| 54 | + $current_tab = array_key_exists( $current_tab, $tabs ) ? $current_tab : 'reports'; |
|
| 55 | 55 | |
| 56 | - // Display the current tab. |
|
| 57 | - ?> |
|
| 56 | + // Display the current tab. |
|
| 57 | + ?> |
|
| 58 | 58 | |
| 59 | 59 | <div class="wrap"> |
| 60 | 60 | |
@@ -63,19 +63,19 @@ discard block |
||
| 63 | 63 | <nav class="nav-tab-wrapper"> |
| 64 | 64 | |
| 65 | 65 | <?php |
| 66 | - foreach ( $tabs as $key => $label ) { |
|
| 66 | + foreach ( $tabs as $key => $label ) { |
|
| 67 | 67 | |
| 68 | - $key = sanitize_key( $key ); |
|
| 69 | - $label = esc_html( $label ); |
|
| 70 | - $class = $key == $current_tab ? 'nav-tab nav-tab-active' : 'nav-tab'; |
|
| 71 | - $url = esc_url( |
|
| 68 | + $key = sanitize_key( $key ); |
|
| 69 | + $label = esc_html( $label ); |
|
| 70 | + $class = $key == $current_tab ? 'nav-tab nav-tab-active' : 'nav-tab'; |
|
| 71 | + $url = esc_url( |
|
| 72 | 72 | add_query_arg( 'tab', $key, admin_url( 'admin.php?page=wpinv-reports' ) ) |
| 73 | 73 | ); |
| 74 | 74 | |
| 75 | - echo wp_kses_post( "\n\t\t\t<a href='$url' class='" . $class . "'>$label</a>" ); |
|
| 75 | + echo wp_kses_post( "\n\t\t\t<a href='$url' class='" . $class . "'>$label</a>" ); |
|
| 76 | 76 | |
| 77 | - } |
|
| 78 | - ?> |
|
| 77 | + } |
|
| 78 | + ?> |
|
| 79 | 79 | |
| 80 | 80 | </nav> |
| 81 | 81 | |
@@ -86,82 +86,82 @@ discard block |
||
| 86 | 86 | </div> |
| 87 | 87 | <?php |
| 88 | 88 | |
| 89 | - // Wordfence loads an unsupported version of chart js on our page. |
|
| 90 | - wp_deregister_style( 'chart-js' ); |
|
| 91 | - wp_deregister_script( 'chart-js' ); |
|
| 92 | - wp_enqueue_script( 'chart-js', WPINV_PLUGIN_URL . 'assets/js/chart.min.js', array( 'jquery' ), '3.7.1', true ); |
|
| 89 | + // Wordfence loads an unsupported version of chart js on our page. |
|
| 90 | + wp_deregister_style( 'chart-js' ); |
|
| 91 | + wp_deregister_script( 'chart-js' ); |
|
| 92 | + wp_enqueue_script( 'chart-js', WPINV_PLUGIN_URL . 'assets/js/chart.min.js', array( 'jquery' ), '3.7.1', true ); |
|
| 93 | 93 | |
| 94 | - } |
|
| 94 | + } |
|
| 95 | 95 | |
| 96 | - /** |
|
| 97 | - * Retrieves reports page tabs. |
|
| 98 | - * |
|
| 99 | - * @return array |
|
| 100 | - */ |
|
| 101 | - public function get_tabs() { |
|
| 96 | + /** |
|
| 97 | + * Retrieves reports page tabs. |
|
| 98 | + * |
|
| 99 | + * @return array |
|
| 100 | + */ |
|
| 101 | + public function get_tabs() { |
|
| 102 | 102 | |
| 103 | - $tabs = array( |
|
| 104 | - 'reports' => __( 'Reports', 'invoicing' ), |
|
| 105 | - 'export' => __( 'Export', 'invoicing' ), |
|
| 106 | - ); |
|
| 103 | + $tabs = array( |
|
| 104 | + 'reports' => __( 'Reports', 'invoicing' ), |
|
| 105 | + 'export' => __( 'Export', 'invoicing' ), |
|
| 106 | + ); |
|
| 107 | 107 | |
| 108 | - return apply_filters( 'getpaid_report_tabs', $tabs ); |
|
| 109 | - } |
|
| 108 | + return apply_filters( 'getpaid_report_tabs', $tabs ); |
|
| 109 | + } |
|
| 110 | 110 | |
| 111 | - /** |
|
| 112 | - * Displays the reports tab. |
|
| 113 | - * |
|
| 114 | - */ |
|
| 115 | - public function display_reports_tab() { |
|
| 111 | + /** |
|
| 112 | + * Displays the reports tab. |
|
| 113 | + * |
|
| 114 | + */ |
|
| 115 | + public function display_reports_tab() { |
|
| 116 | 116 | |
| 117 | - $reports = new GetPaid_Reports_Report(); |
|
| 118 | - $reports->display(); |
|
| 117 | + $reports = new GetPaid_Reports_Report(); |
|
| 118 | + $reports->display(); |
|
| 119 | 119 | |
| 120 | - } |
|
| 120 | + } |
|
| 121 | 121 | |
| 122 | - /** |
|
| 123 | - * Displays the exports tab. |
|
| 124 | - * |
|
| 125 | - */ |
|
| 126 | - public function display_exports_tab() { |
|
| 122 | + /** |
|
| 123 | + * Displays the exports tab. |
|
| 124 | + * |
|
| 125 | + */ |
|
| 126 | + public function display_exports_tab() { |
|
| 127 | 127 | |
| 128 | - $exports = new GetPaid_Reports_Export(); |
|
| 129 | - $exports->display(); |
|
| 128 | + $exports = new GetPaid_Reports_Export(); |
|
| 129 | + $exports->display(); |
|
| 130 | 130 | |
| 131 | - } |
|
| 131 | + } |
|
| 132 | 132 | |
| 133 | - /** |
|
| 134 | - * Donwnloads a graph. |
|
| 135 | - * |
|
| 136 | - * @param array $args |
|
| 137 | - */ |
|
| 138 | - public function download_graph( $args ) { |
|
| 133 | + /** |
|
| 134 | + * Donwnloads a graph. |
|
| 135 | + * |
|
| 136 | + * @param array $args |
|
| 137 | + */ |
|
| 138 | + public function download_graph( $args ) { |
|
| 139 | 139 | |
| 140 | - if ( ! empty( $args['graph'] ) ) { |
|
| 141 | - $downloader = new GetPaid_Graph_Downloader(); |
|
| 142 | - $downloader->download( $args['graph'] ); |
|
| 143 | - } |
|
| 140 | + if ( ! empty( $args['graph'] ) ) { |
|
| 141 | + $downloader = new GetPaid_Graph_Downloader(); |
|
| 142 | + $downloader->download( $args['graph'] ); |
|
| 143 | + } |
|
| 144 | 144 | |
| 145 | - } |
|
| 145 | + } |
|
| 146 | 146 | |
| 147 | - /** |
|
| 148 | - * Exports invoices. |
|
| 149 | - * |
|
| 150 | - * @param array $args |
|
| 151 | - */ |
|
| 152 | - public function export_invoices( $args ) { |
|
| 147 | + /** |
|
| 148 | + * Exports invoices. |
|
| 149 | + * |
|
| 150 | + * @param array $args |
|
| 151 | + */ |
|
| 152 | + public function export_invoices( $args ) { |
|
| 153 | 153 | |
| 154 | - if ( ! empty( $args['post_type'] ) ) { |
|
| 154 | + if ( ! empty( $args['post_type'] ) ) { |
|
| 155 | 155 | |
| 156 | - if ( 'subscriptions' === $args['post_type'] ) { |
|
| 157 | - $downloader = new GetPaid_Subscription_Exporter(); |
|
| 158 | - } else { |
|
| 159 | - $downloader = new GetPaid_Invoice_Exporter(); |
|
| 160 | - } |
|
| 156 | + if ( 'subscriptions' === $args['post_type'] ) { |
|
| 157 | + $downloader = new GetPaid_Subscription_Exporter(); |
|
| 158 | + } else { |
|
| 159 | + $downloader = new GetPaid_Invoice_Exporter(); |
|
| 160 | + } |
|
| 161 | 161 | |
| 162 | - $downloader->export( $args['post_type'], $args ); |
|
| 163 | - } |
|
| 162 | + $downloader->export( $args['post_type'], $args ); |
|
| 163 | + } |
|
| 164 | 164 | |
| 165 | - } |
|
| 165 | + } |
|
| 166 | 166 | |
| 167 | 167 | } |