@@ -195,13 +195,13 @@ discard block |
||
| 195 | 195 | $name = isset( $option['name'] ) ? $option['name'] : ''; |
| 196 | 196 | $cb = "wpinv_{$option['type']}_callback"; |
| 197 | 197 | $section = "wpinv_settings_{$tab}_$section"; |
| 198 | - $is_wizzard = is_admin() && isset( $_GET['page'] ) && 'gp-setup' == $_GET['page']; |
|
| 198 | + $is_wizzard = is_admin() && isset( $_GET['page'] ) && 'gp-setup' == $_GET['page']; |
|
| 199 | 199 | |
| 200 | - if ( isset( $option['desc'] ) && ( ! $is_wizzard && ! empty( $option['help-tip'] ) ) ) { |
|
| 201 | - $tip = wpinv_clean( $option['desc'] ); |
|
| 202 | - $name .= "<span class='dashicons dashicons-editor-help wpi-help-tip' title='$tip'></span>"; |
|
| 203 | - unset( $option['desc'] ); |
|
| 204 | - } |
|
| 200 | + if ( isset( $option['desc'] ) && ( ! $is_wizzard && ! empty( $option['help-tip'] ) ) ) { |
|
| 201 | + $tip = wpinv_clean( $option['desc'] ); |
|
| 202 | + $name .= "<span class='dashicons dashicons-editor-help wpi-help-tip' title='$tip'></span>"; |
|
| 203 | + unset( $option['desc'] ); |
|
| 204 | + } |
|
| 205 | 205 | |
| 206 | 206 | // Loop through all tabs. |
| 207 | 207 | add_settings_field( |
@@ -228,9 +228,9 @@ discard block |
||
| 228 | 228 | 'faux' => isset( $option['faux'] ) ? $option['faux'] : false, |
| 229 | 229 | 'onchange' => isset( $option['onchange'] ) ? $option['onchange'] : '', |
| 230 | 230 | 'custom' => isset( $option['custom'] ) ? $option['custom'] : '', |
| 231 | - 'default_content' => isset( $option['default_content'] ) ? $option['default_content'] : '', |
|
| 232 | - 'class' => isset( $option['class'] ) ? $option['class'] : '', |
|
| 233 | - 'style' => isset( $option['style'] ) ? $option['style'] : '', |
|
| 231 | + 'default_content' => isset( $option['default_content'] ) ? $option['default_content'] : '', |
|
| 232 | + 'class' => isset( $option['class'] ) ? $option['class'] : '', |
|
| 233 | + 'style' => isset( $option['style'] ) ? $option['style'] : '', |
|
| 234 | 234 | 'cols' => isset( $option['cols'] ) && (int) $option['cols'] > 0 ? (int) $option['cols'] : 50, |
| 235 | 235 | 'rows' => isset( $option['rows'] ) && (int) $option['rows'] > 0 ? (int) $option['rows'] : 5, |
| 236 | 236 | ) |
@@ -244,7 +244,7 @@ discard block |
||
| 244 | 244 | * @return array |
| 245 | 245 | */ |
| 246 | 246 | function wpinv_get_registered_settings() { |
| 247 | - return array_filter( apply_filters( 'wpinv_registered_settings', wpinv_get_data( 'admin-settings' ) ) ); |
|
| 247 | + return array_filter( apply_filters( 'wpinv_registered_settings', wpinv_get_data( 'admin-settings' ) ) ); |
|
| 248 | 248 | } |
| 249 | 249 | |
| 250 | 250 | /** |
@@ -263,18 +263,18 @@ discard block |
||
| 263 | 263 | */ |
| 264 | 264 | function wpinv_settings_sanitize( $input = array() ) { |
| 265 | 265 | |
| 266 | - $wpinv_options = wpinv_get_options(); |
|
| 267 | - $raw_referrer = wp_get_raw_referer(); |
|
| 266 | + $wpinv_options = wpinv_get_options(); |
|
| 267 | + $raw_referrer = wp_get_raw_referer(); |
|
| 268 | 268 | |
| 269 | 269 | if ( empty( $raw_referrer ) ) { |
| 270 | - return array_merge( $wpinv_options, $input ); |
|
| 270 | + return array_merge( $wpinv_options, $input ); |
|
| 271 | 271 | } |
| 272 | 272 | |
| 273 | 273 | wp_parse_str( $raw_referrer, $referrer ); |
| 274 | 274 | |
| 275 | - if ( in_array( 'gp-setup', $referrer ) ) { |
|
| 276 | - return array_merge( $wpinv_options, $input ); |
|
| 277 | - } |
|
| 275 | + if ( in_array( 'gp-setup', $referrer ) ) { |
|
| 276 | + return array_merge( $wpinv_options, $input ); |
|
| 277 | + } |
|
| 278 | 278 | |
| 279 | 279 | $settings = wpinv_get_registered_settings(); |
| 280 | 280 | $tab = isset( $referrer['tab'] ) ? $referrer['tab'] : 'general'; |
@@ -296,10 +296,10 @@ discard block |
||
| 296 | 296 | } |
| 297 | 297 | |
| 298 | 298 | // General filter |
| 299 | - $input[ $key ] = apply_filters( 'wpinv_settings_sanitize', $input[ $key ], $key ); |
|
| 299 | + $input[ $key ] = apply_filters( 'wpinv_settings_sanitize', $input[ $key ], $key ); |
|
| 300 | 300 | |
| 301 | - // Key specific filter. |
|
| 302 | - $input[ $key ] = apply_filters( "wpinv_settings_sanitize_$key", $input[ $key ] ); |
|
| 301 | + // Key specific filter. |
|
| 302 | + $input[ $key ] = apply_filters( "wpinv_settings_sanitize_$key", $input[ $key ] ); |
|
| 303 | 303 | } |
| 304 | 304 | |
| 305 | 305 | // Loop through the whitelist and unset any that are empty for the tab being saved |
@@ -342,14 +342,14 @@ discard block |
||
| 342 | 342 | |
| 343 | 343 | foreach ( $new_rates as $rate ) { |
| 344 | 344 | |
| 345 | - $rate['rate'] = wpinv_sanitize_amount( $rate['rate'] ); |
|
| 346 | - $rate['name'] = sanitize_text_field( $rate['name'] ); |
|
| 347 | - $rate['state'] = sanitize_text_field( $rate['state'] ); |
|
| 348 | - $rate['country'] = sanitize_text_field( $rate['country'] ); |
|
| 349 | - $rate['global'] = empty( $rate['state'] ); |
|
| 350 | - $tax_rates[] = $rate; |
|
| 345 | + $rate['rate'] = wpinv_sanitize_amount( $rate['rate'] ); |
|
| 346 | + $rate['name'] = sanitize_text_field( $rate['name'] ); |
|
| 347 | + $rate['state'] = sanitize_text_field( $rate['state'] ); |
|
| 348 | + $rate['country'] = sanitize_text_field( $rate['country'] ); |
|
| 349 | + $rate['global'] = empty( $rate['state'] ); |
|
| 350 | + $tax_rates[] = $rate; |
|
| 351 | 351 | |
| 352 | - } |
|
| 352 | + } |
|
| 353 | 353 | |
| 354 | 354 | update_option( 'wpinv_tax_rates', $tax_rates ); |
| 355 | 355 | |
@@ -362,11 +362,11 @@ discard block |
||
| 362 | 362 | $tabs['general'] = __( 'General', 'invoicing' ); |
| 363 | 363 | $tabs['gateways'] = __( 'Payment Gateways', 'invoicing' ); |
| 364 | 364 | $tabs['taxes'] = __( 'Taxes', 'invoicing' ); |
| 365 | - $tabs['emails'] = __( 'Emails', 'invoicing' ); |
|
| 365 | + $tabs['emails'] = __( 'Emails', 'invoicing' ); |
|
| 366 | 366 | |
| 367 | - if ( count( getpaid_get_integration_settings() ) > 0 ) { |
|
| 368 | - $tabs['integrations'] = __( 'Integrations', 'invoicing' ); |
|
| 369 | - } |
|
| 367 | + if ( count( getpaid_get_integration_settings() ) > 0 ) { |
|
| 368 | + $tabs['integrations'] = __( 'Integrations', 'invoicing' ); |
|
| 369 | + } |
|
| 370 | 370 | |
| 371 | 371 | $tabs['privacy'] = __( 'Privacy', 'invoicing' ); |
| 372 | 372 | $tabs['misc'] = __( 'Misc', 'invoicing' ); |
@@ -405,14 +405,14 @@ discard block |
||
| 405 | 405 | ) ), |
| 406 | 406 | 'taxes' => apply_filters( 'wpinv_settings_sections_taxes', array( |
| 407 | 407 | 'main' => __( 'Tax Settings', 'invoicing' ), |
| 408 | - 'rates' => __( 'Tax Rates', 'invoicing' ), |
|
| 409 | - 'vat' => __( 'EU VAT Settings', 'invoicing' ) |
|
| 408 | + 'rates' => __( 'Tax Rates', 'invoicing' ), |
|
| 409 | + 'vat' => __( 'EU VAT Settings', 'invoicing' ) |
|
| 410 | 410 | ) ), |
| 411 | 411 | 'emails' => apply_filters( 'wpinv_settings_sections_emails', array( |
| 412 | 412 | 'main' => __( 'Email Settings', 'invoicing' ), |
| 413 | - ) ), |
|
| 413 | + ) ), |
|
| 414 | 414 | |
| 415 | - 'integrations' => wp_list_pluck( getpaid_get_integration_settings(), 'label', 'id' ), |
|
| 415 | + 'integrations' => wp_list_pluck( getpaid_get_integration_settings(), 'label', 'id' ), |
|
| 416 | 416 | |
| 417 | 417 | 'privacy' => apply_filters( 'wpinv_settings_sections_privacy', array( |
| 418 | 418 | 'main' => __( 'Privacy policy', 'invoicing' ), |
@@ -432,48 +432,48 @@ discard block |
||
| 432 | 432 | } |
| 433 | 433 | |
| 434 | 434 | function wpinv_get_pages( $with_slug = false, $default_label = NULL ) { |
| 435 | - $pages_options = array(); |
|
| 435 | + $pages_options = array(); |
|
| 436 | 436 | |
| 437 | - if( $default_label !== NULL && $default_label !== false ) { |
|
| 438 | - $pages_options = array( '' => $default_label ); // Blank option |
|
| 439 | - } |
|
| 437 | + if( $default_label !== NULL && $default_label !== false ) { |
|
| 438 | + $pages_options = array( '' => $default_label ); // Blank option |
|
| 439 | + } |
|
| 440 | 440 | |
| 441 | - $pages = get_pages(); |
|
| 442 | - if ( $pages ) { |
|
| 443 | - foreach ( $pages as $page ) { |
|
| 444 | - $title = $with_slug ? $page->post_title . ' (' . $page->post_name . ')' : $page->post_title; |
|
| 441 | + $pages = get_pages(); |
|
| 442 | + if ( $pages ) { |
|
| 443 | + foreach ( $pages as $page ) { |
|
| 444 | + $title = $with_slug ? $page->post_title . ' (' . $page->post_name . ')' : $page->post_title; |
|
| 445 | 445 | $pages_options[ $page->ID ] = $title; |
| 446 | - } |
|
| 447 | - } |
|
| 446 | + } |
|
| 447 | + } |
|
| 448 | 448 | |
| 449 | - return $pages_options; |
|
| 449 | + return $pages_options; |
|
| 450 | 450 | } |
| 451 | 451 | |
| 452 | 452 | function wpinv_header_callback( $args ) { |
| 453 | - if ( !empty( $args['desc'] ) ) { |
|
| 453 | + if ( !empty( $args['desc'] ) ) { |
|
| 454 | 454 | echo $args['desc']; |
| 455 | 455 | } |
| 456 | 456 | } |
| 457 | 457 | |
| 458 | 458 | function wpinv_hidden_callback( $args ) { |
| 459 | 459 | |
| 460 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 461 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 460 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 461 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 462 | 462 | |
| 463 | - if ( isset( $args['set_value'] ) ) { |
|
| 464 | - $value = $args['set_value']; |
|
| 465 | - } |
|
| 463 | + if ( isset( $args['set_value'] ) ) { |
|
| 464 | + $value = $args['set_value']; |
|
| 465 | + } |
|
| 466 | 466 | |
| 467 | - if ( isset( $args['faux'] ) && true === $args['faux'] ) { |
|
| 468 | - $args['readonly'] = true; |
|
| 469 | - $name = ''; |
|
| 470 | - } else { |
|
| 471 | - $name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"'; |
|
| 472 | - } |
|
| 467 | + if ( isset( $args['faux'] ) && true === $args['faux'] ) { |
|
| 468 | + $args['readonly'] = true; |
|
| 469 | + $name = ''; |
|
| 470 | + } else { |
|
| 471 | + $name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"'; |
|
| 472 | + } |
|
| 473 | 473 | |
| 474 | - $html = '<input type="hidden" id="wpinv_settings[' . wpinv_sanitize_key( $args['id'] ) . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '" />'; |
|
| 474 | + $html = '<input type="hidden" id="wpinv_settings[' . wpinv_sanitize_key( $args['id'] ) . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '" />'; |
|
| 475 | 475 | |
| 476 | - echo $html; |
|
| 476 | + echo $html; |
|
| 477 | 477 | } |
| 478 | 478 | |
| 479 | 479 | /** |
@@ -481,12 +481,12 @@ discard block |
||
| 481 | 481 | */ |
| 482 | 482 | function wpinv_checkbox_callback( $args ) { |
| 483 | 483 | |
| 484 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 485 | - $std = wpinv_get_option( $args['id'], $std ); |
|
| 486 | - $id = esc_attr( $args['id'] ); |
|
| 484 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 485 | + $std = wpinv_get_option( $args['id'], $std ); |
|
| 486 | + $id = esc_attr( $args['id'] ); |
|
| 487 | 487 | |
| 488 | - getpaid_hidden_field( "wpinv_settings[$id]", '0' ); |
|
| 489 | - ?> |
|
| 488 | + getpaid_hidden_field( "wpinv_settings[$id]", '0' ); |
|
| 489 | + ?> |
|
| 490 | 490 | <fieldset> |
| 491 | 491 | <label> |
| 492 | 492 | <input id="wpinv-settings-<?php echo $id; ?>" name="wpinv_settings[<?php echo $id; ?>]" <?php checked( empty( $std ), false ); ?> value="1" type="checkbox"> |
@@ -498,75 +498,75 @@ discard block |
||
| 498 | 498 | |
| 499 | 499 | function wpinv_multicheck_callback( $args ) { |
| 500 | 500 | |
| 501 | - $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
|
| 502 | - $class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : ''; |
|
| 501 | + $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
|
| 502 | + $class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : ''; |
|
| 503 | 503 | |
| 504 | - if ( ! empty( $args['options'] ) ) { |
|
| 504 | + if ( ! empty( $args['options'] ) ) { |
|
| 505 | 505 | |
| 506 | - $std = isset( $args['std'] ) ? $args['std'] : array(); |
|
| 507 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 506 | + $std = isset( $args['std'] ) ? $args['std'] : array(); |
|
| 507 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 508 | 508 | |
| 509 | - echo '<div class="wpi-mcheck-rows wpi-mcheck-' . $sanitize_id . $class . '">'; |
|
| 509 | + echo '<div class="wpi-mcheck-rows wpi-mcheck-' . $sanitize_id . $class . '">'; |
|
| 510 | 510 | foreach( $args['options'] as $key => $option ): |
| 511 | - $sanitize_key = wpinv_sanitize_key( $key ); |
|
| 512 | - if ( in_array( $sanitize_key, $value ) ) { |
|
| 513 | - $enabled = $sanitize_key; |
|
| 514 | - } else { |
|
| 515 | - $enabled = NULL; |
|
| 516 | - } |
|
| 517 | - echo '<div class="wpi-mcheck-row"><input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $sanitize_key ) . '" ' . checked( $sanitize_key, $enabled, false ) . '/> '; |
|
| 518 | - echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . wp_kses_post( $option ) . '</label></div>'; |
|
| 519 | - endforeach; |
|
| 520 | - echo '</div>'; |
|
| 521 | - echo '<p class="description">' . $args['desc'] . '</p>'; |
|
| 522 | - } |
|
| 511 | + $sanitize_key = wpinv_sanitize_key( $key ); |
|
| 512 | + if ( in_array( $sanitize_key, $value ) ) { |
|
| 513 | + $enabled = $sanitize_key; |
|
| 514 | + } else { |
|
| 515 | + $enabled = NULL; |
|
| 516 | + } |
|
| 517 | + echo '<div class="wpi-mcheck-row"><input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $sanitize_key ) . '" ' . checked( $sanitize_key, $enabled, false ) . '/> '; |
|
| 518 | + echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . wp_kses_post( $option ) . '</label></div>'; |
|
| 519 | + endforeach; |
|
| 520 | + echo '</div>'; |
|
| 521 | + echo '<p class="description">' . $args['desc'] . '</p>'; |
|
| 522 | + } |
|
| 523 | 523 | } |
| 524 | 524 | |
| 525 | 525 | function wpinv_payment_icons_callback( $args ) { |
| 526 | 526 | |
| 527 | 527 | $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
| 528 | - $value = wpinv_get_option( $args['id'], false); |
|
| 528 | + $value = wpinv_get_option( $args['id'], false); |
|
| 529 | 529 | |
| 530 | - if ( ! empty( $args['options'] ) ) { |
|
| 531 | - foreach( $args['options'] as $key => $option ) { |
|
| 530 | + if ( ! empty( $args['options'] ) ) { |
|
| 531 | + foreach( $args['options'] as $key => $option ) { |
|
| 532 | 532 | $sanitize_key = wpinv_sanitize_key( $key ); |
| 533 | 533 | |
| 534 | - if( empty( $value ) ) { |
|
| 535 | - $enabled = $option; |
|
| 536 | - } else { |
|
| 537 | - $enabled = NULL; |
|
| 538 | - } |
|
| 539 | - |
|
| 540 | - echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" style="margin-right:10px;line-height:16px;height:16px;display:inline-block;">'; |
|
| 541 | - |
|
| 542 | - echo '<input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $option ) . '" ' . checked( $option, $enabled, false ) . '/> '; |
|
| 543 | - |
|
| 544 | - if ( wpinv_string_is_image_url( $key ) ) { |
|
| 545 | - echo '<img class="payment-icon" src="' . esc_url( $key ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>'; |
|
| 546 | - } else { |
|
| 547 | - $card = strtolower( str_replace( ' ', '', $option ) ); |
|
| 548 | - |
|
| 549 | - if ( has_filter( 'wpinv_accepted_payment_' . $card . '_image' ) ) { |
|
| 550 | - $image = apply_filters( 'wpinv_accepted_payment_' . $card . '_image', '' ); |
|
| 551 | - } else { |
|
| 552 | - $image = wpinv_locate_template( 'images' . DIRECTORY_SEPARATOR . 'icons' . DIRECTORY_SEPARATOR . $card . '.gif', false ); |
|
| 553 | - $content_dir = WP_CONTENT_DIR; |
|
| 554 | - |
|
| 555 | - if ( function_exists( 'wp_normalize_path' ) ) { |
|
| 556 | - // Replaces backslashes with forward slashes for Windows systems |
|
| 557 | - $image = wp_normalize_path( $image ); |
|
| 558 | - $content_dir = wp_normalize_path( $content_dir ); |
|
| 559 | - } |
|
| 560 | - |
|
| 561 | - $image = str_replace( $content_dir, content_url(), $image ); |
|
| 562 | - } |
|
| 563 | - |
|
| 564 | - echo '<img class="payment-icon" src="' . esc_url( $image ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>'; |
|
| 565 | - } |
|
| 566 | - echo $option . '</label>'; |
|
| 567 | - } |
|
| 568 | - echo '<p class="description" style="margin-top:16px;">' . wp_kses_post( $args['desc'] ) . '</p>'; |
|
| 569 | - } |
|
| 534 | + if( empty( $value ) ) { |
|
| 535 | + $enabled = $option; |
|
| 536 | + } else { |
|
| 537 | + $enabled = NULL; |
|
| 538 | + } |
|
| 539 | + |
|
| 540 | + echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" style="margin-right:10px;line-height:16px;height:16px;display:inline-block;">'; |
|
| 541 | + |
|
| 542 | + echo '<input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $option ) . '" ' . checked( $option, $enabled, false ) . '/> '; |
|
| 543 | + |
|
| 544 | + if ( wpinv_string_is_image_url( $key ) ) { |
|
| 545 | + echo '<img class="payment-icon" src="' . esc_url( $key ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>'; |
|
| 546 | + } else { |
|
| 547 | + $card = strtolower( str_replace( ' ', '', $option ) ); |
|
| 548 | + |
|
| 549 | + if ( has_filter( 'wpinv_accepted_payment_' . $card . '_image' ) ) { |
|
| 550 | + $image = apply_filters( 'wpinv_accepted_payment_' . $card . '_image', '' ); |
|
| 551 | + } else { |
|
| 552 | + $image = wpinv_locate_template( 'images' . DIRECTORY_SEPARATOR . 'icons' . DIRECTORY_SEPARATOR . $card . '.gif', false ); |
|
| 553 | + $content_dir = WP_CONTENT_DIR; |
|
| 554 | + |
|
| 555 | + if ( function_exists( 'wp_normalize_path' ) ) { |
|
| 556 | + // Replaces backslashes with forward slashes for Windows systems |
|
| 557 | + $image = wp_normalize_path( $image ); |
|
| 558 | + $content_dir = wp_normalize_path( $content_dir ); |
|
| 559 | + } |
|
| 560 | + |
|
| 561 | + $image = str_replace( $content_dir, content_url(), $image ); |
|
| 562 | + } |
|
| 563 | + |
|
| 564 | + echo '<img class="payment-icon" src="' . esc_url( $image ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>'; |
|
| 565 | + } |
|
| 566 | + echo $option . '</label>'; |
|
| 567 | + } |
|
| 568 | + echo '<p class="description" style="margin-top:16px;">' . wp_kses_post( $args['desc'] ) . '</p>'; |
|
| 569 | + } |
|
| 570 | 570 | } |
| 571 | 571 | |
| 572 | 572 | /** |
@@ -574,9 +574,9 @@ discard block |
||
| 574 | 574 | */ |
| 575 | 575 | function wpinv_radio_callback( $args ) { |
| 576 | 576 | |
| 577 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 578 | - $std = wpinv_get_option( $args['id'], $std ); |
|
| 579 | - ?> |
|
| 577 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 578 | + $std = wpinv_get_option( $args['id'], $std ); |
|
| 579 | + ?> |
|
| 580 | 580 | <fieldset> |
| 581 | 581 | <ul id="wpinv-settings-<?php echo esc_attr( $args['id'] ); ?>" style="margin-top: 0;"> |
| 582 | 582 | <?php foreach( $args['options'] as $key => $option ) : ?> |
@@ -590,7 +590,7 @@ discard block |
||
| 590 | 590 | </ul> |
| 591 | 591 | </fieldset> |
| 592 | 592 | <?php |
| 593 | - getpaid_settings_description_callback( $args ); |
|
| 593 | + getpaid_settings_description_callback( $args ); |
|
| 594 | 594 | } |
| 595 | 595 | |
| 596 | 596 | /** |
@@ -598,10 +598,10 @@ discard block |
||
| 598 | 598 | */ |
| 599 | 599 | function getpaid_settings_description_callback( $args ) { |
| 600 | 600 | |
| 601 | - if ( ! empty( $args['desc'] ) ) { |
|
| 602 | - $description = wp_kses_post( $args['desc'] ); |
|
| 603 | - echo "<p class='description'>$description</p>"; |
|
| 604 | - } |
|
| 601 | + if ( ! empty( $args['desc'] ) ) { |
|
| 602 | + $description = wp_kses_post( $args['desc'] ); |
|
| 603 | + echo "<p class='description'>$description</p>"; |
|
| 604 | + } |
|
| 605 | 605 | |
| 606 | 606 | } |
| 607 | 607 | |
@@ -610,7 +610,7 @@ discard block |
||
| 610 | 610 | */ |
| 611 | 611 | function wpinv_gateways_callback() { |
| 612 | 612 | |
| 613 | - ?> |
|
| 613 | + ?> |
|
| 614 | 614 | </td> |
| 615 | 615 | </tr> |
| 616 | 616 | <tr class="bsui"> |
@@ -624,22 +624,22 @@ discard block |
||
| 624 | 624 | |
| 625 | 625 | $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
| 626 | 626 | $class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : ''; |
| 627 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 628 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 627 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 628 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 629 | 629 | |
| 630 | - echo '<select name="wpinv_settings[' . $sanitize_id . ']"" id="wpinv_settings[' . $sanitize_id . ']" class="'.$class.'" >'; |
|
| 630 | + echo '<select name="wpinv_settings[' . $sanitize_id . ']"" id="wpinv_settings[' . $sanitize_id . ']" class="'.$class.'" >'; |
|
| 631 | 631 | |
| 632 | - foreach ( $args['options'] as $key => $option ) : |
|
| 633 | - if ( isset( $args['selected'] ) && $args['selected'] !== null && $args['selected'] !== false ) { |
|
| 632 | + foreach ( $args['options'] as $key => $option ) : |
|
| 633 | + if ( isset( $args['selected'] ) && $args['selected'] !== null && $args['selected'] !== false ) { |
|
| 634 | 634 | $selected = selected( $key, $args['selected'], false ); |
| 635 | 635 | } else { |
| 636 | 636 | $selected = selected( $key, $value, false ); |
| 637 | 637 | } |
| 638 | - echo '<option value="' . wpinv_sanitize_key( $key ) . '"' . $selected . '>' . esc_html( $option['admin_label'] ) . '</option>'; |
|
| 639 | - endforeach; |
|
| 638 | + echo '<option value="' . wpinv_sanitize_key( $key ) . '"' . $selected . '>' . esc_html( $option['admin_label'] ) . '</option>'; |
|
| 639 | + endforeach; |
|
| 640 | 640 | |
| 641 | - echo '</select>'; |
|
| 642 | - echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 641 | + echo '</select>'; |
|
| 642 | + echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 643 | 643 | } |
| 644 | 644 | |
| 645 | 645 | /** |
@@ -650,29 +650,29 @@ discard block |
||
| 650 | 650 | */ |
| 651 | 651 | function wpinv_settings_attrs_helper( $args ) { |
| 652 | 652 | |
| 653 | - $value = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 654 | - $id = esc_attr( $args['id'] ); |
|
| 655 | - $placeholder = esc_attr( $args['placeholder'] ); |
|
| 653 | + $value = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 654 | + $id = esc_attr( $args['id'] ); |
|
| 655 | + $placeholder = esc_attr( $args['placeholder'] ); |
|
| 656 | 656 | |
| 657 | - if ( ! empty( $args['faux'] ) ) { |
|
| 658 | - $args['readonly'] = true; |
|
| 659 | - $name = ''; |
|
| 660 | - } else { |
|
| 661 | - $value = wpinv_get_option( $args['id'], $value ); |
|
| 662 | - $name = "wpinv_settings[$id]"; |
|
| 663 | - } |
|
| 657 | + if ( ! empty( $args['faux'] ) ) { |
|
| 658 | + $args['readonly'] = true; |
|
| 659 | + $name = ''; |
|
| 660 | + } else { |
|
| 661 | + $value = wpinv_get_option( $args['id'], $value ); |
|
| 662 | + $name = "wpinv_settings[$id]"; |
|
| 663 | + } |
|
| 664 | 664 | |
| 665 | - $value = is_scalar( $value ) ? esc_attr( $value ) : ''; |
|
| 666 | - $class = esc_attr( $args['class'] ); |
|
| 667 | - $style = esc_attr( $args['style'] ); |
|
| 668 | - $readonly = empty( $args['readonly'] ) ? '' : 'readonly onclick="this.select()"'; |
|
| 665 | + $value = is_scalar( $value ) ? esc_attr( $value ) : ''; |
|
| 666 | + $class = esc_attr( $args['class'] ); |
|
| 667 | + $style = esc_attr( $args['style'] ); |
|
| 668 | + $readonly = empty( $args['readonly'] ) ? '' : 'readonly onclick="this.select()"'; |
|
| 669 | 669 | |
| 670 | - $onchange = ''; |
|
| 670 | + $onchange = ''; |
|
| 671 | 671 | if ( ! empty( $args['onchange'] ) ) { |
| 672 | 672 | $onchange = ' onchange="' . esc_attr( $args['onchange'] ) . '"'; |
| 673 | - } |
|
| 673 | + } |
|
| 674 | 674 | |
| 675 | - return "name='$name' id='wpinv-settings-$id' style='$style' value='$value' class='$class' placeholder='$placeholder' data-placeholder='$placeholder' $onchange $readonly"; |
|
| 675 | + return "name='$name' id='wpinv-settings-$id' style='$style' value='$value' class='$class' placeholder='$placeholder' data-placeholder='$placeholder' $onchange $readonly"; |
|
| 676 | 676 | } |
| 677 | 677 | |
| 678 | 678 | /** |
@@ -680,11 +680,11 @@ discard block |
||
| 680 | 680 | */ |
| 681 | 681 | function wpinv_text_callback( $args ) { |
| 682 | 682 | |
| 683 | - $desc = wp_kses_post( $args['desc'] ); |
|
| 684 | - $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>"; |
|
| 685 | - $attr = wpinv_settings_attrs_helper( $args ); |
|
| 683 | + $desc = wp_kses_post( $args['desc'] ); |
|
| 684 | + $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>"; |
|
| 685 | + $attr = wpinv_settings_attrs_helper( $args ); |
|
| 686 | 686 | |
| 687 | - ?> |
|
| 687 | + ?> |
|
| 688 | 688 | <label style="width: 100%;"> |
| 689 | 689 | <input type="text" <?php echo $attr; ?>> |
| 690 | 690 | <?php echo $desc; ?> |
@@ -698,14 +698,14 @@ discard block |
||
| 698 | 698 | */ |
| 699 | 699 | function wpinv_number_callback( $args ) { |
| 700 | 700 | |
| 701 | - $desc = wp_kses_post( $args['desc'] ); |
|
| 702 | - $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>"; |
|
| 703 | - $attr = wpinv_settings_attrs_helper( $args ); |
|
| 704 | - $max = intval( $args['max'] ); |
|
| 705 | - $min = intval( $args['min'] ); |
|
| 706 | - $step = floatval( $args['step'] ); |
|
| 701 | + $desc = wp_kses_post( $args['desc'] ); |
|
| 702 | + $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>"; |
|
| 703 | + $attr = wpinv_settings_attrs_helper( $args ); |
|
| 704 | + $max = intval( $args['max'] ); |
|
| 705 | + $min = intval( $args['min'] ); |
|
| 706 | + $step = floatval( $args['step'] ); |
|
| 707 | 707 | |
| 708 | - ?> |
|
| 708 | + ?> |
|
| 709 | 709 | <label style="width: 100%;"> |
| 710 | 710 | <input type="number" step="<?php echo $step; ?>" max="<?php echo $max; ?>" min="<?php echo $min; ?>" <?php echo $attr; ?>> |
| 711 | 711 | <?php echo $desc; ?> |
@@ -717,36 +717,36 @@ discard block |
||
| 717 | 717 | function wpinv_textarea_callback( $args ) { |
| 718 | 718 | |
| 719 | 719 | $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
| 720 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 721 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 720 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 721 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 722 | 722 | |
| 723 | 723 | $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular'; |
| 724 | 724 | $class = ( isset( $args['class'] ) && ! is_null( $args['class'] ) ) ? $args['class'] : 'large-text'; |
| 725 | 725 | |
| 726 | - $html = '<textarea class="' . sanitize_html_class( $class ) . ' txtarea-' . sanitize_html_class( $size ) . ' wpi-' . esc_attr( sanitize_html_class( $sanitize_id ) ) . ' " cols="' . $args['cols'] . '" rows="' . $args['rows'] . '" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']">' . esc_textarea( stripslashes( $value ) ) . '</textarea>'; |
|
| 727 | - $html .= '<br /><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 726 | + $html = '<textarea class="' . sanitize_html_class( $class ) . ' txtarea-' . sanitize_html_class( $size ) . ' wpi-' . esc_attr( sanitize_html_class( $sanitize_id ) ) . ' " cols="' . $args['cols'] . '" rows="' . $args['rows'] . '" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']">' . esc_textarea( stripslashes( $value ) ) . '</textarea>'; |
|
| 727 | + $html .= '<br /><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 728 | 728 | |
| 729 | - echo $html; |
|
| 729 | + echo $html; |
|
| 730 | 730 | } |
| 731 | 731 | |
| 732 | 732 | function wpinv_password_callback( $args ) { |
| 733 | 733 | |
| 734 | 734 | $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
| 735 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 736 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 735 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 736 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 737 | 737 | |
| 738 | - $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular'; |
|
| 739 | - $html = '<input type="password" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '"/>'; |
|
| 740 | - $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 738 | + $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular'; |
|
| 739 | + $html = '<input type="password" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '"/>'; |
|
| 740 | + $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 741 | 741 | |
| 742 | - echo $html; |
|
| 742 | + echo $html; |
|
| 743 | 743 | } |
| 744 | 744 | |
| 745 | 745 | function wpinv_missing_callback($args) { |
| 746 | - printf( |
|
| 747 | - __( 'The callback function used for the %s setting is missing.', 'invoicing' ), |
|
| 748 | - '<strong>' . $args['id'] . '</strong>' |
|
| 749 | - ); |
|
| 746 | + printf( |
|
| 747 | + __( 'The callback function used for the %s setting is missing.', 'invoicing' ), |
|
| 748 | + '<strong>' . $args['id'] . '</strong>' |
|
| 749 | + ); |
|
| 750 | 750 | } |
| 751 | 751 | |
| 752 | 752 | /** |
@@ -754,14 +754,14 @@ discard block |
||
| 754 | 754 | */ |
| 755 | 755 | function wpinv_select_callback( $args ) { |
| 756 | 756 | |
| 757 | - $desc = wp_kses_post( $args['desc'] ); |
|
| 758 | - $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>"; |
|
| 759 | - $attr = wpinv_settings_attrs_helper( $args ); |
|
| 760 | - $value = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 761 | - $value = wpinv_get_option( $args['id'], $value ); |
|
| 762 | - $rand = uniqid( 'random_id' ); |
|
| 757 | + $desc = wp_kses_post( $args['desc'] ); |
|
| 758 | + $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>"; |
|
| 759 | + $attr = wpinv_settings_attrs_helper( $args ); |
|
| 760 | + $value = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 761 | + $value = wpinv_get_option( $args['id'], $value ); |
|
| 762 | + $rand = uniqid( 'random_id' ); |
|
| 763 | 763 | |
| 764 | - ?> |
|
| 764 | + ?> |
|
| 765 | 765 | <label style="width: 100%;"> |
| 766 | 766 | <select <?php echo $attr; ?> data-allow-clear="true"> |
| 767 | 767 | <?php foreach ( $args['options'] as $option => $name ) : ?> |
@@ -794,104 +794,104 @@ discard block |
||
| 794 | 794 | function wpinv_color_select_callback( $args ) { |
| 795 | 795 | |
| 796 | 796 | $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
| 797 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 798 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 797 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 798 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 799 | 799 | |
| 800 | - $html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"/>'; |
|
| 800 | + $html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"/>'; |
|
| 801 | 801 | |
| 802 | - foreach ( $args['options'] as $option => $color ) { |
|
| 803 | - $selected = selected( $option, $value, false ); |
|
| 804 | - $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $color['label'] ) . '</option>'; |
|
| 805 | - } |
|
| 802 | + foreach ( $args['options'] as $option => $color ) { |
|
| 803 | + $selected = selected( $option, $value, false ); |
|
| 804 | + $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $color['label'] ) . '</option>'; |
|
| 805 | + } |
|
| 806 | 806 | |
| 807 | - $html .= '</select>'; |
|
| 808 | - $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 807 | + $html .= '</select>'; |
|
| 808 | + $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 809 | 809 | |
| 810 | - echo $html; |
|
| 810 | + echo $html; |
|
| 811 | 811 | } |
| 812 | 812 | |
| 813 | 813 | function wpinv_rich_editor_callback( $args ) { |
| 814 | - global $wp_version; |
|
| 814 | + global $wp_version; |
|
| 815 | 815 | |
| 816 | 816 | $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
| 817 | 817 | |
| 818 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 819 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 818 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 819 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 820 | 820 | |
| 821 | - if ( ! empty( $args['allow_blank'] ) && empty( $value ) ) { |
|
| 822 | - $value = $std; |
|
| 823 | - } |
|
| 821 | + if ( ! empty( $args['allow_blank'] ) && empty( $value ) ) { |
|
| 822 | + $value = $std; |
|
| 823 | + } |
|
| 824 | 824 | |
| 825 | - $rows = isset( $args['size'] ) ? $args['size'] : 20; |
|
| 825 | + $rows = isset( $args['size'] ) ? $args['size'] : 20; |
|
| 826 | 826 | |
| 827 | - $html = '<div class="getpaid-settings-editor-input">'; |
|
| 828 | - if ( $wp_version >= 3.3 && function_exists( 'wp_editor' ) ) { |
|
| 829 | - ob_start(); |
|
| 830 | - wp_editor( stripslashes( $value ), 'wpinv_settings_' . esc_attr( $args['id'] ), array( 'textarea_name' => 'wpinv_settings[' . esc_attr( $args['id'] ) . ']', 'textarea_rows' => absint( $rows ), 'media_buttons' => false ) ); |
|
| 831 | - $html .= ob_get_clean(); |
|
| 832 | - } else { |
|
| 833 | - $html .= '<textarea class="large-text" rows="10" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" class="wpi-' . esc_attr( sanitize_html_class( $args['id'] ) ) . '">' . esc_textarea( stripslashes( $value ) ) . '</textarea>'; |
|
| 834 | - } |
|
| 827 | + $html = '<div class="getpaid-settings-editor-input">'; |
|
| 828 | + if ( $wp_version >= 3.3 && function_exists( 'wp_editor' ) ) { |
|
| 829 | + ob_start(); |
|
| 830 | + wp_editor( stripslashes( $value ), 'wpinv_settings_' . esc_attr( $args['id'] ), array( 'textarea_name' => 'wpinv_settings[' . esc_attr( $args['id'] ) . ']', 'textarea_rows' => absint( $rows ), 'media_buttons' => false ) ); |
|
| 831 | + $html .= ob_get_clean(); |
|
| 832 | + } else { |
|
| 833 | + $html .= '<textarea class="large-text" rows="10" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" class="wpi-' . esc_attr( sanitize_html_class( $args['id'] ) ) . '">' . esc_textarea( stripslashes( $value ) ) . '</textarea>'; |
|
| 834 | + } |
|
| 835 | 835 | |
| 836 | - $html .= '</div><br/><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 836 | + $html .= '</div><br/><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 837 | 837 | |
| 838 | - echo $html; |
|
| 838 | + echo $html; |
|
| 839 | 839 | } |
| 840 | 840 | |
| 841 | 841 | function wpinv_upload_callback( $args ) { |
| 842 | 842 | |
| 843 | 843 | $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
| 844 | 844 | |
| 845 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 846 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 845 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 846 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 847 | 847 | |
| 848 | - $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular'; |
|
| 849 | - $html = '<input type="text" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>'; |
|
| 850 | - $html .= '<span> <input type="button" class="wpinv_settings_upload_button button-secondary" value="' . __( 'Upload File', 'invoicing' ) . '"/></span>'; |
|
| 851 | - $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 848 | + $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular'; |
|
| 849 | + $html = '<input type="text" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>'; |
|
| 850 | + $html .= '<span> <input type="button" class="wpinv_settings_upload_button button-secondary" value="' . __( 'Upload File', 'invoicing' ) . '"/></span>'; |
|
| 851 | + $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 852 | 852 | |
| 853 | - echo $html; |
|
| 853 | + echo $html; |
|
| 854 | 854 | } |
| 855 | 855 | |
| 856 | 856 | function wpinv_color_callback( $args ) { |
| 857 | 857 | |
| 858 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 859 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 858 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 859 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 860 | 860 | $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
| 861 | 861 | |
| 862 | - $html = '<input type="text" class="wpinv-color-picker" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '" data-default-color="' . esc_attr( $std ) . '" />'; |
|
| 863 | - $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 862 | + $html = '<input type="text" class="wpinv-color-picker" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '" data-default-color="' . esc_attr( $std ) . '" />'; |
|
| 863 | + $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 864 | 864 | |
| 865 | - echo $html; |
|
| 865 | + echo $html; |
|
| 866 | 866 | } |
| 867 | 867 | |
| 868 | 868 | function wpinv_country_states_callback($args) { |
| 869 | 869 | |
| 870 | - $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 871 | - $value = wpinv_get_option( $args['id'], $std ); |
|
| 870 | + $std = isset( $args['std'] ) ? $args['std'] : ''; |
|
| 871 | + $value = wpinv_get_option( $args['id'], $std ); |
|
| 872 | 872 | |
| 873 | 873 | $sanitize_id = wpinv_sanitize_key( $args['id'] ); |
| 874 | 874 | |
| 875 | - if ( isset( $args['placeholder'] ) ) { |
|
| 876 | - $placeholder = $args['placeholder']; |
|
| 877 | - } else { |
|
| 878 | - $placeholder = ''; |
|
| 879 | - } |
|
| 875 | + if ( isset( $args['placeholder'] ) ) { |
|
| 876 | + $placeholder = $args['placeholder']; |
|
| 877 | + } else { |
|
| 878 | + $placeholder = ''; |
|
| 879 | + } |
|
| 880 | 880 | |
| 881 | - $states = wpinv_get_country_states(); |
|
| 881 | + $states = wpinv_get_country_states(); |
|
| 882 | 882 | |
| 883 | - $class = empty( $states ) ? ' class="wpinv-no-states"' : ' class="wpi_select2"'; |
|
| 884 | - $html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"' . $class . 'data-placeholder="' . esc_html( $placeholder ) . '"/>'; |
|
| 883 | + $class = empty( $states ) ? ' class="wpinv-no-states"' : ' class="wpi_select2"'; |
|
| 884 | + $html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"' . $class . 'data-placeholder="' . esc_html( $placeholder ) . '"/>'; |
|
| 885 | 885 | |
| 886 | - foreach ( $states as $option => $name ) { |
|
| 887 | - $selected = selected( $option, $value, false ); |
|
| 888 | - $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>'; |
|
| 889 | - } |
|
| 886 | + foreach ( $states as $option => $name ) { |
|
| 887 | + $selected = selected( $option, $value, false ); |
|
| 888 | + $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>'; |
|
| 889 | + } |
|
| 890 | 890 | |
| 891 | - $html .= '</select>'; |
|
| 892 | - $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 891 | + $html .= '</select>'; |
|
| 892 | + $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>'; |
|
| 893 | 893 | |
| 894 | - echo $html; |
|
| 894 | + echo $html; |
|
| 895 | 895 | } |
| 896 | 896 | |
| 897 | 897 | /** |
@@ -899,7 +899,7 @@ discard block |
||
| 899 | 899 | */ |
| 900 | 900 | function wpinv_tax_rates_callback() { |
| 901 | 901 | |
| 902 | - ?> |
|
| 902 | + ?> |
|
| 903 | 903 | </td> |
| 904 | 904 | </tr> |
| 905 | 905 | <tr class="bsui"> |
@@ -914,17 +914,17 @@ discard block |
||
| 914 | 914 | * Displays a tax rate' edit row. |
| 915 | 915 | */ |
| 916 | 916 | function wpinv_tax_rate_callback( $tax_rate, $key, $echo = true ) { |
| 917 | - ob_start(); |
|
| 917 | + ob_start(); |
|
| 918 | 918 | |
| 919 | - $key = sanitize_key( $key ); |
|
| 920 | - $tax_rate['reduced_rate'] = empty( $tax_rate['reduced_rate'] ) ? 0 : $tax_rate['reduced_rate']; |
|
| 921 | - include plugin_dir_path( __FILE__ ) . 'views/html-tax-rate-edit.php'; |
|
| 919 | + $key = sanitize_key( $key ); |
|
| 920 | + $tax_rate['reduced_rate'] = empty( $tax_rate['reduced_rate'] ) ? 0 : $tax_rate['reduced_rate']; |
|
| 921 | + include plugin_dir_path( __FILE__ ) . 'views/html-tax-rate-edit.php'; |
|
| 922 | 922 | |
| 923 | - if ( $echo ) { |
|
| 924 | - echo ob_get_clean(); |
|
| 925 | - } else { |
|
| 926 | - return ob_get_clean(); |
|
| 927 | - } |
|
| 923 | + if ( $echo ) { |
|
| 924 | + echo ob_get_clean(); |
|
| 925 | + } else { |
|
| 926 | + return ob_get_clean(); |
|
| 927 | + } |
|
| 928 | 928 | |
| 929 | 929 | } |
| 930 | 930 | |
@@ -952,14 +952,14 @@ discard block |
||
| 952 | 952 | </td> |
| 953 | 953 | <td> |
| 954 | 954 | <a href="<?php |
| 955 | - echo esc_url( |
|
| 956 | - wp_nonce_url( |
|
| 957 | - add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ), |
|
| 958 | - 'getpaid-nonce', |
|
| 959 | - 'getpaid-nonce' |
|
| 960 | - ) |
|
| 961 | - ); |
|
| 962 | - ?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a> |
|
| 955 | + echo esc_url( |
|
| 956 | + wp_nonce_url( |
|
| 957 | + add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ), |
|
| 958 | + 'getpaid-nonce', |
|
| 959 | + 'getpaid-nonce' |
|
| 960 | + ) |
|
| 961 | + ); |
|
| 962 | + ?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a> |
|
| 963 | 963 | </td> |
| 964 | 964 | </tr> |
| 965 | 965 | <tr> |
@@ -969,14 +969,14 @@ discard block |
||
| 969 | 969 | </td> |
| 970 | 970 | <td> |
| 971 | 971 | <a href="<?php |
| 972 | - echo esc_url( |
|
| 973 | - wp_nonce_url( |
|
| 974 | - add_query_arg( 'getpaid-admin-action', 'create_missing_tables' ), |
|
| 975 | - 'getpaid-nonce', |
|
| 976 | - 'getpaid-nonce' |
|
| 977 | - ) |
|
| 978 | - ); |
|
| 979 | - ?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a> |
|
| 972 | + echo esc_url( |
|
| 973 | + wp_nonce_url( |
|
| 974 | + add_query_arg( 'getpaid-admin-action', 'create_missing_tables' ), |
|
| 975 | + 'getpaid-nonce', |
|
| 976 | + 'getpaid-nonce' |
|
| 977 | + ) |
|
| 978 | + ); |
|
| 979 | + ?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a> |
|
| 980 | 980 | </td> |
| 981 | 981 | </tr> |
| 982 | 982 | <tr> |
@@ -986,14 +986,14 @@ discard block |
||
| 986 | 986 | </td> |
| 987 | 987 | <td> |
| 988 | 988 | <a href="<?php |
| 989 | - echo esc_url( |
|
| 990 | - wp_nonce_url( |
|
| 991 | - add_query_arg( 'getpaid-admin-action', 'migrate_old_invoices' ), |
|
| 992 | - 'getpaid-nonce', |
|
| 993 | - 'getpaid-nonce' |
|
| 994 | - ) |
|
| 995 | - ); |
|
| 996 | - ?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a> |
|
| 989 | + echo esc_url( |
|
| 990 | + wp_nonce_url( |
|
| 991 | + add_query_arg( 'getpaid-admin-action', 'migrate_old_invoices' ), |
|
| 992 | + 'getpaid-nonce', |
|
| 993 | + 'getpaid-nonce' |
|
| 994 | + ) |
|
| 995 | + ); |
|
| 996 | + ?>" class="button button-primary"><?php _e('Run', 'invoicing');?></a> |
|
| 997 | 997 | </td> |
| 998 | 998 | </tr> |
| 999 | 999 | |
@@ -1004,14 +1004,14 @@ discard block |
||
| 1004 | 1004 | </td> |
| 1005 | 1005 | <td> |
| 1006 | 1006 | <a href="<?php |
| 1007 | - echo esc_url( |
|
| 1008 | - wp_nonce_url( |
|
| 1009 | - add_query_arg( 'getpaid-admin-action', 'recalculate_discounts' ), |
|
| 1010 | - 'getpaid-nonce', |
|
| 1011 | - 'getpaid-nonce' |
|
| 1012 | - ) |
|
| 1013 | - ); |
|
| 1014 | - ?>" class="button button-primary"><?php _e( 'Run', 'invoicing' );?></a> |
|
| 1007 | + echo esc_url( |
|
| 1008 | + wp_nonce_url( |
|
| 1009 | + add_query_arg( 'getpaid-admin-action', 'recalculate_discounts' ), |
|
| 1010 | + 'getpaid-nonce', |
|
| 1011 | + 'getpaid-nonce' |
|
| 1012 | + ) |
|
| 1013 | + ); |
|
| 1014 | + ?>" class="button button-primary"><?php _e( 'Run', 'invoicing' );?></a> |
|
| 1015 | 1015 | </td> |
| 1016 | 1016 | </tr> |
| 1017 | 1017 | |
@@ -1022,8 +1022,8 @@ discard block |
||
| 1022 | 1022 | </td> |
| 1023 | 1023 | <td> |
| 1024 | 1024 | <a href="<?php |
| 1025 | - echo esc_url( admin_url( 'index.php?page=gp-setup' ) ); |
|
| 1026 | - ?>" class="button button-primary"><?php _e( 'Launch', 'invoicing' );?></a> |
|
| 1025 | + echo esc_url( admin_url( 'index.php?page=gp-setup' ) ); |
|
| 1026 | + ?>" class="button button-primary"><?php _e( 'Launch', 'invoicing' );?></a> |
|
| 1027 | 1027 | </td> |
| 1028 | 1028 | </tr> |
| 1029 | 1029 | |
@@ -1037,19 +1037,19 @@ discard block |
||
| 1037 | 1037 | |
| 1038 | 1038 | |
| 1039 | 1039 | function wpinv_descriptive_text_callback( $args ) { |
| 1040 | - echo wp_kses_post( $args['desc'] ); |
|
| 1040 | + echo wp_kses_post( $args['desc'] ); |
|
| 1041 | 1041 | } |
| 1042 | 1042 | |
| 1043 | 1043 | function wpinv_raw_html_callback( $args ) { |
| 1044 | - echo $args['desc']; |
|
| 1044 | + echo $args['desc']; |
|
| 1045 | 1045 | } |
| 1046 | 1046 | |
| 1047 | 1047 | function wpinv_hook_callback( $args ) { |
| 1048 | - do_action( 'wpinv_' . $args['id'], $args ); |
|
| 1048 | + do_action( 'wpinv_' . $args['id'], $args ); |
|
| 1049 | 1049 | } |
| 1050 | 1050 | |
| 1051 | 1051 | function wpinv_set_settings_cap() { |
| 1052 | - return wpinv_get_capability(); |
|
| 1052 | + return wpinv_get_capability(); |
|
| 1053 | 1053 | } |
| 1054 | 1054 | add_filter( 'option_page_capability_wpinv_settings', 'wpinv_set_settings_cap' ); |
| 1055 | 1055 | |
@@ -1073,15 +1073,15 @@ discard block |
||
| 1073 | 1073 | */ |
| 1074 | 1074 | function wpinv_get_merge_tags_help_text( $subscription = false ) { |
| 1075 | 1075 | |
| 1076 | - $url = $subscription ? 'https://gist.github.com/picocodes/3d213982d57c34edf7a46fd3f0e8583e' : 'https://gist.github.com/picocodes/43bdc4d4bbba844534b2722e2af0b58f'; |
|
| 1077 | - $link = sprintf( |
|
| 1078 | - '<strong><a href="%s" target="_blank">%s</a></strong>', |
|
| 1079 | - $url, |
|
| 1080 | - esc_html__( 'View available merge tags.', 'wpinv-quotes' ) |
|
| 1081 | - ); |
|
| 1076 | + $url = $subscription ? 'https://gist.github.com/picocodes/3d213982d57c34edf7a46fd3f0e8583e' : 'https://gist.github.com/picocodes/43bdc4d4bbba844534b2722e2af0b58f'; |
|
| 1077 | + $link = sprintf( |
|
| 1078 | + '<strong><a href="%s" target="_blank">%s</a></strong>', |
|
| 1079 | + $url, |
|
| 1080 | + esc_html__( 'View available merge tags.', 'wpinv-quotes' ) |
|
| 1081 | + ); |
|
| 1082 | 1082 | |
| 1083 | - $description = esc_html__( 'The content of the email (Merge Tags and HTML are allowed).', 'invoicing' ); |
|
| 1083 | + $description = esc_html__( 'The content of the email (Merge Tags and HTML are allowed).', 'invoicing' ); |
|
| 1084 | 1084 | |
| 1085 | - return "$description $link"; |
|
| 1085 | + return "$description $link"; |
|
| 1086 | 1086 | |
| 1087 | 1087 | } |
@@ -15,321 +15,321 @@ |
||
| 15 | 15 | class GetPaid_Post_Types { |
| 16 | 16 | |
| 17 | 17 | /** |
| 18 | - * Hook in methods. |
|
| 19 | - */ |
|
| 20 | - public function __construct() { |
|
| 21 | - add_action( 'init', array( __CLASS__, 'register_post_types' ), 1 ); |
|
| 22 | - add_action( 'init', array( __CLASS__, 'register_post_status' ), 4 ); |
|
| 23 | - add_action( 'getpaid_flush_rewrite_rules', array( __CLASS__, 'flush_rewrite_rules' ) ); |
|
| 24 | - add_action( 'getpaid_after_register_post_types', array( __CLASS__, 'maybe_flush_rewrite_rules' ) ); |
|
| 25 | - } |
|
| 18 | + * Hook in methods. |
|
| 19 | + */ |
|
| 20 | + public function __construct() { |
|
| 21 | + add_action( 'init', array( __CLASS__, 'register_post_types' ), 1 ); |
|
| 22 | + add_action( 'init', array( __CLASS__, 'register_post_status' ), 4 ); |
|
| 23 | + add_action( 'getpaid_flush_rewrite_rules', array( __CLASS__, 'flush_rewrite_rules' ) ); |
|
| 24 | + add_action( 'getpaid_after_register_post_types', array( __CLASS__, 'maybe_flush_rewrite_rules' ) ); |
|
| 25 | + } |
|
| 26 | 26 | |
| 27 | - /** |
|
| 28 | - * Register core post types. |
|
| 29 | - */ |
|
| 30 | - public static function register_post_types() { |
|
| 27 | + /** |
|
| 28 | + * Register core post types. |
|
| 29 | + */ |
|
| 30 | + public static function register_post_types() { |
|
| 31 | 31 | |
| 32 | - if ( ! is_blog_installed() || post_type_exists( 'wpi_item' ) ) { |
|
| 33 | - return; |
|
| 34 | - } |
|
| 32 | + if ( ! is_blog_installed() || post_type_exists( 'wpi_item' ) ) { |
|
| 33 | + return; |
|
| 34 | + } |
|
| 35 | 35 | |
| 36 | - $capabilities = wpinv_current_user_can_manage_invoicing(); |
|
| 36 | + $capabilities = wpinv_current_user_can_manage_invoicing(); |
|
| 37 | 37 | |
| 38 | - // Fires before registering post types. |
|
| 39 | - do_action( 'getpaid_register_post_types' ); |
|
| 38 | + // Fires before registering post types. |
|
| 39 | + do_action( 'getpaid_register_post_types' ); |
|
| 40 | 40 | |
| 41 | - // Register item post type. |
|
| 42 | - register_post_type( |
|
| 43 | - 'wpi_item', |
|
| 44 | - apply_filters( |
|
| 45 | - 'wpinv_register_post_type_invoice_item', |
|
| 46 | - array( |
|
| 47 | - 'labels' => array( |
|
| 48 | - 'name' => _x( 'Items', 'post type general name', 'invoicing' ), |
|
| 49 | - 'singular_name' => _x( 'Item', 'post type singular name', 'invoicing' ), |
|
| 50 | - 'menu_name' => _x( 'Items', 'admin menu', 'invoicing' ), |
|
| 51 | - 'name_admin_bar' => _x( 'Item', 'add new on admin bar', 'invoicing' ), |
|
| 52 | - 'add_new' => _x( 'Add New', 'Item', 'invoicing' ), |
|
| 53 | - 'add_new_item' => __( 'Add New Item', 'invoicing' ), |
|
| 54 | - 'new_item' => __( 'New Item', 'invoicing' ), |
|
| 55 | - 'edit_item' => __( 'Edit Item', 'invoicing' ), |
|
| 56 | - 'view_item' => __( 'View Item', 'invoicing' ), |
|
| 57 | - 'all_items' => __( 'Items', 'invoicing' ), |
|
| 58 | - 'search_items' => __( 'Search items', 'invoicing' ), |
|
| 59 | - 'parent_item_colon' => __( 'Parent item:', 'invoicing' ), |
|
| 60 | - 'not_found' => __( 'No items found.', 'invoicing' ), |
|
| 61 | - 'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' ) |
|
| 62 | - ), |
|
| 63 | - 'description' => __( 'This is where you can add new invoice items.', 'invoicing' ), |
|
| 64 | - 'public' => false, |
|
| 65 | - 'has_archive' => false, |
|
| 66 | - '_builtin' => false, |
|
| 67 | - 'show_ui' => true, |
|
| 68 | - 'show_in_menu' => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false, |
|
| 69 | - 'show_in_nav_menus' => false, |
|
| 70 | - 'supports' => array( 'title', 'excerpt', 'thumbnail' ), |
|
| 71 | - 'rewrite' => false, |
|
| 72 | - 'query_var' => false, |
|
| 73 | - 'map_meta_cap' => true, |
|
| 74 | - 'show_in_admin_bar' => true, |
|
| 75 | - 'can_export' => true, |
|
| 76 | - ) |
|
| 77 | - ) |
|
| 78 | - ); |
|
| 41 | + // Register item post type. |
|
| 42 | + register_post_type( |
|
| 43 | + 'wpi_item', |
|
| 44 | + apply_filters( |
|
| 45 | + 'wpinv_register_post_type_invoice_item', |
|
| 46 | + array( |
|
| 47 | + 'labels' => array( |
|
| 48 | + 'name' => _x( 'Items', 'post type general name', 'invoicing' ), |
|
| 49 | + 'singular_name' => _x( 'Item', 'post type singular name', 'invoicing' ), |
|
| 50 | + 'menu_name' => _x( 'Items', 'admin menu', 'invoicing' ), |
|
| 51 | + 'name_admin_bar' => _x( 'Item', 'add new on admin bar', 'invoicing' ), |
|
| 52 | + 'add_new' => _x( 'Add New', 'Item', 'invoicing' ), |
|
| 53 | + 'add_new_item' => __( 'Add New Item', 'invoicing' ), |
|
| 54 | + 'new_item' => __( 'New Item', 'invoicing' ), |
|
| 55 | + 'edit_item' => __( 'Edit Item', 'invoicing' ), |
|
| 56 | + 'view_item' => __( 'View Item', 'invoicing' ), |
|
| 57 | + 'all_items' => __( 'Items', 'invoicing' ), |
|
| 58 | + 'search_items' => __( 'Search items', 'invoicing' ), |
|
| 59 | + 'parent_item_colon' => __( 'Parent item:', 'invoicing' ), |
|
| 60 | + 'not_found' => __( 'No items found.', 'invoicing' ), |
|
| 61 | + 'not_found_in_trash' => __( 'No items found in trash.', 'invoicing' ) |
|
| 62 | + ), |
|
| 63 | + 'description' => __( 'This is where you can add new invoice items.', 'invoicing' ), |
|
| 64 | + 'public' => false, |
|
| 65 | + 'has_archive' => false, |
|
| 66 | + '_builtin' => false, |
|
| 67 | + 'show_ui' => true, |
|
| 68 | + 'show_in_menu' => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false, |
|
| 69 | + 'show_in_nav_menus' => false, |
|
| 70 | + 'supports' => array( 'title', 'excerpt', 'thumbnail' ), |
|
| 71 | + 'rewrite' => false, |
|
| 72 | + 'query_var' => false, |
|
| 73 | + 'map_meta_cap' => true, |
|
| 74 | + 'show_in_admin_bar' => true, |
|
| 75 | + 'can_export' => true, |
|
| 76 | + ) |
|
| 77 | + ) |
|
| 78 | + ); |
|
| 79 | 79 | |
| 80 | - // Register payment form post type. |
|
| 81 | - register_post_type( |
|
| 82 | - 'wpi_payment_form', |
|
| 83 | - apply_filters( |
|
| 84 | - 'wpinv_register_post_type_payment_form', |
|
| 85 | - array( |
|
| 86 | - 'labels' => array( |
|
| 87 | - 'name' => _x( 'Payment Forms', 'post type general name', 'invoicing' ), |
|
| 88 | - 'singular_name' => _x( 'Payment Form', 'post type singular name', 'invoicing' ), |
|
| 89 | - 'menu_name' => _x( 'Payment Forms', 'admin menu', 'invoicing' ), |
|
| 90 | - 'name_admin_bar' => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ), |
|
| 91 | - 'add_new' => _x( 'Add New', 'Payment Form', 'invoicing' ), |
|
| 92 | - 'add_new_item' => __( 'Add New Payment Form', 'invoicing' ), |
|
| 93 | - 'new_item' => __( 'New Payment Form', 'invoicing' ), |
|
| 94 | - 'edit_item' => __( 'Edit Payment Form', 'invoicing' ), |
|
| 95 | - 'view_item' => __( 'View Payment Form', 'invoicing' ), |
|
| 96 | - 'all_items' => __( 'Payment Forms', 'invoicing' ), |
|
| 97 | - 'search_items' => __( 'Search Payment Forms', 'invoicing' ), |
|
| 98 | - 'parent_item_colon' => __( 'Parent Payment Forms:', 'invoicing' ), |
|
| 99 | - 'not_found' => __( 'No payment forms found.', 'invoicing' ), |
|
| 100 | - 'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' ) |
|
| 101 | - ), |
|
| 102 | - 'description' => __( 'Add new payment forms.', 'invoicing' ), |
|
| 103 | - 'public' => false, |
|
| 104 | - 'show_ui' => true, |
|
| 105 | - 'show_in_menu' => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false, |
|
| 106 | - 'show_in_nav_menus' => false, |
|
| 107 | - 'query_var' => false, |
|
| 108 | - 'rewrite' => true, |
|
| 109 | - 'map_meta_cap' => true, |
|
| 110 | - 'has_archive' => false, |
|
| 111 | - 'hierarchical' => false, |
|
| 112 | - 'menu_position' => null, |
|
| 113 | - 'supports' => array( 'title' ), |
|
| 114 | - 'menu_icon' => 'dashicons-media-form', |
|
| 115 | - ) |
|
| 116 | - ) |
|
| 117 | - ); |
|
| 80 | + // Register payment form post type. |
|
| 81 | + register_post_type( |
|
| 82 | + 'wpi_payment_form', |
|
| 83 | + apply_filters( |
|
| 84 | + 'wpinv_register_post_type_payment_form', |
|
| 85 | + array( |
|
| 86 | + 'labels' => array( |
|
| 87 | + 'name' => _x( 'Payment Forms', 'post type general name', 'invoicing' ), |
|
| 88 | + 'singular_name' => _x( 'Payment Form', 'post type singular name', 'invoicing' ), |
|
| 89 | + 'menu_name' => _x( 'Payment Forms', 'admin menu', 'invoicing' ), |
|
| 90 | + 'name_admin_bar' => _x( 'Payment Form', 'add new on admin bar', 'invoicing' ), |
|
| 91 | + 'add_new' => _x( 'Add New', 'Payment Form', 'invoicing' ), |
|
| 92 | + 'add_new_item' => __( 'Add New Payment Form', 'invoicing' ), |
|
| 93 | + 'new_item' => __( 'New Payment Form', 'invoicing' ), |
|
| 94 | + 'edit_item' => __( 'Edit Payment Form', 'invoicing' ), |
|
| 95 | + 'view_item' => __( 'View Payment Form', 'invoicing' ), |
|
| 96 | + 'all_items' => __( 'Payment Forms', 'invoicing' ), |
|
| 97 | + 'search_items' => __( 'Search Payment Forms', 'invoicing' ), |
|
| 98 | + 'parent_item_colon' => __( 'Parent Payment Forms:', 'invoicing' ), |
|
| 99 | + 'not_found' => __( 'No payment forms found.', 'invoicing' ), |
|
| 100 | + 'not_found_in_trash' => __( 'No payment forms found in trash.', 'invoicing' ) |
|
| 101 | + ), |
|
| 102 | + 'description' => __( 'Add new payment forms.', 'invoicing' ), |
|
| 103 | + 'public' => false, |
|
| 104 | + 'show_ui' => true, |
|
| 105 | + 'show_in_menu' => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false, |
|
| 106 | + 'show_in_nav_menus' => false, |
|
| 107 | + 'query_var' => false, |
|
| 108 | + 'rewrite' => true, |
|
| 109 | + 'map_meta_cap' => true, |
|
| 110 | + 'has_archive' => false, |
|
| 111 | + 'hierarchical' => false, |
|
| 112 | + 'menu_position' => null, |
|
| 113 | + 'supports' => array( 'title' ), |
|
| 114 | + 'menu_icon' => 'dashicons-media-form', |
|
| 115 | + ) |
|
| 116 | + ) |
|
| 117 | + ); |
|
| 118 | 118 | |
| 119 | - // Register invoice post type. |
|
| 120 | - register_post_type( |
|
| 121 | - 'wpi_invoice', |
|
| 122 | - apply_filters( |
|
| 123 | - 'wpinv_register_post_type_invoice', |
|
| 124 | - array( |
|
| 125 | - 'labels' => array( |
|
| 126 | - 'name' => __( 'Invoices', 'invoicing' ), |
|
| 127 | - 'singular_name' => __( 'Invoice', 'invoicing' ), |
|
| 128 | - 'all_items' => __( 'Invoices', 'invoicing' ), |
|
| 129 | - 'menu_name' => _x( 'Invoices', 'Admin menu name', 'invoicing' ), |
|
| 130 | - 'add_new' => __( 'Add New', 'invoicing' ), |
|
| 131 | - 'add_new_item' => __( 'Add new invoice', 'invoicing' ), |
|
| 132 | - 'edit' => __( 'Edit', 'invoicing' ), |
|
| 133 | - 'edit_item' => __( 'Edit invoice', 'invoicing' ), |
|
| 134 | - 'new_item' => __( 'New invoice', 'invoicing' ), |
|
| 135 | - 'view_item' => __( 'View invoice', 'invoicing' ), |
|
| 136 | - 'view_items' => __( 'View Invoices', 'invoicing' ), |
|
| 137 | - 'search_items' => __( 'Search invoices', 'invoicing' ), |
|
| 138 | - 'not_found' => __( 'No invoices found', 'invoicing' ), |
|
| 139 | - 'not_found_in_trash' => __( 'No invoices found in trash', 'invoicing' ), |
|
| 140 | - 'parent' => __( 'Parent invoice', 'invoicing' ), |
|
| 141 | - 'featured_image' => __( 'Invoice image', 'invoicing' ), |
|
| 142 | - 'set_featured_image' => __( 'Set invoice image', 'invoicing' ), |
|
| 143 | - 'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ), |
|
| 144 | - 'use_featured_image' => __( 'Use as invoice image', 'invoicing' ), |
|
| 145 | - 'insert_into_item' => __( 'Insert into invoice', 'invoicing' ), |
|
| 146 | - 'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ), |
|
| 147 | - 'filter_items_list' => __( 'Filter invoices', 'invoicing' ), |
|
| 148 | - 'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ), |
|
| 149 | - 'items_list' => __( 'Invoices list', 'invoicing' ), |
|
| 150 | - ), |
|
| 151 | - 'description' => __( 'This is where invoices are stored.', 'invoicing' ), |
|
| 152 | - 'public' => true, |
|
| 153 | - 'has_archive' => false, |
|
| 154 | - 'publicly_queryable' => true, |
|
| 155 | - 'exclude_from_search' => true, |
|
| 156 | - 'show_ui' => true, |
|
| 157 | - 'show_in_menu' => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false, |
|
| 158 | - 'show_in_nav_menus' => false, |
|
| 159 | - 'supports' => array( 'title', 'author', 'excerpt' ), |
|
| 160 | - 'rewrite' => array( |
|
| 161 | - 'slug' => 'invoice', |
|
| 162 | - 'with_front' => false, |
|
| 163 | - ), |
|
| 164 | - 'query_var' => false, |
|
| 165 | - 'map_meta_cap' => true, |
|
| 166 | - 'show_in_admin_bar' => true, |
|
| 167 | - 'can_export' => true, |
|
| 168 | - 'hierarchical' => false, |
|
| 169 | - 'menu_position' => null, |
|
| 170 | - 'menu_icon' => 'dashicons-media-spreadsheet', |
|
| 171 | - ) |
|
| 172 | - ) |
|
| 173 | - ); |
|
| 119 | + // Register invoice post type. |
|
| 120 | + register_post_type( |
|
| 121 | + 'wpi_invoice', |
|
| 122 | + apply_filters( |
|
| 123 | + 'wpinv_register_post_type_invoice', |
|
| 124 | + array( |
|
| 125 | + 'labels' => array( |
|
| 126 | + 'name' => __( 'Invoices', 'invoicing' ), |
|
| 127 | + 'singular_name' => __( 'Invoice', 'invoicing' ), |
|
| 128 | + 'all_items' => __( 'Invoices', 'invoicing' ), |
|
| 129 | + 'menu_name' => _x( 'Invoices', 'Admin menu name', 'invoicing' ), |
|
| 130 | + 'add_new' => __( 'Add New', 'invoicing' ), |
|
| 131 | + 'add_new_item' => __( 'Add new invoice', 'invoicing' ), |
|
| 132 | + 'edit' => __( 'Edit', 'invoicing' ), |
|
| 133 | + 'edit_item' => __( 'Edit invoice', 'invoicing' ), |
|
| 134 | + 'new_item' => __( 'New invoice', 'invoicing' ), |
|
| 135 | + 'view_item' => __( 'View invoice', 'invoicing' ), |
|
| 136 | + 'view_items' => __( 'View Invoices', 'invoicing' ), |
|
| 137 | + 'search_items' => __( 'Search invoices', 'invoicing' ), |
|
| 138 | + 'not_found' => __( 'No invoices found', 'invoicing' ), |
|
| 139 | + 'not_found_in_trash' => __( 'No invoices found in trash', 'invoicing' ), |
|
| 140 | + 'parent' => __( 'Parent invoice', 'invoicing' ), |
|
| 141 | + 'featured_image' => __( 'Invoice image', 'invoicing' ), |
|
| 142 | + 'set_featured_image' => __( 'Set invoice image', 'invoicing' ), |
|
| 143 | + 'remove_featured_image' => __( 'Remove invoice image', 'invoicing' ), |
|
| 144 | + 'use_featured_image' => __( 'Use as invoice image', 'invoicing' ), |
|
| 145 | + 'insert_into_item' => __( 'Insert into invoice', 'invoicing' ), |
|
| 146 | + 'uploaded_to_this_item' => __( 'Uploaded to this invoice', 'invoicing' ), |
|
| 147 | + 'filter_items_list' => __( 'Filter invoices', 'invoicing' ), |
|
| 148 | + 'items_list_navigation' => __( 'Invoices navigation', 'invoicing' ), |
|
| 149 | + 'items_list' => __( 'Invoices list', 'invoicing' ), |
|
| 150 | + ), |
|
| 151 | + 'description' => __( 'This is where invoices are stored.', 'invoicing' ), |
|
| 152 | + 'public' => true, |
|
| 153 | + 'has_archive' => false, |
|
| 154 | + 'publicly_queryable' => true, |
|
| 155 | + 'exclude_from_search' => true, |
|
| 156 | + 'show_ui' => true, |
|
| 157 | + 'show_in_menu' => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false, |
|
| 158 | + 'show_in_nav_menus' => false, |
|
| 159 | + 'supports' => array( 'title', 'author', 'excerpt' ), |
|
| 160 | + 'rewrite' => array( |
|
| 161 | + 'slug' => 'invoice', |
|
| 162 | + 'with_front' => false, |
|
| 163 | + ), |
|
| 164 | + 'query_var' => false, |
|
| 165 | + 'map_meta_cap' => true, |
|
| 166 | + 'show_in_admin_bar' => true, |
|
| 167 | + 'can_export' => true, |
|
| 168 | + 'hierarchical' => false, |
|
| 169 | + 'menu_position' => null, |
|
| 170 | + 'menu_icon' => 'dashicons-media-spreadsheet', |
|
| 171 | + ) |
|
| 172 | + ) |
|
| 173 | + ); |
|
| 174 | 174 | |
| 175 | - // Register discount post type. |
|
| 176 | - register_post_type( |
|
| 177 | - 'wpi_discount', |
|
| 178 | - apply_filters( |
|
| 179 | - 'wpinv_register_post_type_discount', |
|
| 180 | - array( |
|
| 181 | - 'labels' => array( |
|
| 182 | - 'name' => __( 'Discounts', 'invoicing' ), |
|
| 183 | - 'singular_name' => __( 'Discount', 'invoicing' ), |
|
| 184 | - 'all_items' => __( 'Discounts', 'invoicing' ), |
|
| 185 | - 'menu_name' => _x( 'Discounts', 'Admin menu name', 'invoicing' ), |
|
| 186 | - 'add_new' => __( 'Add New', 'invoicing' ), |
|
| 187 | - 'add_new_item' => __( 'Add new discount', 'invoicing' ), |
|
| 188 | - 'edit' => __( 'Edit', 'invoicing' ), |
|
| 189 | - 'edit_item' => __( 'Edit discount', 'invoicing' ), |
|
| 190 | - 'new_item' => __( 'New discount', 'invoicing' ), |
|
| 191 | - 'view_item' => __( 'View discount', 'invoicing' ), |
|
| 192 | - 'view_items' => __( 'View Discounts', 'invoicing' ), |
|
| 193 | - 'search_items' => __( 'Search discounts', 'invoicing' ), |
|
| 194 | - 'not_found' => __( 'No discounts found', 'invoicing' ), |
|
| 195 | - 'not_found_in_trash' => __( 'No discounts found in trash', 'invoicing' ), |
|
| 196 | - 'parent' => __( 'Parent discount', 'invoicing' ), |
|
| 197 | - 'featured_image' => __( 'Discount image', 'invoicing' ), |
|
| 198 | - 'set_featured_image' => __( 'Set discount image', 'invoicing' ), |
|
| 199 | - 'remove_featured_image' => __( 'Remove discount image', 'invoicing' ), |
|
| 200 | - 'use_featured_image' => __( 'Use as discount image', 'invoicing' ), |
|
| 201 | - 'insert_into_item' => __( 'Insert into discount', 'invoicing' ), |
|
| 202 | - 'uploaded_to_this_item' => __( 'Uploaded to this discount', 'invoicing' ), |
|
| 203 | - 'filter_items_list' => __( 'Filter discounts', 'invoicing' ), |
|
| 204 | - 'items_list_navigation' => __( 'Discount navigation', 'invoicing' ), |
|
| 205 | - 'items_list' => __( 'Discounts list', 'invoicing' ), |
|
| 206 | - ), |
|
| 207 | - 'description' => __( 'This is where you can add new discounts that users can use in invoices.', 'invoicing' ), |
|
| 208 | - 'public' => false, |
|
| 209 | - 'can_export' => true, |
|
| 210 | - '_builtin' => false, |
|
| 211 | - 'publicly_queryable' => false, |
|
| 212 | - 'exclude_from_search'=> true, |
|
| 213 | - 'show_ui' => true, |
|
| 214 | - 'show_in_menu' => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false, |
|
| 215 | - 'query_var' => false, |
|
| 216 | - 'rewrite' => false, |
|
| 217 | - 'map_meta_cap' => true, |
|
| 218 | - 'has_archive' => false, |
|
| 219 | - 'hierarchical' => false, |
|
| 220 | - 'supports' => array( 'title', 'excerpt' ), |
|
| 221 | - 'show_in_nav_menus' => false, |
|
| 222 | - 'show_in_admin_bar' => true, |
|
| 223 | - 'menu_position' => null, |
|
| 224 | - ) |
|
| 225 | - ) |
|
| 226 | - ); |
|
| 175 | + // Register discount post type. |
|
| 176 | + register_post_type( |
|
| 177 | + 'wpi_discount', |
|
| 178 | + apply_filters( |
|
| 179 | + 'wpinv_register_post_type_discount', |
|
| 180 | + array( |
|
| 181 | + 'labels' => array( |
|
| 182 | + 'name' => __( 'Discounts', 'invoicing' ), |
|
| 183 | + 'singular_name' => __( 'Discount', 'invoicing' ), |
|
| 184 | + 'all_items' => __( 'Discounts', 'invoicing' ), |
|
| 185 | + 'menu_name' => _x( 'Discounts', 'Admin menu name', 'invoicing' ), |
|
| 186 | + 'add_new' => __( 'Add New', 'invoicing' ), |
|
| 187 | + 'add_new_item' => __( 'Add new discount', 'invoicing' ), |
|
| 188 | + 'edit' => __( 'Edit', 'invoicing' ), |
|
| 189 | + 'edit_item' => __( 'Edit discount', 'invoicing' ), |
|
| 190 | + 'new_item' => __( 'New discount', 'invoicing' ), |
|
| 191 | + 'view_item' => __( 'View discount', 'invoicing' ), |
|
| 192 | + 'view_items' => __( 'View Discounts', 'invoicing' ), |
|
| 193 | + 'search_items' => __( 'Search discounts', 'invoicing' ), |
|
| 194 | + 'not_found' => __( 'No discounts found', 'invoicing' ), |
|
| 195 | + 'not_found_in_trash' => __( 'No discounts found in trash', 'invoicing' ), |
|
| 196 | + 'parent' => __( 'Parent discount', 'invoicing' ), |
|
| 197 | + 'featured_image' => __( 'Discount image', 'invoicing' ), |
|
| 198 | + 'set_featured_image' => __( 'Set discount image', 'invoicing' ), |
|
| 199 | + 'remove_featured_image' => __( 'Remove discount image', 'invoicing' ), |
|
| 200 | + 'use_featured_image' => __( 'Use as discount image', 'invoicing' ), |
|
| 201 | + 'insert_into_item' => __( 'Insert into discount', 'invoicing' ), |
|
| 202 | + 'uploaded_to_this_item' => __( 'Uploaded to this discount', 'invoicing' ), |
|
| 203 | + 'filter_items_list' => __( 'Filter discounts', 'invoicing' ), |
|
| 204 | + 'items_list_navigation' => __( 'Discount navigation', 'invoicing' ), |
|
| 205 | + 'items_list' => __( 'Discounts list', 'invoicing' ), |
|
| 206 | + ), |
|
| 207 | + 'description' => __( 'This is where you can add new discounts that users can use in invoices.', 'invoicing' ), |
|
| 208 | + 'public' => false, |
|
| 209 | + 'can_export' => true, |
|
| 210 | + '_builtin' => false, |
|
| 211 | + 'publicly_queryable' => false, |
|
| 212 | + 'exclude_from_search'=> true, |
|
| 213 | + 'show_ui' => true, |
|
| 214 | + 'show_in_menu' => wpinv_current_user_can_manage_invoicing() ? 'wpinv' : false, |
|
| 215 | + 'query_var' => false, |
|
| 216 | + 'rewrite' => false, |
|
| 217 | + 'map_meta_cap' => true, |
|
| 218 | + 'has_archive' => false, |
|
| 219 | + 'hierarchical' => false, |
|
| 220 | + 'supports' => array( 'title', 'excerpt' ), |
|
| 221 | + 'show_in_nav_menus' => false, |
|
| 222 | + 'show_in_admin_bar' => true, |
|
| 223 | + 'menu_position' => null, |
|
| 224 | + ) |
|
| 225 | + ) |
|
| 226 | + ); |
|
| 227 | 227 | |
| 228 | - do_action( 'getpaid_after_register_post_types' ); |
|
| 229 | - } |
|
| 228 | + do_action( 'getpaid_after_register_post_types' ); |
|
| 229 | + } |
|
| 230 | 230 | |
| 231 | - /** |
|
| 232 | - * Register our custom post statuses. |
|
| 233 | - */ |
|
| 234 | - public static function register_post_status() { |
|
| 231 | + /** |
|
| 232 | + * Register our custom post statuses. |
|
| 233 | + */ |
|
| 234 | + public static function register_post_status() { |
|
| 235 | 235 | |
| 236 | - $invoice_statuses = apply_filters( |
|
| 237 | - 'getpaid_register_invoice_post_statuses', |
|
| 238 | - array( |
|
| 236 | + $invoice_statuses = apply_filters( |
|
| 237 | + 'getpaid_register_invoice_post_statuses', |
|
| 238 | + array( |
|
| 239 | 239 | |
| 240 | - 'wpi-pending' => array( |
|
| 241 | - 'label' => _x( 'Pending Payment', 'Invoice status', 'invoicing' ), |
|
| 242 | - 'public' => true, |
|
| 243 | - 'exclude_from_search' => true, |
|
| 244 | - 'show_in_admin_all_list' => true, |
|
| 245 | - 'show_in_admin_status_list' => true, |
|
| 246 | - /* translators: %s: number of invoices */ |
|
| 247 | - 'label_count' => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' ) |
|
| 248 | - ), |
|
| 240 | + 'wpi-pending' => array( |
|
| 241 | + 'label' => _x( 'Pending Payment', 'Invoice status', 'invoicing' ), |
|
| 242 | + 'public' => true, |
|
| 243 | + 'exclude_from_search' => true, |
|
| 244 | + 'show_in_admin_all_list' => true, |
|
| 245 | + 'show_in_admin_status_list' => true, |
|
| 246 | + /* translators: %s: number of invoices */ |
|
| 247 | + 'label_count' => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'invoicing' ) |
|
| 248 | + ), |
|
| 249 | 249 | |
| 250 | - 'wpi-processing' => array( |
|
| 251 | - 'label' => _x( 'Processing', 'Invoice status', 'invoicing' ), |
|
| 252 | - 'public' => true, |
|
| 253 | - 'exclude_from_search' => true, |
|
| 254 | - 'show_in_admin_all_list' => true, |
|
| 255 | - 'show_in_admin_status_list' => true, |
|
| 256 | - /* translators: %s: number of invoices */ |
|
| 257 | - 'label_count' => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' ) |
|
| 258 | - ), |
|
| 250 | + 'wpi-processing' => array( |
|
| 251 | + 'label' => _x( 'Processing', 'Invoice status', 'invoicing' ), |
|
| 252 | + 'public' => true, |
|
| 253 | + 'exclude_from_search' => true, |
|
| 254 | + 'show_in_admin_all_list' => true, |
|
| 255 | + 'show_in_admin_status_list' => true, |
|
| 256 | + /* translators: %s: number of invoices */ |
|
| 257 | + 'label_count' => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'invoicing' ) |
|
| 258 | + ), |
|
| 259 | 259 | |
| 260 | - 'wpi-onhold' => array( |
|
| 261 | - 'label' => _x( 'On Hold', 'Invoice status', 'invoicing' ), |
|
| 262 | - 'public' => true, |
|
| 263 | - 'exclude_from_search' => true, |
|
| 264 | - 'show_in_admin_all_list' => true, |
|
| 265 | - 'show_in_admin_status_list' => true, |
|
| 266 | - /* translators: %s: number of invoices */ |
|
| 267 | - 'label_count' => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' ) |
|
| 268 | - ), |
|
| 260 | + 'wpi-onhold' => array( |
|
| 261 | + 'label' => _x( 'On Hold', 'Invoice status', 'invoicing' ), |
|
| 262 | + 'public' => true, |
|
| 263 | + 'exclude_from_search' => true, |
|
| 264 | + 'show_in_admin_all_list' => true, |
|
| 265 | + 'show_in_admin_status_list' => true, |
|
| 266 | + /* translators: %s: number of invoices */ |
|
| 267 | + 'label_count' => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'invoicing' ) |
|
| 268 | + ), |
|
| 269 | 269 | |
| 270 | - 'wpi-cancelled' => array( |
|
| 271 | - 'label' => _x( 'Cancelled', 'Invoice status', 'invoicing' ), |
|
| 272 | - 'public' => true, |
|
| 273 | - 'exclude_from_search' => true, |
|
| 274 | - 'show_in_admin_all_list' => true, |
|
| 275 | - 'show_in_admin_status_list' => true, |
|
| 276 | - /* translators: %s: number of invoices */ |
|
| 277 | - 'label_count' => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' ) |
|
| 278 | - ), |
|
| 270 | + 'wpi-cancelled' => array( |
|
| 271 | + 'label' => _x( 'Cancelled', 'Invoice status', 'invoicing' ), |
|
| 272 | + 'public' => true, |
|
| 273 | + 'exclude_from_search' => true, |
|
| 274 | + 'show_in_admin_all_list' => true, |
|
| 275 | + 'show_in_admin_status_list' => true, |
|
| 276 | + /* translators: %s: number of invoices */ |
|
| 277 | + 'label_count' => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'invoicing' ) |
|
| 278 | + ), |
|
| 279 | 279 | |
| 280 | - 'wpi-refunded' => array( |
|
| 281 | - 'label' => _x( 'Refunded', 'Invoice status', 'invoicing' ), |
|
| 282 | - 'public' => true, |
|
| 283 | - 'exclude_from_search' => true, |
|
| 284 | - 'show_in_admin_all_list' => true, |
|
| 285 | - 'show_in_admin_status_list' => true, |
|
| 286 | - /* translators: %s: number of invoices */ |
|
| 287 | - 'label_count' => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' ) |
|
| 288 | - ), |
|
| 280 | + 'wpi-refunded' => array( |
|
| 281 | + 'label' => _x( 'Refunded', 'Invoice status', 'invoicing' ), |
|
| 282 | + 'public' => true, |
|
| 283 | + 'exclude_from_search' => true, |
|
| 284 | + 'show_in_admin_all_list' => true, |
|
| 285 | + 'show_in_admin_status_list' => true, |
|
| 286 | + /* translators: %s: number of invoices */ |
|
| 287 | + 'label_count' => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'invoicing' ) |
|
| 288 | + ), |
|
| 289 | 289 | |
| 290 | - 'wpi-failed' => array( |
|
| 291 | - 'label' => _x( 'Failed', 'Invoice status', 'invoicing' ), |
|
| 292 | - 'public' => true, |
|
| 293 | - 'exclude_from_search' => true, |
|
| 294 | - 'show_in_admin_all_list' => true, |
|
| 295 | - 'show_in_admin_status_list' => true, |
|
| 296 | - /* translators: %s: number of invoices */ |
|
| 297 | - 'label_count' => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' ) |
|
| 298 | - ), |
|
| 290 | + 'wpi-failed' => array( |
|
| 291 | + 'label' => _x( 'Failed', 'Invoice status', 'invoicing' ), |
|
| 292 | + 'public' => true, |
|
| 293 | + 'exclude_from_search' => true, |
|
| 294 | + 'show_in_admin_all_list' => true, |
|
| 295 | + 'show_in_admin_status_list' => true, |
|
| 296 | + /* translators: %s: number of invoices */ |
|
| 297 | + 'label_count' => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'invoicing' ) |
|
| 298 | + ), |
|
| 299 | 299 | |
| 300 | - 'wpi-renewal' => array( |
|
| 301 | - 'label' => _x( 'Renewal', 'Invoice status', 'invoicing' ), |
|
| 302 | - 'public' => true, |
|
| 303 | - 'exclude_from_search' => true, |
|
| 304 | - 'show_in_admin_all_list' => true, |
|
| 305 | - 'show_in_admin_status_list' => true, |
|
| 306 | - /* translators: %s: number of invoices */ |
|
| 307 | - 'label_count' => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' ) |
|
| 308 | - ) |
|
| 309 | - ) |
|
| 310 | - ); |
|
| 300 | + 'wpi-renewal' => array( |
|
| 301 | + 'label' => _x( 'Renewal', 'Invoice status', 'invoicing' ), |
|
| 302 | + 'public' => true, |
|
| 303 | + 'exclude_from_search' => true, |
|
| 304 | + 'show_in_admin_all_list' => true, |
|
| 305 | + 'show_in_admin_status_list' => true, |
|
| 306 | + /* translators: %s: number of invoices */ |
|
| 307 | + 'label_count' => _n_noop( 'Renewal <span class="count">(%s)</span>', 'Renewal <span class="count">(%s)</span>', 'invoicing' ) |
|
| 308 | + ) |
|
| 309 | + ) |
|
| 310 | + ); |
|
| 311 | 311 | |
| 312 | - foreach ( $invoice_statuses as $invoice_statuse => $args ) { |
|
| 313 | - register_post_status( $invoice_statuse, $args ); |
|
| 314 | - } |
|
| 315 | - } |
|
| 312 | + foreach ( $invoice_statuses as $invoice_statuse => $args ) { |
|
| 313 | + register_post_status( $invoice_statuse, $args ); |
|
| 314 | + } |
|
| 315 | + } |
|
| 316 | 316 | |
| 317 | - /** |
|
| 318 | - * Flush rewrite rules. |
|
| 319 | - */ |
|
| 320 | - public static function flush_rewrite_rules() { |
|
| 321 | - flush_rewrite_rules(); |
|
| 322 | - } |
|
| 317 | + /** |
|
| 318 | + * Flush rewrite rules. |
|
| 319 | + */ |
|
| 320 | + public static function flush_rewrite_rules() { |
|
| 321 | + flush_rewrite_rules(); |
|
| 322 | + } |
|
| 323 | 323 | |
| 324 | - /** |
|
| 325 | - * Flush rules to prevent 404. |
|
| 326 | - * |
|
| 327 | - */ |
|
| 328 | - public static function maybe_flush_rewrite_rules() { |
|
| 329 | - if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) { |
|
| 330 | - update_option( 'getpaid_flushed_rewrite_rules', '1' ); |
|
| 331 | - self::flush_rewrite_rules(); |
|
| 332 | - } |
|
| 333 | - } |
|
| 324 | + /** |
|
| 325 | + * Flush rules to prevent 404. |
|
| 326 | + * |
|
| 327 | + */ |
|
| 328 | + public static function maybe_flush_rewrite_rules() { |
|
| 329 | + if ( ! get_option( 'getpaid_flushed_rewrite_rules' ) ) { |
|
| 330 | + update_option( 'getpaid_flushed_rewrite_rules', '1' ); |
|
| 331 | + self::flush_rewrite_rules(); |
|
| 332 | + } |
|
| 333 | + } |
|
| 334 | 334 | |
| 335 | 335 | } |
@@ -15,125 +15,125 @@ discard block |
||
| 15 | 15 | */ |
| 16 | 16 | class WPInv_Subscription extends GetPaid_Data { |
| 17 | 17 | |
| 18 | - /** |
|
| 19 | - * Which data store to load. |
|
| 20 | - * |
|
| 21 | - * @var string |
|
| 22 | - */ |
|
| 23 | - protected $data_store_name = 'subscription'; |
|
| 24 | - |
|
| 25 | - /** |
|
| 26 | - * This is the name of this object type. |
|
| 27 | - * |
|
| 28 | - * @var string |
|
| 29 | - */ |
|
| 30 | - protected $object_type = 'subscription'; |
|
| 31 | - |
|
| 32 | - /** |
|
| 33 | - * Item Data array. This is the core item data exposed in APIs. |
|
| 34 | - * |
|
| 35 | - * @since 1.0.19 |
|
| 36 | - * @var array |
|
| 37 | - */ |
|
| 38 | - protected $data = array( |
|
| 39 | - 'customer_id' => 0, |
|
| 40 | - 'frequency' => 1, |
|
| 41 | - 'period' => 'D', |
|
| 42 | - 'initial_amount' => null, |
|
| 43 | - 'recurring_amount' => null, |
|
| 44 | - 'bill_times' => 0, |
|
| 45 | - 'transaction_id' => '', |
|
| 46 | - 'parent_payment_id' => null, |
|
| 47 | - 'product_id' => 0, |
|
| 48 | - 'created' => '0000-00-00 00:00:00', |
|
| 49 | - 'expiration' => '0000-00-00 00:00:00', |
|
| 50 | - 'trial_period' => '', |
|
| 51 | - 'status' => 'pending', |
|
| 52 | - 'profile_id' => '', |
|
| 53 | - 'gateway' => '', |
|
| 54 | - 'customer' => '', |
|
| 55 | - ); |
|
| 56 | - |
|
| 57 | - /** |
|
| 58 | - * Stores the status transition information. |
|
| 59 | - * |
|
| 60 | - * @since 1.0.19 |
|
| 61 | - * @var bool |
|
| 62 | - */ |
|
| 63 | - protected $status_transition = false; |
|
| 64 | - |
|
| 65 | - /** |
|
| 66 | - * Get the subscription if ID is passed, otherwise the subscription is new and empty. |
|
| 67 | - * |
|
| 68 | - * @param int|string|object|WPInv_Subscription $subscription Subscription id, profile_id, or object to read. |
|
| 69 | - * @param bool $deprecated |
|
| 70 | - */ |
|
| 71 | - function __construct( $subscription = 0, $deprecated = false ) { |
|
| 72 | - |
|
| 73 | - parent::__construct( $subscription ); |
|
| 74 | - |
|
| 75 | - if ( ! $deprecated && ! empty( $subscription ) && is_numeric( $subscription ) ) { |
|
| 76 | - $this->set_id( $subscription ); |
|
| 77 | - } elseif ( $subscription instanceof self ) { |
|
| 78 | - $this->set_id( $subscription->get_id() ); |
|
| 79 | - } elseif ( $deprecated && $subscription_id = self::get_subscription_id_by_field( $subscription, 'profile_id' ) ) { |
|
| 80 | - $this->set_id( $subscription_id ); |
|
| 81 | - } elseif ( ! empty( $subscription->id ) ) { |
|
| 82 | - $this->set_id( $subscription->id ); |
|
| 83 | - } else { |
|
| 84 | - $this->set_object_read( true ); |
|
| 85 | - } |
|
| 86 | - |
|
| 87 | - // Load the datastore. |
|
| 88 | - $this->data_store = GetPaid_Data_Store::load( $this->data_store_name ); |
|
| 89 | - |
|
| 90 | - if ( $this->get_id() > 0 ) { |
|
| 91 | - $this->data_store->read( $this ); |
|
| 92 | - } |
|
| 93 | - |
|
| 94 | - } |
|
| 95 | - |
|
| 96 | - /** |
|
| 97 | - * Given an invoice id, profile id, transaction id, it returns the subscription's id. |
|
| 98 | - * |
|
| 99 | - * |
|
| 100 | - * @static |
|
| 101 | - * @param string $value |
|
| 102 | - * @param string $field Either invoice_id, transaction_id or profile_id. |
|
| 103 | - * @since 1.0.19 |
|
| 104 | - * @return int |
|
| 105 | - */ |
|
| 106 | - public static function get_subscription_id_by_field( $value, $field = 'profile_id' ) { |
|
| 18 | + /** |
|
| 19 | + * Which data store to load. |
|
| 20 | + * |
|
| 21 | + * @var string |
|
| 22 | + */ |
|
| 23 | + protected $data_store_name = 'subscription'; |
|
| 24 | + |
|
| 25 | + /** |
|
| 26 | + * This is the name of this object type. |
|
| 27 | + * |
|
| 28 | + * @var string |
|
| 29 | + */ |
|
| 30 | + protected $object_type = 'subscription'; |
|
| 31 | + |
|
| 32 | + /** |
|
| 33 | + * Item Data array. This is the core item data exposed in APIs. |
|
| 34 | + * |
|
| 35 | + * @since 1.0.19 |
|
| 36 | + * @var array |
|
| 37 | + */ |
|
| 38 | + protected $data = array( |
|
| 39 | + 'customer_id' => 0, |
|
| 40 | + 'frequency' => 1, |
|
| 41 | + 'period' => 'D', |
|
| 42 | + 'initial_amount' => null, |
|
| 43 | + 'recurring_amount' => null, |
|
| 44 | + 'bill_times' => 0, |
|
| 45 | + 'transaction_id' => '', |
|
| 46 | + 'parent_payment_id' => null, |
|
| 47 | + 'product_id' => 0, |
|
| 48 | + 'created' => '0000-00-00 00:00:00', |
|
| 49 | + 'expiration' => '0000-00-00 00:00:00', |
|
| 50 | + 'trial_period' => '', |
|
| 51 | + 'status' => 'pending', |
|
| 52 | + 'profile_id' => '', |
|
| 53 | + 'gateway' => '', |
|
| 54 | + 'customer' => '', |
|
| 55 | + ); |
|
| 56 | + |
|
| 57 | + /** |
|
| 58 | + * Stores the status transition information. |
|
| 59 | + * |
|
| 60 | + * @since 1.0.19 |
|
| 61 | + * @var bool |
|
| 62 | + */ |
|
| 63 | + protected $status_transition = false; |
|
| 64 | + |
|
| 65 | + /** |
|
| 66 | + * Get the subscription if ID is passed, otherwise the subscription is new and empty. |
|
| 67 | + * |
|
| 68 | + * @param int|string|object|WPInv_Subscription $subscription Subscription id, profile_id, or object to read. |
|
| 69 | + * @param bool $deprecated |
|
| 70 | + */ |
|
| 71 | + function __construct( $subscription = 0, $deprecated = false ) { |
|
| 72 | + |
|
| 73 | + parent::__construct( $subscription ); |
|
| 74 | + |
|
| 75 | + if ( ! $deprecated && ! empty( $subscription ) && is_numeric( $subscription ) ) { |
|
| 76 | + $this->set_id( $subscription ); |
|
| 77 | + } elseif ( $subscription instanceof self ) { |
|
| 78 | + $this->set_id( $subscription->get_id() ); |
|
| 79 | + } elseif ( $deprecated && $subscription_id = self::get_subscription_id_by_field( $subscription, 'profile_id' ) ) { |
|
| 80 | + $this->set_id( $subscription_id ); |
|
| 81 | + } elseif ( ! empty( $subscription->id ) ) { |
|
| 82 | + $this->set_id( $subscription->id ); |
|
| 83 | + } else { |
|
| 84 | + $this->set_object_read( true ); |
|
| 85 | + } |
|
| 86 | + |
|
| 87 | + // Load the datastore. |
|
| 88 | + $this->data_store = GetPaid_Data_Store::load( $this->data_store_name ); |
|
| 89 | + |
|
| 90 | + if ( $this->get_id() > 0 ) { |
|
| 91 | + $this->data_store->read( $this ); |
|
| 92 | + } |
|
| 93 | + |
|
| 94 | + } |
|
| 95 | + |
|
| 96 | + /** |
|
| 97 | + * Given an invoice id, profile id, transaction id, it returns the subscription's id. |
|
| 98 | + * |
|
| 99 | + * |
|
| 100 | + * @static |
|
| 101 | + * @param string $value |
|
| 102 | + * @param string $field Either invoice_id, transaction_id or profile_id. |
|
| 103 | + * @since 1.0.19 |
|
| 104 | + * @return int |
|
| 105 | + */ |
|
| 106 | + public static function get_subscription_id_by_field( $value, $field = 'profile_id' ) { |
|
| 107 | 107 | global $wpdb; |
| 108 | 108 | |
| 109 | - // Trim the value. |
|
| 110 | - $value = trim( $value ); |
|
| 109 | + // Trim the value. |
|
| 110 | + $value = trim( $value ); |
|
| 111 | 111 | |
| 112 | - if ( empty( $value ) ) { |
|
| 113 | - return 0; |
|
| 114 | - } |
|
| 112 | + if ( empty( $value ) ) { |
|
| 113 | + return 0; |
|
| 114 | + } |
|
| 115 | 115 | |
| 116 | - if ( 'invoice_id' == $field ) { |
|
| 117 | - $field = 'parent_payment_id'; |
|
| 118 | - } |
|
| 116 | + if ( 'invoice_id' == $field ) { |
|
| 117 | + $field = 'parent_payment_id'; |
|
| 118 | + } |
|
| 119 | 119 | |
| 120 | 120 | // Valid fields. |
| 121 | 121 | $fields = array( |
| 122 | - 'parent_payment_id', |
|
| 123 | - 'transaction_id', |
|
| 124 | - 'profile_id' |
|
| 125 | - ); |
|
| 126 | - |
|
| 127 | - // Ensure a field has been passed. |
|
| 128 | - if ( empty( $field ) || ! in_array( $field, $fields ) ) { |
|
| 129 | - return 0; |
|
| 130 | - } |
|
| 131 | - |
|
| 132 | - // Maybe retrieve from the cache. |
|
| 133 | - $subscription_id = wp_cache_get( $value, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
| 134 | - if ( ! empty( $subscription_id ) ) { |
|
| 135 | - return $subscription_id; |
|
| 136 | - } |
|
| 122 | + 'parent_payment_id', |
|
| 123 | + 'transaction_id', |
|
| 124 | + 'profile_id' |
|
| 125 | + ); |
|
| 126 | + |
|
| 127 | + // Ensure a field has been passed. |
|
| 128 | + if ( empty( $field ) || ! in_array( $field, $fields ) ) { |
|
| 129 | + return 0; |
|
| 130 | + } |
|
| 131 | + |
|
| 132 | + // Maybe retrieve from the cache. |
|
| 133 | + $subscription_id = wp_cache_get( $value, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
| 134 | + if ( ! empty( $subscription_id ) ) { |
|
| 135 | + return $subscription_id; |
|
| 136 | + } |
|
| 137 | 137 | |
| 138 | 138 | // Fetch from the db. |
| 139 | 139 | $table = $wpdb->prefix . 'wpinv_subscriptions'; |
@@ -141,34 +141,34 @@ discard block |
||
| 141 | 141 | $wpdb->prepare( "SELECT `id` FROM $table WHERE `$field`=%s LIMIT 1", $value ) |
| 142 | 142 | ); |
| 143 | 143 | |
| 144 | - if ( empty( $subscription_id ) ) { |
|
| 145 | - return 0; |
|
| 146 | - } |
|
| 144 | + if ( empty( $subscription_id ) ) { |
|
| 145 | + return 0; |
|
| 146 | + } |
|
| 147 | 147 | |
| 148 | - // Update the cache with our data. |
|
| 149 | - wp_cache_set( $value, $subscription_id, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
| 148 | + // Update the cache with our data. |
|
| 149 | + wp_cache_set( $value, $subscription_id, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
| 150 | 150 | |
| 151 | - return $subscription_id; |
|
| 152 | - } |
|
| 151 | + return $subscription_id; |
|
| 152 | + } |
|
| 153 | 153 | |
| 154 | - /** |
|
| 154 | + /** |
|
| 155 | 155 | * Clears the subscription's cache. |
| 156 | 156 | */ |
| 157 | 157 | public function clear_cache() { |
| 158 | - wp_cache_delete( $this->get_parent_payment_id(), 'getpaid_subscription_parent_payment_ids_to_subscription_ids' ); |
|
| 159 | - wp_cache_delete( $this->get_transaction_id(), 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
| 160 | - wp_cache_delete( $this->get_profile_id(), 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
| 161 | - wp_cache_delete( $this->get_id(), 'getpaid_subscriptions' ); |
|
| 162 | - } |
|
| 158 | + wp_cache_delete( $this->get_parent_payment_id(), 'getpaid_subscription_parent_payment_ids_to_subscription_ids' ); |
|
| 159 | + wp_cache_delete( $this->get_transaction_id(), 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
| 160 | + wp_cache_delete( $this->get_profile_id(), 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
| 161 | + wp_cache_delete( $this->get_id(), 'getpaid_subscriptions' ); |
|
| 162 | + } |
|
| 163 | 163 | |
| 164 | - /** |
|
| 164 | + /** |
|
| 165 | 165 | * Checks if a subscription key is set. |
| 166 | 166 | */ |
| 167 | 167 | public function _isset( $key ) { |
| 168 | 168 | return isset( $this->data[$key] ) || method_exists( $this, "get_$key" ); |
| 169 | - } |
|
| 169 | + } |
|
| 170 | 170 | |
| 171 | - /* |
|
| 171 | + /* |
|
| 172 | 172 | |-------------------------------------------------------------------------- |
| 173 | 173 | | CRUD methods |
| 174 | 174 | |-------------------------------------------------------------------------- |
@@ -177,545 +177,545 @@ discard block |
||
| 177 | 177 | | |
| 178 | 178 | */ |
| 179 | 179 | |
| 180 | - /* |
|
| 181 | - |-------------------------------------------------------------------------- |
|
| 182 | - | Getters |
|
| 183 | - |-------------------------------------------------------------------------- |
|
| 184 | - */ |
|
| 180 | + /* |
|
| 181 | + |-------------------------------------------------------------------------- |
|
| 182 | + | Getters |
|
| 183 | + |-------------------------------------------------------------------------- |
|
| 184 | + */ |
|
| 185 | + |
|
| 186 | + /** |
|
| 187 | + * Get customer id. |
|
| 188 | + * |
|
| 189 | + * @since 1.0.19 |
|
| 190 | + * @param string $context View or edit context. |
|
| 191 | + * @return int |
|
| 192 | + */ |
|
| 193 | + public function get_customer_id( $context = 'view' ) { |
|
| 194 | + return (int) $this->get_prop( 'customer_id', $context ); |
|
| 195 | + } |
|
| 196 | + |
|
| 197 | + /** |
|
| 198 | + * Get customer information. |
|
| 199 | + * |
|
| 200 | + * @since 1.0.19 |
|
| 201 | + * @param string $context View or edit context. |
|
| 202 | + * @return WP_User|false WP_User object on success, false on failure. |
|
| 203 | + */ |
|
| 204 | + public function get_customer( $context = 'view' ) { |
|
| 205 | + return get_userdata( $this->get_customer_id( $context ) ); |
|
| 206 | + } |
|
| 207 | + |
|
| 208 | + /** |
|
| 209 | + * Get parent invoice id. |
|
| 210 | + * |
|
| 211 | + * @since 1.0.19 |
|
| 212 | + * @param string $context View or edit context. |
|
| 213 | + * @return int |
|
| 214 | + */ |
|
| 215 | + public function get_parent_invoice_id( $context = 'view' ) { |
|
| 216 | + return (int) $this->get_prop( 'parent_payment_id', $context ); |
|
| 217 | + } |
|
| 218 | + |
|
| 219 | + /** |
|
| 220 | + * Alias for self::get_parent_invoice_id(). |
|
| 221 | + * |
|
| 222 | + * @since 1.0.19 |
|
| 223 | + * @param string $context View or edit context. |
|
| 224 | + * @return int |
|
| 225 | + */ |
|
| 226 | + public function get_parent_payment_id( $context = 'view' ) { |
|
| 227 | + return $this->get_parent_invoice_id( $context ); |
|
| 228 | + } |
|
| 229 | + |
|
| 230 | + /** |
|
| 231 | + * Alias for self::get_parent_invoice_id(). |
|
| 232 | + * |
|
| 233 | + * @since 1.0.0 |
|
| 234 | + * @return int |
|
| 235 | + */ |
|
| 236 | + public function get_original_payment_id( $context = 'view' ) { |
|
| 237 | + return $this->get_parent_invoice_id( $context ); |
|
| 238 | + } |
|
| 239 | + |
|
| 240 | + /** |
|
| 241 | + * Get parent invoice. |
|
| 242 | + * |
|
| 243 | + * @since 1.0.19 |
|
| 244 | + * @param string $context View or edit context. |
|
| 245 | + * @return WPInv_Invoice |
|
| 246 | + */ |
|
| 247 | + public function get_parent_invoice( $context = 'view' ) { |
|
| 248 | + return new WPInv_Invoice( $this->get_parent_invoice_id( $context ) ); |
|
| 249 | + } |
|
| 250 | + |
|
| 251 | + /** |
|
| 252 | + * Alias for self::get_parent_invoice(). |
|
| 253 | + * |
|
| 254 | + * @since 1.0.19 |
|
| 255 | + * @param string $context View or edit context. |
|
| 256 | + * @return WPInv_Invoice |
|
| 257 | + */ |
|
| 258 | + public function get_parent_payment( $context = 'view' ) { |
|
| 259 | + return $this->get_parent_invoice( $context ); |
|
| 260 | + } |
|
| 261 | + |
|
| 262 | + /** |
|
| 263 | + * Get subscription's product id. |
|
| 264 | + * |
|
| 265 | + * @since 1.0.19 |
|
| 266 | + * @param string $context View or edit context. |
|
| 267 | + * @return int |
|
| 268 | + */ |
|
| 269 | + public function get_product_id( $context = 'view' ) { |
|
| 270 | + return (int) $this->get_prop( 'product_id', $context ); |
|
| 271 | + } |
|
| 272 | + |
|
| 273 | + /** |
|
| 274 | + * Get the subscription product. |
|
| 275 | + * |
|
| 276 | + * @since 1.0.19 |
|
| 277 | + * @param string $context View or edit context. |
|
| 278 | + * @return WPInv_Item |
|
| 279 | + */ |
|
| 280 | + public function get_product( $context = 'view' ) { |
|
| 281 | + return new WPInv_Item( $this->get_product_id( $context ) ); |
|
| 282 | + } |
|
| 283 | + |
|
| 284 | + /** |
|
| 285 | + * Get parent invoice's gateway. |
|
| 286 | + * |
|
| 287 | + * Here for backwards compatibility. |
|
| 288 | + * |
|
| 289 | + * @since 1.0.19 |
|
| 290 | + * @param string $context View or edit context. |
|
| 291 | + * @return string |
|
| 292 | + */ |
|
| 293 | + public function get_gateway( $context = 'view' ) { |
|
| 294 | + return $this->get_parent_invoice( $context )->get_gateway(); |
|
| 295 | + } |
|
| 296 | + |
|
| 297 | + /** |
|
| 298 | + * Get the period of a renewal. |
|
| 299 | + * |
|
| 300 | + * @since 1.0.19 |
|
| 301 | + * @param string $context View or edit context. |
|
| 302 | + * @return string |
|
| 303 | + */ |
|
| 304 | + public function get_period( $context = 'view' ) { |
|
| 305 | + return $this->get_prop( 'period', $context ); |
|
| 306 | + } |
|
| 307 | + |
|
| 308 | + /** |
|
| 309 | + * Get number of periods each renewal is valid for. |
|
| 310 | + * |
|
| 311 | + * @since 1.0.19 |
|
| 312 | + * @param string $context View or edit context. |
|
| 313 | + * @return int |
|
| 314 | + */ |
|
| 315 | + public function get_frequency( $context = 'view' ) { |
|
| 316 | + return (int) $this->get_prop( 'frequency', $context ); |
|
| 317 | + } |
|
| 318 | + |
|
| 319 | + /** |
|
| 320 | + * Get the initial amount for the subscription. |
|
| 321 | + * |
|
| 322 | + * @since 1.0.19 |
|
| 323 | + * @param string $context View or edit context. |
|
| 324 | + * @return float |
|
| 325 | + */ |
|
| 326 | + public function get_initial_amount( $context = 'view' ) { |
|
| 327 | + return (float) wpinv_sanitize_amount( $this->get_prop( 'initial_amount', $context ) ); |
|
| 328 | + } |
|
| 329 | + |
|
| 330 | + /** |
|
| 331 | + * Get the recurring amount for the subscription. |
|
| 332 | + * |
|
| 333 | + * @since 1.0.19 |
|
| 334 | + * @param string $context View or edit context. |
|
| 335 | + * @return float |
|
| 336 | + */ |
|
| 337 | + public function get_recurring_amount( $context = 'view' ) { |
|
| 338 | + return (float) wpinv_sanitize_amount( $this->get_prop( 'recurring_amount', $context ) ); |
|
| 339 | + } |
|
| 340 | + |
|
| 341 | + /** |
|
| 342 | + * Get number of times that this subscription can be renewed. |
|
| 343 | + * |
|
| 344 | + * @since 1.0.19 |
|
| 345 | + * @param string $context View or edit context. |
|
| 346 | + * @return int |
|
| 347 | + */ |
|
| 348 | + public function get_bill_times( $context = 'view' ) { |
|
| 349 | + return (int) $this->get_prop( 'bill_times', $context ); |
|
| 350 | + } |
|
| 351 | + |
|
| 352 | + /** |
|
| 353 | + * Get transaction id of this subscription's parent invoice. |
|
| 354 | + * |
|
| 355 | + * @since 1.0.19 |
|
| 356 | + * @param string $context View or edit context. |
|
| 357 | + * @return string |
|
| 358 | + */ |
|
| 359 | + public function get_transaction_id( $context = 'view' ) { |
|
| 360 | + return $this->get_prop( 'transaction_id', $context ); |
|
| 361 | + } |
|
| 362 | + |
|
| 363 | + /** |
|
| 364 | + * Get the date that the subscription was created. |
|
| 365 | + * |
|
| 366 | + * @since 1.0.19 |
|
| 367 | + * @param string $context View or edit context. |
|
| 368 | + * @return string |
|
| 369 | + */ |
|
| 370 | + public function get_created( $context = 'view' ) { |
|
| 371 | + return $this->get_prop( 'created', $context ); |
|
| 372 | + } |
|
| 373 | + |
|
| 374 | + /** |
|
| 375 | + * Alias for self::get_created(). |
|
| 376 | + * |
|
| 377 | + * @since 1.0.19 |
|
| 378 | + * @param string $context View or edit context. |
|
| 379 | + * @return string |
|
| 380 | + */ |
|
| 381 | + public function get_date_created( $context = 'view' ) { |
|
| 382 | + return $this->get_created( $context ); |
|
| 383 | + } |
|
| 384 | + |
|
| 385 | + /** |
|
| 386 | + * Retrieves the creation date in a timestamp |
|
| 387 | + * |
|
| 388 | + * @since 1.0.0 |
|
| 389 | + * @return int |
|
| 390 | + */ |
|
| 391 | + public function get_time_created() { |
|
| 392 | + $created = $this->get_date_created(); |
|
| 393 | + return empty( $created ) ? current_time( 'timestamp' ) : strtotime( $created, current_time( 'timestamp' ) ); |
|
| 394 | + } |
|
| 395 | + |
|
| 396 | + /** |
|
| 397 | + * Get GMT date when the subscription was created. |
|
| 398 | + * |
|
| 399 | + * @since 1.0.19 |
|
| 400 | + * @param string $context View or edit context. |
|
| 401 | + * @return string |
|
| 402 | + */ |
|
| 403 | + public function get_date_created_gmt( $context = 'view' ) { |
|
| 404 | + $date = $this->get_date_created( $context ); |
|
| 405 | + |
|
| 406 | + if ( $date ) { |
|
| 407 | + $date = get_gmt_from_date( $date ); |
|
| 408 | + } |
|
| 409 | + return $date; |
|
| 410 | + } |
|
| 411 | + |
|
| 412 | + /** |
|
| 413 | + * Get the date that the subscription will renew. |
|
| 414 | + * |
|
| 415 | + * @since 1.0.19 |
|
| 416 | + * @param string $context View or edit context. |
|
| 417 | + * @return string |
|
| 418 | + */ |
|
| 419 | + public function get_next_renewal_date( $context = 'view' ) { |
|
| 420 | + return $this->get_prop( 'expiration', $context ); |
|
| 421 | + } |
|
| 422 | + |
|
| 423 | + /** |
|
| 424 | + * Alias for self::get_next_renewal_date(). |
|
| 425 | + * |
|
| 426 | + * @since 1.0.19 |
|
| 427 | + * @param string $context View or edit context. |
|
| 428 | + * @return string |
|
| 429 | + */ |
|
| 430 | + public function get_expiration( $context = 'view' ) { |
|
| 431 | + return $this->get_next_renewal_date( $context ); |
|
| 432 | + } |
|
| 433 | + |
|
| 434 | + /** |
|
| 435 | + * Retrieves the expiration date in a timestamp |
|
| 436 | + * |
|
| 437 | + * @since 1.0.0 |
|
| 438 | + * @return int |
|
| 439 | + */ |
|
| 440 | + public function get_expiration_time() { |
|
| 441 | + $expiration = $this->get_expiration(); |
|
| 442 | + |
|
| 443 | + if ( empty( $expiration ) || '0000-00-00 00:00:00' == $expiration ) { |
|
| 444 | + return current_time( 'timestamp' ); |
|
| 445 | + } |
|
| 446 | + |
|
| 447 | + $expiration = strtotime( $expiration, current_time( 'timestamp' ) ); |
|
| 448 | + return $expiration < current_time( 'timestamp' ) ? current_time( 'timestamp' ) : $expiration; |
|
| 449 | + } |
|
| 450 | + |
|
| 451 | + /** |
|
| 452 | + * Get GMT date when the subscription will renew. |
|
| 453 | + * |
|
| 454 | + * @since 1.0.19 |
|
| 455 | + * @param string $context View or edit context. |
|
| 456 | + * @return string |
|
| 457 | + */ |
|
| 458 | + public function get_next_renewal_date_gmt( $context = 'view' ) { |
|
| 459 | + $date = $this->get_next_renewal_date( $context ); |
|
| 460 | + |
|
| 461 | + if ( $date ) { |
|
| 462 | + $date = get_gmt_from_date( $date ); |
|
| 463 | + } |
|
| 464 | + return $date; |
|
| 465 | + } |
|
| 466 | + |
|
| 467 | + /** |
|
| 468 | + * Get the subscription's trial period. |
|
| 469 | + * |
|
| 470 | + * @since 1.0.19 |
|
| 471 | + * @param string $context View or edit context. |
|
| 472 | + * @return string |
|
| 473 | + */ |
|
| 474 | + public function get_trial_period( $context = 'view' ) { |
|
| 475 | + return $this->get_prop( 'trial_period', $context ); |
|
| 476 | + } |
|
| 477 | + |
|
| 478 | + /** |
|
| 479 | + * Get the subscription's status. |
|
| 480 | + * |
|
| 481 | + * @since 1.0.19 |
|
| 482 | + * @param string $context View or edit context. |
|
| 483 | + * @return string |
|
| 484 | + */ |
|
| 485 | + public function get_status( $context = 'view' ) { |
|
| 486 | + return $this->get_prop( 'status', $context ); |
|
| 487 | + } |
|
| 488 | + |
|
| 489 | + /** |
|
| 490 | + * Get the subscription's profile id. |
|
| 491 | + * |
|
| 492 | + * @since 1.0.19 |
|
| 493 | + * @param string $context View or edit context. |
|
| 494 | + * @return string |
|
| 495 | + */ |
|
| 496 | + public function get_profile_id( $context = 'view' ) { |
|
| 497 | + return $this->get_prop( 'profile_id', $context ); |
|
| 498 | + } |
|
| 499 | + |
|
| 500 | + /* |
|
| 501 | + |-------------------------------------------------------------------------- |
|
| 502 | + | Setters |
|
| 503 | + |-------------------------------------------------------------------------- |
|
| 504 | + */ |
|
| 505 | + |
|
| 506 | + /** |
|
| 507 | + * Set customer id. |
|
| 508 | + * |
|
| 509 | + * @since 1.0.19 |
|
| 510 | + * @param int $value The customer's id. |
|
| 511 | + */ |
|
| 512 | + public function set_customer_id( $value ) { |
|
| 513 | + $this->set_prop( 'customer_id', (int) $value ); |
|
| 514 | + } |
|
| 515 | + |
|
| 516 | + /** |
|
| 517 | + * Set parent invoice id. |
|
| 518 | + * |
|
| 519 | + * @since 1.0.19 |
|
| 520 | + * @param int $value The parent invoice id. |
|
| 521 | + */ |
|
| 522 | + public function set_parent_invoice_id( $value ) { |
|
| 523 | + $this->set_prop( 'parent_payment_id', (int) $value ); |
|
| 524 | + } |
|
| 525 | + |
|
| 526 | + /** |
|
| 527 | + * Alias for self::set_parent_invoice_id(). |
|
| 528 | + * |
|
| 529 | + * @since 1.0.19 |
|
| 530 | + * @param int $value The parent invoice id. |
|
| 531 | + */ |
|
| 532 | + public function set_parent_payment_id( $value ) { |
|
| 533 | + $this->set_parent_invoice_id( $value ); |
|
| 534 | + } |
|
| 535 | + |
|
| 536 | + /** |
|
| 537 | + * Alias for self::set_parent_invoice_id(). |
|
| 538 | + * |
|
| 539 | + * @since 1.0.19 |
|
| 540 | + * @param int $value The parent invoice id. |
|
| 541 | + */ |
|
| 542 | + public function set_original_payment_id( $value ) { |
|
| 543 | + $this->set_parent_invoice_id( $value ); |
|
| 544 | + } |
|
| 545 | + |
|
| 546 | + /** |
|
| 547 | + * Set subscription's product id. |
|
| 548 | + * |
|
| 549 | + * @since 1.0.19 |
|
| 550 | + * @param int $value The subscription product id. |
|
| 551 | + */ |
|
| 552 | + public function set_product_id( $value ) { |
|
| 553 | + $this->set_prop( 'product_id', (int) $value ); |
|
| 554 | + } |
|
| 555 | + |
|
| 556 | + /** |
|
| 557 | + * Set the period of a renewal. |
|
| 558 | + * |
|
| 559 | + * @since 1.0.19 |
|
| 560 | + * @param string $value The renewal period. |
|
| 561 | + */ |
|
| 562 | + public function set_period( $value ) { |
|
| 563 | + $this->set_prop( 'period', $value ); |
|
| 564 | + } |
|
| 565 | + |
|
| 566 | + /** |
|
| 567 | + * Set number of periods each renewal is valid for. |
|
| 568 | + * |
|
| 569 | + * @since 1.0.19 |
|
| 570 | + * @param int $value The subscription frequency. |
|
| 571 | + */ |
|
| 572 | + public function set_frequency( $value ) { |
|
| 573 | + $value = empty( $value ) ? 1 : (int) $value; |
|
| 574 | + $this->set_prop( 'frequency', absint( $value ) ); |
|
| 575 | + } |
|
| 576 | + |
|
| 577 | + /** |
|
| 578 | + * Set the initial amount for the subscription. |
|
| 579 | + * |
|
| 580 | + * @since 1.0.19 |
|
| 581 | + * @param float $value The initial subcription amount. |
|
| 582 | + */ |
|
| 583 | + public function set_initial_amount( $value ) { |
|
| 584 | + $this->set_prop( 'initial_amount', wpinv_sanitize_amount( $value ) ); |
|
| 585 | + } |
|
| 586 | + |
|
| 587 | + /** |
|
| 588 | + * Set the recurring amount for the subscription. |
|
| 589 | + * |
|
| 590 | + * @since 1.0.19 |
|
| 591 | + * @param float $value The recurring subcription amount. |
|
| 592 | + */ |
|
| 593 | + public function set_recurring_amount( $value ) { |
|
| 594 | + $this->set_prop( 'recurring_amount', wpinv_sanitize_amount( $value ) ); |
|
| 595 | + } |
|
| 596 | + |
|
| 597 | + /** |
|
| 598 | + * Set number of times that this subscription can be renewed. |
|
| 599 | + * |
|
| 600 | + * @since 1.0.19 |
|
| 601 | + * @param int $value Bill times. |
|
| 602 | + */ |
|
| 603 | + public function set_bill_times( $value ) { |
|
| 604 | + $this->set_prop( 'bill_times', (int) $value ); |
|
| 605 | + } |
|
| 606 | + |
|
| 607 | + /** |
|
| 608 | + * Get transaction id of this subscription's parent invoice. |
|
| 609 | + * |
|
| 610 | + * @since 1.0.19 |
|
| 611 | + * @param string $value Bill times. |
|
| 612 | + */ |
|
| 613 | + public function set_transaction_id( $value ) { |
|
| 614 | + $this->set_prop( 'transaction_id', sanitize_text_field( $value ) ); |
|
| 615 | + } |
|
| 616 | + |
|
| 617 | + /** |
|
| 618 | + * Set date when this subscription started. |
|
| 619 | + * |
|
| 620 | + * @since 1.0.19 |
|
| 621 | + * @param string $value strtotime compliant date. |
|
| 622 | + */ |
|
| 623 | + public function set_created( $value ) { |
|
| 624 | + $date = strtotime( $value ); |
|
| 625 | + |
|
| 626 | + if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
| 627 | + $this->set_prop( 'created', date( 'Y-m-d H:i:s', $date ) ); |
|
| 628 | + return; |
|
| 629 | + } |
|
| 630 | + |
|
| 631 | + $this->set_prop( 'created', '' ); |
|
| 185 | 632 | |
| 186 | - /** |
|
| 187 | - * Get customer id. |
|
| 188 | - * |
|
| 189 | - * @since 1.0.19 |
|
| 190 | - * @param string $context View or edit context. |
|
| 191 | - * @return int |
|
| 192 | - */ |
|
| 193 | - public function get_customer_id( $context = 'view' ) { |
|
| 194 | - return (int) $this->get_prop( 'customer_id', $context ); |
|
| 195 | - } |
|
| 196 | - |
|
| 197 | - /** |
|
| 198 | - * Get customer information. |
|
| 199 | - * |
|
| 200 | - * @since 1.0.19 |
|
| 201 | - * @param string $context View or edit context. |
|
| 202 | - * @return WP_User|false WP_User object on success, false on failure. |
|
| 203 | - */ |
|
| 204 | - public function get_customer( $context = 'view' ) { |
|
| 205 | - return get_userdata( $this->get_customer_id( $context ) ); |
|
| 206 | - } |
|
| 207 | - |
|
| 208 | - /** |
|
| 209 | - * Get parent invoice id. |
|
| 210 | - * |
|
| 211 | - * @since 1.0.19 |
|
| 212 | - * @param string $context View or edit context. |
|
| 213 | - * @return int |
|
| 214 | - */ |
|
| 215 | - public function get_parent_invoice_id( $context = 'view' ) { |
|
| 216 | - return (int) $this->get_prop( 'parent_payment_id', $context ); |
|
| 217 | - } |
|
| 218 | - |
|
| 219 | - /** |
|
| 220 | - * Alias for self::get_parent_invoice_id(). |
|
| 221 | - * |
|
| 222 | - * @since 1.0.19 |
|
| 223 | - * @param string $context View or edit context. |
|
| 224 | - * @return int |
|
| 225 | - */ |
|
| 226 | - public function get_parent_payment_id( $context = 'view' ) { |
|
| 227 | - return $this->get_parent_invoice_id( $context ); |
|
| 228 | - } |
|
| 633 | + } |
|
| 229 | 634 | |
| 230 | - /** |
|
| 231 | - * Alias for self::get_parent_invoice_id(). |
|
| 635 | + /** |
|
| 636 | + * Alias for self::set_created(). |
|
| 232 | 637 | * |
| 233 | - * @since 1.0.0 |
|
| 234 | - * @return int |
|
| 638 | + * @since 1.0.19 |
|
| 639 | + * @param string $value strtotime compliant date. |
|
| 235 | 640 | */ |
| 236 | - public function get_original_payment_id( $context = 'view' ) { |
|
| 237 | - return $this->get_parent_invoice_id( $context ); |
|
| 641 | + public function set_date_created( $value ) { |
|
| 642 | + $this->set_created( $value ); |
|
| 238 | 643 | } |
| 239 | 644 | |
| 240 | - /** |
|
| 241 | - * Get parent invoice. |
|
| 242 | - * |
|
| 243 | - * @since 1.0.19 |
|
| 244 | - * @param string $context View or edit context. |
|
| 245 | - * @return WPInv_Invoice |
|
| 246 | - */ |
|
| 247 | - public function get_parent_invoice( $context = 'view' ) { |
|
| 248 | - return new WPInv_Invoice( $this->get_parent_invoice_id( $context ) ); |
|
| 249 | - } |
|
| 250 | - |
|
| 251 | - /** |
|
| 252 | - * Alias for self::get_parent_invoice(). |
|
| 253 | - * |
|
| 254 | - * @since 1.0.19 |
|
| 255 | - * @param string $context View or edit context. |
|
| 256 | - * @return WPInv_Invoice |
|
| 257 | - */ |
|
| 258 | - public function get_parent_payment( $context = 'view' ) { |
|
| 259 | - return $this->get_parent_invoice( $context ); |
|
| 260 | - } |
|
| 261 | - |
|
| 262 | - /** |
|
| 263 | - * Get subscription's product id. |
|
| 264 | - * |
|
| 265 | - * @since 1.0.19 |
|
| 266 | - * @param string $context View or edit context. |
|
| 267 | - * @return int |
|
| 268 | - */ |
|
| 269 | - public function get_product_id( $context = 'view' ) { |
|
| 270 | - return (int) $this->get_prop( 'product_id', $context ); |
|
| 271 | - } |
|
| 272 | - |
|
| 273 | - /** |
|
| 274 | - * Get the subscription product. |
|
| 275 | - * |
|
| 276 | - * @since 1.0.19 |
|
| 277 | - * @param string $context View or edit context. |
|
| 278 | - * @return WPInv_Item |
|
| 279 | - */ |
|
| 280 | - public function get_product( $context = 'view' ) { |
|
| 281 | - return new WPInv_Item( $this->get_product_id( $context ) ); |
|
| 282 | - } |
|
| 283 | - |
|
| 284 | - /** |
|
| 285 | - * Get parent invoice's gateway. |
|
| 286 | - * |
|
| 287 | - * Here for backwards compatibility. |
|
| 288 | - * |
|
| 289 | - * @since 1.0.19 |
|
| 290 | - * @param string $context View or edit context. |
|
| 291 | - * @return string |
|
| 292 | - */ |
|
| 293 | - public function get_gateway( $context = 'view' ) { |
|
| 294 | - return $this->get_parent_invoice( $context )->get_gateway(); |
|
| 295 | - } |
|
| 296 | - |
|
| 297 | - /** |
|
| 298 | - * Get the period of a renewal. |
|
| 299 | - * |
|
| 300 | - * @since 1.0.19 |
|
| 301 | - * @param string $context View or edit context. |
|
| 302 | - * @return string |
|
| 303 | - */ |
|
| 304 | - public function get_period( $context = 'view' ) { |
|
| 305 | - return $this->get_prop( 'period', $context ); |
|
| 306 | - } |
|
| 307 | - |
|
| 308 | - /** |
|
| 309 | - * Get number of periods each renewal is valid for. |
|
| 310 | - * |
|
| 311 | - * @since 1.0.19 |
|
| 312 | - * @param string $context View or edit context. |
|
| 313 | - * @return int |
|
| 314 | - */ |
|
| 315 | - public function get_frequency( $context = 'view' ) { |
|
| 316 | - return (int) $this->get_prop( 'frequency', $context ); |
|
| 317 | - } |
|
| 318 | - |
|
| 319 | - /** |
|
| 320 | - * Get the initial amount for the subscription. |
|
| 321 | - * |
|
| 322 | - * @since 1.0.19 |
|
| 323 | - * @param string $context View or edit context. |
|
| 324 | - * @return float |
|
| 325 | - */ |
|
| 326 | - public function get_initial_amount( $context = 'view' ) { |
|
| 327 | - return (float) wpinv_sanitize_amount( $this->get_prop( 'initial_amount', $context ) ); |
|
| 328 | - } |
|
| 329 | - |
|
| 330 | - /** |
|
| 331 | - * Get the recurring amount for the subscription. |
|
| 332 | - * |
|
| 333 | - * @since 1.0.19 |
|
| 334 | - * @param string $context View or edit context. |
|
| 335 | - * @return float |
|
| 336 | - */ |
|
| 337 | - public function get_recurring_amount( $context = 'view' ) { |
|
| 338 | - return (float) wpinv_sanitize_amount( $this->get_prop( 'recurring_amount', $context ) ); |
|
| 339 | - } |
|
| 340 | - |
|
| 341 | - /** |
|
| 342 | - * Get number of times that this subscription can be renewed. |
|
| 343 | - * |
|
| 344 | - * @since 1.0.19 |
|
| 345 | - * @param string $context View or edit context. |
|
| 346 | - * @return int |
|
| 347 | - */ |
|
| 348 | - public function get_bill_times( $context = 'view' ) { |
|
| 349 | - return (int) $this->get_prop( 'bill_times', $context ); |
|
| 350 | - } |
|
| 351 | - |
|
| 352 | - /** |
|
| 353 | - * Get transaction id of this subscription's parent invoice. |
|
| 354 | - * |
|
| 355 | - * @since 1.0.19 |
|
| 356 | - * @param string $context View or edit context. |
|
| 357 | - * @return string |
|
| 358 | - */ |
|
| 359 | - public function get_transaction_id( $context = 'view' ) { |
|
| 360 | - return $this->get_prop( 'transaction_id', $context ); |
|
| 361 | - } |
|
| 362 | - |
|
| 363 | - /** |
|
| 364 | - * Get the date that the subscription was created. |
|
| 365 | - * |
|
| 366 | - * @since 1.0.19 |
|
| 367 | - * @param string $context View or edit context. |
|
| 368 | - * @return string |
|
| 369 | - */ |
|
| 370 | - public function get_created( $context = 'view' ) { |
|
| 371 | - return $this->get_prop( 'created', $context ); |
|
| 372 | - } |
|
| 373 | - |
|
| 374 | - /** |
|
| 375 | - * Alias for self::get_created(). |
|
| 376 | - * |
|
| 377 | - * @since 1.0.19 |
|
| 378 | - * @param string $context View or edit context. |
|
| 379 | - * @return string |
|
| 380 | - */ |
|
| 381 | - public function get_date_created( $context = 'view' ) { |
|
| 382 | - return $this->get_created( $context ); |
|
| 383 | - } |
|
| 384 | - |
|
| 385 | - /** |
|
| 386 | - * Retrieves the creation date in a timestamp |
|
| 387 | - * |
|
| 388 | - * @since 1.0.0 |
|
| 389 | - * @return int |
|
| 390 | - */ |
|
| 391 | - public function get_time_created() { |
|
| 392 | - $created = $this->get_date_created(); |
|
| 393 | - return empty( $created ) ? current_time( 'timestamp' ) : strtotime( $created, current_time( 'timestamp' ) ); |
|
| 394 | - } |
|
| 395 | - |
|
| 396 | - /** |
|
| 397 | - * Get GMT date when the subscription was created. |
|
| 398 | - * |
|
| 399 | - * @since 1.0.19 |
|
| 400 | - * @param string $context View or edit context. |
|
| 401 | - * @return string |
|
| 402 | - */ |
|
| 403 | - public function get_date_created_gmt( $context = 'view' ) { |
|
| 404 | - $date = $this->get_date_created( $context ); |
|
| 645 | + /** |
|
| 646 | + * Set the date that the subscription will renew. |
|
| 647 | + * |
|
| 648 | + * @since 1.0.19 |
|
| 649 | + * @param string $value strtotime compliant date. |
|
| 650 | + */ |
|
| 651 | + public function set_next_renewal_date( $value ) { |
|
| 652 | + $date = strtotime( $value ); |
|
| 405 | 653 | |
| 406 | - if ( $date ) { |
|
| 407 | - $date = get_gmt_from_date( $date ); |
|
| 654 | + if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
| 655 | + $this->set_prop( 'expiration', date( 'Y-m-d H:i:s', $date ) ); |
|
| 656 | + return; |
|
| 408 | 657 | } |
| 409 | - return $date; |
|
| 410 | - } |
|
| 411 | - |
|
| 412 | - /** |
|
| 413 | - * Get the date that the subscription will renew. |
|
| 414 | - * |
|
| 415 | - * @since 1.0.19 |
|
| 416 | - * @param string $context View or edit context. |
|
| 417 | - * @return string |
|
| 418 | - */ |
|
| 419 | - public function get_next_renewal_date( $context = 'view' ) { |
|
| 420 | - return $this->get_prop( 'expiration', $context ); |
|
| 421 | - } |
|
| 422 | - |
|
| 423 | - /** |
|
| 424 | - * Alias for self::get_next_renewal_date(). |
|
| 425 | - * |
|
| 426 | - * @since 1.0.19 |
|
| 427 | - * @param string $context View or edit context. |
|
| 428 | - * @return string |
|
| 429 | - */ |
|
| 430 | - public function get_expiration( $context = 'view' ) { |
|
| 431 | - return $this->get_next_renewal_date( $context ); |
|
| 432 | - } |
|
| 433 | - |
|
| 434 | - /** |
|
| 435 | - * Retrieves the expiration date in a timestamp |
|
| 436 | - * |
|
| 437 | - * @since 1.0.0 |
|
| 438 | - * @return int |
|
| 439 | - */ |
|
| 440 | - public function get_expiration_time() { |
|
| 441 | - $expiration = $this->get_expiration(); |
|
| 442 | - |
|
| 443 | - if ( empty( $expiration ) || '0000-00-00 00:00:00' == $expiration ) { |
|
| 444 | - return current_time( 'timestamp' ); |
|
| 445 | - } |
|
| 446 | - |
|
| 447 | - $expiration = strtotime( $expiration, current_time( 'timestamp' ) ); |
|
| 448 | - return $expiration < current_time( 'timestamp' ) ? current_time( 'timestamp' ) : $expiration; |
|
| 449 | - } |
|
| 450 | - |
|
| 451 | - /** |
|
| 452 | - * Get GMT date when the subscription will renew. |
|
| 453 | - * |
|
| 454 | - * @since 1.0.19 |
|
| 455 | - * @param string $context View or edit context. |
|
| 456 | - * @return string |
|
| 457 | - */ |
|
| 458 | - public function get_next_renewal_date_gmt( $context = 'view' ) { |
|
| 459 | - $date = $this->get_next_renewal_date( $context ); |
|
| 460 | 658 | |
| 461 | - if ( $date ) { |
|
| 462 | - $date = get_gmt_from_date( $date ); |
|
| 463 | - } |
|
| 464 | - return $date; |
|
| 465 | - } |
|
| 466 | - |
|
| 467 | - /** |
|
| 468 | - * Get the subscription's trial period. |
|
| 469 | - * |
|
| 470 | - * @since 1.0.19 |
|
| 471 | - * @param string $context View or edit context. |
|
| 472 | - * @return string |
|
| 473 | - */ |
|
| 474 | - public function get_trial_period( $context = 'view' ) { |
|
| 475 | - return $this->get_prop( 'trial_period', $context ); |
|
| 476 | - } |
|
| 477 | - |
|
| 478 | - /** |
|
| 479 | - * Get the subscription's status. |
|
| 480 | - * |
|
| 481 | - * @since 1.0.19 |
|
| 482 | - * @param string $context View or edit context. |
|
| 483 | - * @return string |
|
| 484 | - */ |
|
| 485 | - public function get_status( $context = 'view' ) { |
|
| 486 | - return $this->get_prop( 'status', $context ); |
|
| 487 | - } |
|
| 488 | - |
|
| 489 | - /** |
|
| 490 | - * Get the subscription's profile id. |
|
| 491 | - * |
|
| 492 | - * @since 1.0.19 |
|
| 493 | - * @param string $context View or edit context. |
|
| 494 | - * @return string |
|
| 495 | - */ |
|
| 496 | - public function get_profile_id( $context = 'view' ) { |
|
| 497 | - return $this->get_prop( 'profile_id', $context ); |
|
| 498 | - } |
|
| 499 | - |
|
| 500 | - /* |
|
| 501 | - |-------------------------------------------------------------------------- |
|
| 502 | - | Setters |
|
| 503 | - |-------------------------------------------------------------------------- |
|
| 504 | - */ |
|
| 659 | + $this->set_prop( 'expiration', '' ); |
|
| 505 | 660 | |
| 506 | - /** |
|
| 507 | - * Set customer id. |
|
| 508 | - * |
|
| 509 | - * @since 1.0.19 |
|
| 510 | - * @param int $value The customer's id. |
|
| 511 | - */ |
|
| 512 | - public function set_customer_id( $value ) { |
|
| 513 | - $this->set_prop( 'customer_id', (int) $value ); |
|
| 514 | - } |
|
| 515 | - |
|
| 516 | - /** |
|
| 517 | - * Set parent invoice id. |
|
| 518 | - * |
|
| 519 | - * @since 1.0.19 |
|
| 520 | - * @param int $value The parent invoice id. |
|
| 521 | - */ |
|
| 522 | - public function set_parent_invoice_id( $value ) { |
|
| 523 | - $this->set_prop( 'parent_payment_id', (int) $value ); |
|
| 524 | - } |
|
| 525 | - |
|
| 526 | - /** |
|
| 527 | - * Alias for self::set_parent_invoice_id(). |
|
| 528 | - * |
|
| 529 | - * @since 1.0.19 |
|
| 530 | - * @param int $value The parent invoice id. |
|
| 531 | - */ |
|
| 532 | - public function set_parent_payment_id( $value ) { |
|
| 533 | - $this->set_parent_invoice_id( $value ); |
|
| 534 | - } |
|
| 661 | + } |
|
| 535 | 662 | |
| 536 | - /** |
|
| 537 | - * Alias for self::set_parent_invoice_id(). |
|
| 663 | + /** |
|
| 664 | + * Alias for self::set_next_renewal_date(). |
|
| 538 | 665 | * |
| 539 | 666 | * @since 1.0.19 |
| 540 | - * @param int $value The parent invoice id. |
|
| 667 | + * @param string $value strtotime compliant date. |
|
| 541 | 668 | */ |
| 542 | - public function set_original_payment_id( $value ) { |
|
| 543 | - $this->set_parent_invoice_id( $value ); |
|
| 544 | - } |
|
| 545 | - |
|
| 546 | - /** |
|
| 547 | - * Set subscription's product id. |
|
| 548 | - * |
|
| 549 | - * @since 1.0.19 |
|
| 550 | - * @param int $value The subscription product id. |
|
| 551 | - */ |
|
| 552 | - public function set_product_id( $value ) { |
|
| 553 | - $this->set_prop( 'product_id', (int) $value ); |
|
| 554 | - } |
|
| 555 | - |
|
| 556 | - /** |
|
| 557 | - * Set the period of a renewal. |
|
| 558 | - * |
|
| 559 | - * @since 1.0.19 |
|
| 560 | - * @param string $value The renewal period. |
|
| 561 | - */ |
|
| 562 | - public function set_period( $value ) { |
|
| 563 | - $this->set_prop( 'period', $value ); |
|
| 564 | - } |
|
| 565 | - |
|
| 566 | - /** |
|
| 567 | - * Set number of periods each renewal is valid for. |
|
| 568 | - * |
|
| 569 | - * @since 1.0.19 |
|
| 570 | - * @param int $value The subscription frequency. |
|
| 571 | - */ |
|
| 572 | - public function set_frequency( $value ) { |
|
| 573 | - $value = empty( $value ) ? 1 : (int) $value; |
|
| 574 | - $this->set_prop( 'frequency', absint( $value ) ); |
|
| 575 | - } |
|
| 576 | - |
|
| 577 | - /** |
|
| 578 | - * Set the initial amount for the subscription. |
|
| 579 | - * |
|
| 580 | - * @since 1.0.19 |
|
| 581 | - * @param float $value The initial subcription amount. |
|
| 582 | - */ |
|
| 583 | - public function set_initial_amount( $value ) { |
|
| 584 | - $this->set_prop( 'initial_amount', wpinv_sanitize_amount( $value ) ); |
|
| 585 | - } |
|
| 586 | - |
|
| 587 | - /** |
|
| 588 | - * Set the recurring amount for the subscription. |
|
| 589 | - * |
|
| 590 | - * @since 1.0.19 |
|
| 591 | - * @param float $value The recurring subcription amount. |
|
| 592 | - */ |
|
| 593 | - public function set_recurring_amount( $value ) { |
|
| 594 | - $this->set_prop( 'recurring_amount', wpinv_sanitize_amount( $value ) ); |
|
| 595 | - } |
|
| 596 | - |
|
| 597 | - /** |
|
| 598 | - * Set number of times that this subscription can be renewed. |
|
| 599 | - * |
|
| 600 | - * @since 1.0.19 |
|
| 601 | - * @param int $value Bill times. |
|
| 602 | - */ |
|
| 603 | - public function set_bill_times( $value ) { |
|
| 604 | - $this->set_prop( 'bill_times', (int) $value ); |
|
| 605 | - } |
|
| 606 | - |
|
| 607 | - /** |
|
| 608 | - * Get transaction id of this subscription's parent invoice. |
|
| 609 | - * |
|
| 610 | - * @since 1.0.19 |
|
| 611 | - * @param string $value Bill times. |
|
| 612 | - */ |
|
| 613 | - public function set_transaction_id( $value ) { |
|
| 614 | - $this->set_prop( 'transaction_id', sanitize_text_field( $value ) ); |
|
| 615 | - } |
|
| 616 | - |
|
| 617 | - /** |
|
| 618 | - * Set date when this subscription started. |
|
| 619 | - * |
|
| 620 | - * @since 1.0.19 |
|
| 621 | - * @param string $value strtotime compliant date. |
|
| 622 | - */ |
|
| 623 | - public function set_created( $value ) { |
|
| 624 | - $date = strtotime( $value ); |
|
| 669 | + public function set_expiration( $value ) { |
|
| 670 | + $this->set_next_renewal_date( $value ); |
|
| 671 | + } |
|
| 625 | 672 | |
| 626 | - if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
| 627 | - $this->set_prop( 'created', date( 'Y-m-d H:i:s', $date ) ); |
|
| 673 | + /** |
|
| 674 | + * Set the subscription's trial period. |
|
| 675 | + * |
|
| 676 | + * @since 1.0.19 |
|
| 677 | + * @param string $value trial period e.g 1 year. |
|
| 678 | + */ |
|
| 679 | + public function set_trial_period( $value ) { |
|
| 680 | + $this->set_prop( 'trial_period', $value ); |
|
| 681 | + } |
|
| 682 | + |
|
| 683 | + /** |
|
| 684 | + * Set the subscription's status. |
|
| 685 | + * |
|
| 686 | + * @since 1.0.19 |
|
| 687 | + * @param string $new_status New subscription status. |
|
| 688 | + */ |
|
| 689 | + public function set_status( $new_status ) { |
|
| 690 | + |
|
| 691 | + // Abort if this is not a valid status; |
|
| 692 | + if ( ! array_key_exists( $new_status, getpaid_get_subscription_statuses() ) ) { |
|
| 628 | 693 | return; |
| 629 | 694 | } |
| 630 | 695 | |
| 631 | - $this->set_prop( 'created', '' ); |
|
| 632 | 696 | |
| 633 | - } |
|
| 697 | + $old_status = ! empty( $this->status_transition['from'] ) ? $this->status_transition['from'] : $this->get_status(); |
|
| 698 | + if ( true === $this->object_read && $old_status !== $new_status ) { |
|
| 699 | + $this->status_transition = array( |
|
| 700 | + 'from' => $old_status, |
|
| 701 | + 'to' => $new_status, |
|
| 702 | + ); |
|
| 703 | + } |
|
| 634 | 704 | |
| 635 | - /** |
|
| 636 | - * Alias for self::set_created(). |
|
| 637 | - * |
|
| 638 | - * @since 1.0.19 |
|
| 639 | - * @param string $value strtotime compliant date. |
|
| 640 | - */ |
|
| 641 | - public function set_date_created( $value ) { |
|
| 642 | - $this->set_created( $value ); |
|
| 705 | + $this->set_prop( 'status', $new_status ); |
|
| 643 | 706 | } |
| 644 | 707 | |
| 645 | - /** |
|
| 646 | - * Set the date that the subscription will renew. |
|
| 647 | - * |
|
| 648 | - * @since 1.0.19 |
|
| 649 | - * @param string $value strtotime compliant date. |
|
| 650 | - */ |
|
| 651 | - public function set_next_renewal_date( $value ) { |
|
| 652 | - $date = strtotime( $value ); |
|
| 708 | + /** |
|
| 709 | + * Set the subscription's (remote) profile id. |
|
| 710 | + * |
|
| 711 | + * @since 1.0.19 |
|
| 712 | + * @param string $value the remote profile id. |
|
| 713 | + */ |
|
| 714 | + public function set_profile_id( $value ) { |
|
| 715 | + $this->set_prop( 'profile_id', sanitize_text_field( $value ) ); |
|
| 716 | + } |
|
| 653 | 717 | |
| 654 | - if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
| 655 | - $this->set_prop( 'expiration', date( 'Y-m-d H:i:s', $date ) ); |
|
| 656 | - return; |
|
| 657 | - } |
|
| 658 | - |
|
| 659 | - $this->set_prop( 'expiration', '' ); |
|
| 660 | - |
|
| 661 | - } |
|
| 662 | - |
|
| 663 | - /** |
|
| 664 | - * Alias for self::set_next_renewal_date(). |
|
| 665 | - * |
|
| 666 | - * @since 1.0.19 |
|
| 667 | - * @param string $value strtotime compliant date. |
|
| 668 | - */ |
|
| 669 | - public function set_expiration( $value ) { |
|
| 670 | - $this->set_next_renewal_date( $value ); |
|
| 671 | - } |
|
| 672 | - |
|
| 673 | - /** |
|
| 674 | - * Set the subscription's trial period. |
|
| 675 | - * |
|
| 676 | - * @since 1.0.19 |
|
| 677 | - * @param string $value trial period e.g 1 year. |
|
| 678 | - */ |
|
| 679 | - public function set_trial_period( $value ) { |
|
| 680 | - $this->set_prop( 'trial_period', $value ); |
|
| 681 | - } |
|
| 682 | - |
|
| 683 | - /** |
|
| 684 | - * Set the subscription's status. |
|
| 685 | - * |
|
| 686 | - * @since 1.0.19 |
|
| 687 | - * @param string $new_status New subscription status. |
|
| 688 | - */ |
|
| 689 | - public function set_status( $new_status ) { |
|
| 690 | - |
|
| 691 | - // Abort if this is not a valid status; |
|
| 692 | - if ( ! array_key_exists( $new_status, getpaid_get_subscription_statuses() ) ) { |
|
| 693 | - return; |
|
| 694 | - } |
|
| 695 | - |
|
| 696 | - |
|
| 697 | - $old_status = ! empty( $this->status_transition['from'] ) ? $this->status_transition['from'] : $this->get_status(); |
|
| 698 | - if ( true === $this->object_read && $old_status !== $new_status ) { |
|
| 699 | - $this->status_transition = array( |
|
| 700 | - 'from' => $old_status, |
|
| 701 | - 'to' => $new_status, |
|
| 702 | - ); |
|
| 703 | - } |
|
| 704 | - |
|
| 705 | - $this->set_prop( 'status', $new_status ); |
|
| 706 | - } |
|
| 707 | - |
|
| 708 | - /** |
|
| 709 | - * Set the subscription's (remote) profile id. |
|
| 710 | - * |
|
| 711 | - * @since 1.0.19 |
|
| 712 | - * @param string $value the remote profile id. |
|
| 713 | - */ |
|
| 714 | - public function set_profile_id( $value ) { |
|
| 715 | - $this->set_prop( 'profile_id', sanitize_text_field( $value ) ); |
|
| 716 | - } |
|
| 717 | - |
|
| 718 | - /* |
|
| 718 | + /* |
|
| 719 | 719 | |-------------------------------------------------------------------------- |
| 720 | 720 | | Boolean methods |
| 721 | 721 | |-------------------------------------------------------------------------- |
@@ -724,55 +724,55 @@ discard block |
||
| 724 | 724 | | |
| 725 | 725 | */ |
| 726 | 726 | |
| 727 | - /** |
|
| 727 | + /** |
|
| 728 | 728 | * Checks if the subscription has a given status. |
| 729 | - * |
|
| 730 | - * @param string|array String or array of strings to check for. |
|
| 731 | - * @return bool |
|
| 729 | + * |
|
| 730 | + * @param string|array String or array of strings to check for. |
|
| 731 | + * @return bool |
|
| 732 | 732 | */ |
| 733 | 733 | public function has_status( $status ) { |
| 734 | 734 | return in_array( $this->get_status(), wpinv_clean( wpinv_parse_list( $status ) ) ); |
| 735 | - } |
|
| 735 | + } |
|
| 736 | 736 | |
| 737 | - /** |
|
| 737 | + /** |
|
| 738 | 738 | * Checks if the subscription has a trial period. |
| 739 | - * |
|
| 740 | - * @return bool |
|
| 739 | + * |
|
| 740 | + * @return bool |
|
| 741 | 741 | */ |
| 742 | 742 | public function has_trial_period() { |
| 743 | - $period = $this->get_trial_period(); |
|
| 743 | + $period = $this->get_trial_period(); |
|
| 744 | 744 | return ! empty( $period ); |
| 745 | - } |
|
| 746 | - |
|
| 747 | - /** |
|
| 748 | - * Is the subscription active? |
|
| 749 | - * |
|
| 750 | - * @return bool |
|
| 751 | - */ |
|
| 752 | - public function is_active() { |
|
| 753 | - return $this->has_status( 'active trialling' ) && ! $this->is_expired(); |
|
| 754 | - } |
|
| 755 | - |
|
| 756 | - /** |
|
| 757 | - * Is the subscription expired? |
|
| 758 | - * |
|
| 759 | - * @return bool |
|
| 760 | - */ |
|
| 761 | - public function is_expired() { |
|
| 762 | - return $this->has_status( 'expired' ) || ( $this->has_status( 'active cancelled trialling' ) && $this->get_expiration_time() < current_time( 'mysql' ) ); |
|
| 763 | - } |
|
| 764 | - |
|
| 765 | - /** |
|
| 766 | - * Is this the last renewals? |
|
| 767 | - * |
|
| 768 | - * @return bool |
|
| 769 | - */ |
|
| 770 | - public function is_last_renewal() { |
|
| 771 | - $max_bills = $this->get_bill_times(); |
|
| 772 | - return ! empty( $max_bills ) && $max_bills <= $this->get_times_billed(); |
|
| 773 | - } |
|
| 774 | - |
|
| 775 | - /* |
|
| 745 | + } |
|
| 746 | + |
|
| 747 | + /** |
|
| 748 | + * Is the subscription active? |
|
| 749 | + * |
|
| 750 | + * @return bool |
|
| 751 | + */ |
|
| 752 | + public function is_active() { |
|
| 753 | + return $this->has_status( 'active trialling' ) && ! $this->is_expired(); |
|
| 754 | + } |
|
| 755 | + |
|
| 756 | + /** |
|
| 757 | + * Is the subscription expired? |
|
| 758 | + * |
|
| 759 | + * @return bool |
|
| 760 | + */ |
|
| 761 | + public function is_expired() { |
|
| 762 | + return $this->has_status( 'expired' ) || ( $this->has_status( 'active cancelled trialling' ) && $this->get_expiration_time() < current_time( 'mysql' ) ); |
|
| 763 | + } |
|
| 764 | + |
|
| 765 | + /** |
|
| 766 | + * Is this the last renewals? |
|
| 767 | + * |
|
| 768 | + * @return bool |
|
| 769 | + */ |
|
| 770 | + public function is_last_renewal() { |
|
| 771 | + $max_bills = $this->get_bill_times(); |
|
| 772 | + return ! empty( $max_bills ) && $max_bills <= $this->get_times_billed(); |
|
| 773 | + } |
|
| 774 | + |
|
| 775 | + /* |
|
| 776 | 776 | |-------------------------------------------------------------------------- |
| 777 | 777 | | Additional methods |
| 778 | 778 | |-------------------------------------------------------------------------- |
@@ -781,27 +781,27 @@ discard block |
||
| 781 | 781 | | |
| 782 | 782 | */ |
| 783 | 783 | |
| 784 | - /** |
|
| 785 | - * Backwards compatibilty. |
|
| 786 | - */ |
|
| 787 | - public function create( $data = array() ) { |
|
| 784 | + /** |
|
| 785 | + * Backwards compatibilty. |
|
| 786 | + */ |
|
| 787 | + public function create( $data = array() ) { |
|
| 788 | 788 | |
| 789 | - // Set the properties. |
|
| 790 | - if ( is_array( $data ) ) { |
|
| 791 | - $this->set_props( $data ); |
|
| 792 | - } |
|
| 789 | + // Set the properties. |
|
| 790 | + if ( is_array( $data ) ) { |
|
| 791 | + $this->set_props( $data ); |
|
| 792 | + } |
|
| 793 | 793 | |
| 794 | - // Save the item. |
|
| 795 | - return $this->save(); |
|
| 794 | + // Save the item. |
|
| 795 | + return $this->save(); |
|
| 796 | 796 | |
| 797 | - } |
|
| 797 | + } |
|
| 798 | 798 | |
| 799 | - /** |
|
| 800 | - * Backwards compatibilty. |
|
| 801 | - */ |
|
| 802 | - public function update( $args = array() ) { |
|
| 803 | - return $this->create( $args ); |
|
| 804 | - } |
|
| 799 | + /** |
|
| 800 | + * Backwards compatibilty. |
|
| 801 | + */ |
|
| 802 | + public function update( $args = array() ) { |
|
| 803 | + return $this->create( $args ); |
|
| 804 | + } |
|
| 805 | 805 | |
| 806 | 806 | /** |
| 807 | 807 | * Retrieve renewal payments for a subscription |
@@ -811,22 +811,22 @@ discard block |
||
| 811 | 811 | */ |
| 812 | 812 | public function get_child_payments( $hide_pending = true ) { |
| 813 | 813 | |
| 814 | - $statuses = array( 'publish', 'wpi-processing', 'wpi-renewal' ); |
|
| 814 | + $statuses = array( 'publish', 'wpi-processing', 'wpi-renewal' ); |
|
| 815 | 815 | |
| 816 | - if ( ! $hide_pending ) { |
|
| 817 | - $statuses = array_keys( wpinv_get_invoice_statuses() ); |
|
| 818 | - } |
|
| 816 | + if ( ! $hide_pending ) { |
|
| 817 | + $statuses = array_keys( wpinv_get_invoice_statuses() ); |
|
| 818 | + } |
|
| 819 | 819 | |
| 820 | 820 | return get_posts( |
| 821 | - array( |
|
| 822 | - 'post_parent' => $this->get_parent_payment_id(), |
|
| 823 | - 'numberposts' => -1, |
|
| 824 | - 'post_status' => $statuses, |
|
| 825 | - 'orderby' => 'ID', |
|
| 826 | - 'order' => 'ASC', |
|
| 827 | - 'post_type' => 'wpi_invoice' |
|
| 828 | - ) |
|
| 829 | - ); |
|
| 821 | + array( |
|
| 822 | + 'post_parent' => $this->get_parent_payment_id(), |
|
| 823 | + 'numberposts' => -1, |
|
| 824 | + 'post_status' => $statuses, |
|
| 825 | + 'orderby' => 'ID', |
|
| 826 | + 'order' => 'ASC', |
|
| 827 | + 'post_type' => 'wpi_invoice' |
|
| 828 | + ) |
|
| 829 | + ); |
|
| 830 | 830 | } |
| 831 | 831 | |
| 832 | 832 | /** |
@@ -836,7 +836,7 @@ discard block |
||
| 836 | 836 | * @return int |
| 837 | 837 | */ |
| 838 | 838 | public function get_total_payments() { |
| 839 | - return getpaid_count_subscription_invoices( $this->get_parent_invoice_id(), $this->get_id() ); |
|
| 839 | + return getpaid_count_subscription_invoices( $this->get_parent_invoice_id(), $this->get_id() ); |
|
| 840 | 840 | } |
| 841 | 841 | |
| 842 | 842 | /** |
@@ -860,57 +860,57 @@ discard block |
||
| 860 | 860 | * |
| 861 | 861 | * @since 2.4 |
| 862 | 862 | * @param array $args Array of values for the payment, including amount and transaction ID |
| 863 | - * @param WPInv_Invoice $invoice If adding an existing invoice. |
|
| 863 | + * @param WPInv_Invoice $invoice If adding an existing invoice. |
|
| 864 | 864 | * @return bool |
| 865 | 865 | */ |
| 866 | 866 | public function add_payment( $args = array(), $invoice = false ) { |
| 867 | 867 | |
| 868 | - // Process each payment once. |
|
| 868 | + // Process each payment once. |
|
| 869 | 869 | if ( ! empty( $args['transaction_id'] ) && $this->payment_exists( $args['transaction_id'] ) ) { |
| 870 | 870 | return false; |
| 871 | 871 | } |
| 872 | 872 | |
| 873 | - // Are we creating a new invoice? |
|
| 874 | - if ( empty( $invoice ) ) { |
|
| 875 | - $invoice = $this->create_payment(); |
|
| 873 | + // Are we creating a new invoice? |
|
| 874 | + if ( empty( $invoice ) ) { |
|
| 875 | + $invoice = $this->create_payment(); |
|
| 876 | 876 | |
| 877 | - if ( empty( $invoice ) ) { |
|
| 878 | - return false; |
|
| 879 | - } |
|
| 877 | + if ( empty( $invoice ) ) { |
|
| 878 | + return false; |
|
| 879 | + } |
|
| 880 | 880 | |
| 881 | - } |
|
| 881 | + } |
|
| 882 | 882 | |
| 883 | - $invoice->set_status( 'wpi-renewal' ); |
|
| 883 | + $invoice->set_status( 'wpi-renewal' ); |
|
| 884 | 884 | |
| 885 | - // Maybe set a transaction id. |
|
| 886 | - if ( ! empty( $args['transaction_id'] ) ) { |
|
| 887 | - $invoice->set_transaction_id( $args['transaction_id'] ); |
|
| 888 | - } |
|
| 885 | + // Maybe set a transaction id. |
|
| 886 | + if ( ! empty( $args['transaction_id'] ) ) { |
|
| 887 | + $invoice->set_transaction_id( $args['transaction_id'] ); |
|
| 888 | + } |
|
| 889 | 889 | |
| 890 | - // Set the completed date. |
|
| 891 | - $invoice->set_completed_date( current_time( 'mysql' ) ); |
|
| 890 | + // Set the completed date. |
|
| 891 | + $invoice->set_completed_date( current_time( 'mysql' ) ); |
|
| 892 | 892 | |
| 893 | - // And the gateway. |
|
| 894 | - if ( ! empty( $args['gateway'] ) ) { |
|
| 895 | - $invoice->set_gateway( $args['gateway'] ); |
|
| 896 | - } |
|
| 893 | + // And the gateway. |
|
| 894 | + if ( ! empty( $args['gateway'] ) ) { |
|
| 895 | + $invoice->set_gateway( $args['gateway'] ); |
|
| 896 | + } |
|
| 897 | 897 | |
| 898 | - $invoice->save(); |
|
| 898 | + $invoice->save(); |
|
| 899 | 899 | |
| 900 | - if ( ! $invoice->exists() ) { |
|
| 901 | - return false; |
|
| 902 | - } |
|
| 900 | + if ( ! $invoice->exists() ) { |
|
| 901 | + return false; |
|
| 902 | + } |
|
| 903 | 903 | |
| 904 | - do_action( 'getpaid_after_create_subscription_renewal_invoice', $invoice, $this ); |
|
| 905 | - do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this ); |
|
| 904 | + do_action( 'getpaid_after_create_subscription_renewal_invoice', $invoice, $this ); |
|
| 905 | + do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this ); |
|
| 906 | 906 | do_action( 'wpinv_recurring_record_payment', $invoice->get_id(), $this->get_parent_invoice_id(), $invoice->get_recurring_total(), $invoice->get_transaction_id() ); |
| 907 | 907 | |
| 908 | 908 | update_post_meta( $invoice->get_id(), '_wpinv_subscription_id', $this->id ); |
| 909 | 909 | |
| 910 | 910 | return $invoice->get_id(); |
| 911 | - } |
|
| 911 | + } |
|
| 912 | 912 | |
| 913 | - /** |
|
| 913 | + /** |
|
| 914 | 914 | * Creates a new invoice and returns it. |
| 915 | 915 | * |
| 916 | 916 | * @since 1.0.19 |
@@ -918,124 +918,124 @@ discard block |
||
| 918 | 918 | */ |
| 919 | 919 | public function create_payment() { |
| 920 | 920 | |
| 921 | - $parent_invoice = $this->get_parent_payment(); |
|
| 922 | - |
|
| 923 | - if ( ! $parent_invoice->exists() ) { |
|
| 924 | - return false; |
|
| 925 | - } |
|
| 926 | - |
|
| 927 | - // Duplicate the parent invoice. |
|
| 928 | - $invoice = getpaid_duplicate_invoice( $parent_invoice ); |
|
| 929 | - $invoice->set_parent_id( $parent_invoice->get_id() ); |
|
| 930 | - $invoice->set_subscription_id( $this->get_id() ); |
|
| 931 | - $invoice->set_remote_subscription_id( $this->get_profile_id() ); |
|
| 932 | - |
|
| 933 | - // Set invoice items. |
|
| 934 | - $subscription_group = getpaid_get_invoice_subscription_group( $parent_invoice->get_id(), $this->get_id() ); |
|
| 935 | - $allowed_items = empty( $subscription_group ) ? array( $this->get_product_id() ) : array_keys( $subscription_group['items'] ); |
|
| 936 | - $invoice_items = array(); |
|
| 937 | - |
|
| 938 | - foreach ( $invoice->get_items() as $item ) { |
|
| 939 | - if ( in_array( $item->get_id(), $allowed_items ) ) { |
|
| 940 | - $invoice_items[] = $item; |
|
| 941 | - } |
|
| 942 | - } |
|
| 943 | - |
|
| 944 | - $invoice->set_items( $invoice_items ); |
|
| 945 | - |
|
| 946 | - if ( ! empty( $subscription_group['fees'] ) ) { |
|
| 947 | - $invoice->set_fees( $subscription_group['fees'] ); |
|
| 948 | - } |
|
| 949 | - |
|
| 950 | - // Maybe recalculate discount (Pre-GetPaid Fix). |
|
| 951 | - $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 952 | - if ( $discount->exists() && $discount->is_recurring() && 0 == $invoice->get_total_discount() ) { |
|
| 953 | - $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 954 | - } |
|
| 955 | - |
|
| 956 | - $invoice->recalculate_total(); |
|
| 957 | - $invoice->set_status( 'wpi-pending' ); |
|
| 958 | - $invoice->save(); |
|
| 959 | - |
|
| 960 | - return $invoice->exists() ? $invoice : false; |
|
| 961 | - } |
|
| 962 | - |
|
| 963 | - /** |
|
| 964 | - * Renews or completes a subscription |
|
| 965 | - * |
|
| 966 | - * @since 1.0.0 |
|
| 967 | - * @return int The subscription's id |
|
| 968 | - */ |
|
| 969 | - public function renew() { |
|
| 970 | - |
|
| 971 | - // Complete subscription if applicable |
|
| 972 | - if ( $this->is_last_renewal() ) { |
|
| 973 | - return $this->complete(); |
|
| 974 | - } |
|
| 975 | - |
|
| 976 | - // Calculate new expiration |
|
| 977 | - $frequency = $this->get_frequency(); |
|
| 978 | - $period = $this->get_period(); |
|
| 979 | - $new_expiration = strtotime( "+ $frequency $period", $this->get_expiration_time() ); |
|
| 980 | - |
|
| 981 | - $this->set_expiration( date( 'Y-m-d H:i:s',$new_expiration ) ); |
|
| 982 | - $this->set_status( 'active' ); |
|
| 983 | - $this->save(); |
|
| 984 | - |
|
| 985 | - do_action( 'getpaid_subscription_renewed', $this ); |
|
| 986 | - |
|
| 987 | - return $this->get_id(); |
|
| 988 | - } |
|
| 989 | - |
|
| 990 | - /** |
|
| 991 | - * Marks a subscription as completed |
|
| 992 | - * |
|
| 993 | - * Subscription is completed when the number of payments matches the billing_times field |
|
| 994 | - * |
|
| 995 | - * @since 1.0.0 |
|
| 996 | - * @return int|bool Subscription id or false if the subscription is cancelled. |
|
| 997 | - */ |
|
| 998 | - public function complete() { |
|
| 999 | - |
|
| 1000 | - // Only mark a subscription as complete if it's not already cancelled. |
|
| 1001 | - if ( $this->has_status( 'cancelled' ) ) { |
|
| 1002 | - return false; |
|
| 1003 | - } |
|
| 1004 | - |
|
| 1005 | - $this->set_status( 'completed' ); |
|
| 1006 | - return $this->save(); |
|
| 1007 | - |
|
| 1008 | - } |
|
| 1009 | - |
|
| 1010 | - /** |
|
| 1011 | - * Marks a subscription as expired |
|
| 1012 | - * |
|
| 1013 | - * @since 1.0.0 |
|
| 1014 | - * @param bool $check_expiration |
|
| 1015 | - * @return int|bool Subscription id or false if $check_expiration is true and expiration date is in the future. |
|
| 1016 | - */ |
|
| 1017 | - public function expire( $check_expiration = false ) { |
|
| 1018 | - |
|
| 1019 | - if ( $check_expiration && $this->get_expiration_time() > current_time( 'timestamp' ) ) { |
|
| 1020 | - // Do not mark as expired since real expiration date is in the future |
|
| 1021 | - return false; |
|
| 1022 | - } |
|
| 1023 | - |
|
| 1024 | - $this->set_status( 'expired' ); |
|
| 1025 | - return $this->save(); |
|
| 1026 | - |
|
| 1027 | - } |
|
| 1028 | - |
|
| 1029 | - /** |
|
| 1030 | - * Marks a subscription as failing |
|
| 1031 | - * |
|
| 1032 | - * @since 2.4.2 |
|
| 1033 | - * @return int Subscription id. |
|
| 1034 | - */ |
|
| 1035 | - public function failing() { |
|
| 1036 | - $this->set_status( 'failing' ); |
|
| 1037 | - return $this->save(); |
|
| 1038 | - } |
|
| 921 | + $parent_invoice = $this->get_parent_payment(); |
|
| 922 | + |
|
| 923 | + if ( ! $parent_invoice->exists() ) { |
|
| 924 | + return false; |
|
| 925 | + } |
|
| 926 | + |
|
| 927 | + // Duplicate the parent invoice. |
|
| 928 | + $invoice = getpaid_duplicate_invoice( $parent_invoice ); |
|
| 929 | + $invoice->set_parent_id( $parent_invoice->get_id() ); |
|
| 930 | + $invoice->set_subscription_id( $this->get_id() ); |
|
| 931 | + $invoice->set_remote_subscription_id( $this->get_profile_id() ); |
|
| 932 | + |
|
| 933 | + // Set invoice items. |
|
| 934 | + $subscription_group = getpaid_get_invoice_subscription_group( $parent_invoice->get_id(), $this->get_id() ); |
|
| 935 | + $allowed_items = empty( $subscription_group ) ? array( $this->get_product_id() ) : array_keys( $subscription_group['items'] ); |
|
| 936 | + $invoice_items = array(); |
|
| 937 | + |
|
| 938 | + foreach ( $invoice->get_items() as $item ) { |
|
| 939 | + if ( in_array( $item->get_id(), $allowed_items ) ) { |
|
| 940 | + $invoice_items[] = $item; |
|
| 941 | + } |
|
| 942 | + } |
|
| 943 | + |
|
| 944 | + $invoice->set_items( $invoice_items ); |
|
| 945 | + |
|
| 946 | + if ( ! empty( $subscription_group['fees'] ) ) { |
|
| 947 | + $invoice->set_fees( $subscription_group['fees'] ); |
|
| 948 | + } |
|
| 949 | + |
|
| 950 | + // Maybe recalculate discount (Pre-GetPaid Fix). |
|
| 951 | + $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 952 | + if ( $discount->exists() && $discount->is_recurring() && 0 == $invoice->get_total_discount() ) { |
|
| 953 | + $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 954 | + } |
|
| 955 | + |
|
| 956 | + $invoice->recalculate_total(); |
|
| 957 | + $invoice->set_status( 'wpi-pending' ); |
|
| 958 | + $invoice->save(); |
|
| 959 | + |
|
| 960 | + return $invoice->exists() ? $invoice : false; |
|
| 961 | + } |
|
| 962 | + |
|
| 963 | + /** |
|
| 964 | + * Renews or completes a subscription |
|
| 965 | + * |
|
| 966 | + * @since 1.0.0 |
|
| 967 | + * @return int The subscription's id |
|
| 968 | + */ |
|
| 969 | + public function renew() { |
|
| 970 | + |
|
| 971 | + // Complete subscription if applicable |
|
| 972 | + if ( $this->is_last_renewal() ) { |
|
| 973 | + return $this->complete(); |
|
| 974 | + } |
|
| 975 | + |
|
| 976 | + // Calculate new expiration |
|
| 977 | + $frequency = $this->get_frequency(); |
|
| 978 | + $period = $this->get_period(); |
|
| 979 | + $new_expiration = strtotime( "+ $frequency $period", $this->get_expiration_time() ); |
|
| 980 | + |
|
| 981 | + $this->set_expiration( date( 'Y-m-d H:i:s',$new_expiration ) ); |
|
| 982 | + $this->set_status( 'active' ); |
|
| 983 | + $this->save(); |
|
| 984 | + |
|
| 985 | + do_action( 'getpaid_subscription_renewed', $this ); |
|
| 986 | + |
|
| 987 | + return $this->get_id(); |
|
| 988 | + } |
|
| 989 | + |
|
| 990 | + /** |
|
| 991 | + * Marks a subscription as completed |
|
| 992 | + * |
|
| 993 | + * Subscription is completed when the number of payments matches the billing_times field |
|
| 994 | + * |
|
| 995 | + * @since 1.0.0 |
|
| 996 | + * @return int|bool Subscription id or false if the subscription is cancelled. |
|
| 997 | + */ |
|
| 998 | + public function complete() { |
|
| 999 | + |
|
| 1000 | + // Only mark a subscription as complete if it's not already cancelled. |
|
| 1001 | + if ( $this->has_status( 'cancelled' ) ) { |
|
| 1002 | + return false; |
|
| 1003 | + } |
|
| 1004 | + |
|
| 1005 | + $this->set_status( 'completed' ); |
|
| 1006 | + return $this->save(); |
|
| 1007 | + |
|
| 1008 | + } |
|
| 1009 | + |
|
| 1010 | + /** |
|
| 1011 | + * Marks a subscription as expired |
|
| 1012 | + * |
|
| 1013 | + * @since 1.0.0 |
|
| 1014 | + * @param bool $check_expiration |
|
| 1015 | + * @return int|bool Subscription id or false if $check_expiration is true and expiration date is in the future. |
|
| 1016 | + */ |
|
| 1017 | + public function expire( $check_expiration = false ) { |
|
| 1018 | + |
|
| 1019 | + if ( $check_expiration && $this->get_expiration_time() > current_time( 'timestamp' ) ) { |
|
| 1020 | + // Do not mark as expired since real expiration date is in the future |
|
| 1021 | + return false; |
|
| 1022 | + } |
|
| 1023 | + |
|
| 1024 | + $this->set_status( 'expired' ); |
|
| 1025 | + return $this->save(); |
|
| 1026 | + |
|
| 1027 | + } |
|
| 1028 | + |
|
| 1029 | + /** |
|
| 1030 | + * Marks a subscription as failing |
|
| 1031 | + * |
|
| 1032 | + * @since 2.4.2 |
|
| 1033 | + * @return int Subscription id. |
|
| 1034 | + */ |
|
| 1035 | + public function failing() { |
|
| 1036 | + $this->set_status( 'failing' ); |
|
| 1037 | + return $this->save(); |
|
| 1038 | + } |
|
| 1039 | 1039 | |
| 1040 | 1040 | /** |
| 1041 | 1041 | * Marks a subscription as cancelled |
@@ -1044,19 +1044,19 @@ discard block |
||
| 1044 | 1044 | * @return int Subscription id. |
| 1045 | 1045 | */ |
| 1046 | 1046 | public function cancel() { |
| 1047 | - $this->set_status( 'cancelled' ); |
|
| 1048 | - return $this->save(); |
|
| 1047 | + $this->set_status( 'cancelled' ); |
|
| 1048 | + return $this->save(); |
|
| 1049 | 1049 | } |
| 1050 | 1050 | |
| 1051 | - /** |
|
| 1052 | - * Determines if a subscription can be cancelled both locally and with a payment processor. |
|
| 1053 | - * |
|
| 1054 | - * @since 1.0.0 |
|
| 1055 | - * @return bool |
|
| 1056 | - */ |
|
| 1057 | - public function can_cancel() { |
|
| 1058 | - return apply_filters( 'wpinv_subscription_can_cancel', $this->has_status( $this->get_cancellable_statuses() ), $this ); |
|
| 1059 | - } |
|
| 1051 | + /** |
|
| 1052 | + * Determines if a subscription can be cancelled both locally and with a payment processor. |
|
| 1053 | + * |
|
| 1054 | + * @since 1.0.0 |
|
| 1055 | + * @return bool |
|
| 1056 | + */ |
|
| 1057 | + public function can_cancel() { |
|
| 1058 | + return apply_filters( 'wpinv_subscription_can_cancel', $this->has_status( $this->get_cancellable_statuses() ), $this ); |
|
| 1059 | + } |
|
| 1060 | 1060 | |
| 1061 | 1061 | /** |
| 1062 | 1062 | * Returns an array of subscription statuses that can be cancelled |
@@ -1069,96 +1069,96 @@ discard block |
||
| 1069 | 1069 | return apply_filters( 'wpinv_recurring_cancellable_statuses', array( 'active', 'trialling', 'failing' ) ); |
| 1070 | 1070 | } |
| 1071 | 1071 | |
| 1072 | - /** |
|
| 1073 | - * Retrieves the URL to cancel subscription |
|
| 1074 | - * |
|
| 1075 | - * @since 1.0.0 |
|
| 1076 | - * @return string |
|
| 1077 | - */ |
|
| 1078 | - public function get_cancel_url() { |
|
| 1079 | - $url = getpaid_get_authenticated_action_url( 'subscription_cancel', $this->get_view_url() ); |
|
| 1080 | - return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
| 1081 | - } |
|
| 1082 | - |
|
| 1083 | - /** |
|
| 1084 | - * Retrieves the URL to view a subscription |
|
| 1085 | - * |
|
| 1086 | - * @since 1.0.19 |
|
| 1087 | - * @return string |
|
| 1088 | - */ |
|
| 1089 | - public function get_view_url() { |
|
| 1090 | - |
|
| 1091 | - $url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
| 1092 | - $url = add_query_arg( 'subscription', $this->get_id(), $url ); |
|
| 1093 | - |
|
| 1094 | - return apply_filters( 'getpaid_get_subscription_view_url', $url, $this ); |
|
| 1095 | - } |
|
| 1096 | - |
|
| 1097 | - /** |
|
| 1098 | - * Determines if subscription can be manually renewed |
|
| 1099 | - * |
|
| 1100 | - * This method is filtered by payment gateways in order to return true on subscriptions |
|
| 1101 | - * that can be renewed manually |
|
| 1102 | - * |
|
| 1103 | - * @since 2.5 |
|
| 1104 | - * @return bool |
|
| 1105 | - */ |
|
| 1106 | - public function can_renew() { |
|
| 1107 | - return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
| 1108 | - } |
|
| 1109 | - |
|
| 1110 | - /** |
|
| 1111 | - * Retrieves the URL to renew a subscription |
|
| 1112 | - * |
|
| 1113 | - * @since 2.5 |
|
| 1114 | - * @return string |
|
| 1115 | - */ |
|
| 1116 | - public function get_renew_url() { |
|
| 1117 | - $url = wp_nonce_url( add_query_arg( array( 'getpaid-action' => 'renew_subscription', 'sub_id' => $this->get_id ) ), 'getpaid-nonce' ); |
|
| 1118 | - return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
| 1119 | - } |
|
| 1120 | - |
|
| 1121 | - /** |
|
| 1122 | - * Determines if subscription can have their payment method updated |
|
| 1123 | - * |
|
| 1124 | - * @since 1.0.0 |
|
| 1125 | - * @return bool |
|
| 1126 | - */ |
|
| 1127 | - public function can_update() { |
|
| 1128 | - return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
| 1129 | - } |
|
| 1130 | - |
|
| 1131 | - /** |
|
| 1132 | - * Retrieves the URL to update subscription |
|
| 1133 | - * |
|
| 1134 | - * @since 1.0.0 |
|
| 1135 | - * @return string |
|
| 1136 | - */ |
|
| 1137 | - public function get_update_url() { |
|
| 1138 | - $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->get_id() ) ); |
|
| 1139 | - return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
| 1140 | - } |
|
| 1141 | - |
|
| 1142 | - /** |
|
| 1143 | - * Retrieves the subscription status label |
|
| 1144 | - * |
|
| 1145 | - * @since 1.0.0 |
|
| 1146 | - * @return string |
|
| 1147 | - */ |
|
| 1148 | - public function get_status_label() { |
|
| 1149 | - return getpaid_get_subscription_status_label( $this->get_status() ); |
|
| 1150 | - } |
|
| 1151 | - |
|
| 1152 | - /** |
|
| 1153 | - * Retrieves the subscription status class |
|
| 1154 | - * |
|
| 1155 | - * @since 1.0.19 |
|
| 1156 | - * @return string |
|
| 1157 | - */ |
|
| 1158 | - public function get_status_class() { |
|
| 1159 | - $statuses = getpaid_get_subscription_status_classes(); |
|
| 1160 | - return isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : 'badge-dark'; |
|
| 1161 | - } |
|
| 1072 | + /** |
|
| 1073 | + * Retrieves the URL to cancel subscription |
|
| 1074 | + * |
|
| 1075 | + * @since 1.0.0 |
|
| 1076 | + * @return string |
|
| 1077 | + */ |
|
| 1078 | + public function get_cancel_url() { |
|
| 1079 | + $url = getpaid_get_authenticated_action_url( 'subscription_cancel', $this->get_view_url() ); |
|
| 1080 | + return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
| 1081 | + } |
|
| 1082 | + |
|
| 1083 | + /** |
|
| 1084 | + * Retrieves the URL to view a subscription |
|
| 1085 | + * |
|
| 1086 | + * @since 1.0.19 |
|
| 1087 | + * @return string |
|
| 1088 | + */ |
|
| 1089 | + public function get_view_url() { |
|
| 1090 | + |
|
| 1091 | + $url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
| 1092 | + $url = add_query_arg( 'subscription', $this->get_id(), $url ); |
|
| 1093 | + |
|
| 1094 | + return apply_filters( 'getpaid_get_subscription_view_url', $url, $this ); |
|
| 1095 | + } |
|
| 1096 | + |
|
| 1097 | + /** |
|
| 1098 | + * Determines if subscription can be manually renewed |
|
| 1099 | + * |
|
| 1100 | + * This method is filtered by payment gateways in order to return true on subscriptions |
|
| 1101 | + * that can be renewed manually |
|
| 1102 | + * |
|
| 1103 | + * @since 2.5 |
|
| 1104 | + * @return bool |
|
| 1105 | + */ |
|
| 1106 | + public function can_renew() { |
|
| 1107 | + return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
| 1108 | + } |
|
| 1109 | + |
|
| 1110 | + /** |
|
| 1111 | + * Retrieves the URL to renew a subscription |
|
| 1112 | + * |
|
| 1113 | + * @since 2.5 |
|
| 1114 | + * @return string |
|
| 1115 | + */ |
|
| 1116 | + public function get_renew_url() { |
|
| 1117 | + $url = wp_nonce_url( add_query_arg( array( 'getpaid-action' => 'renew_subscription', 'sub_id' => $this->get_id ) ), 'getpaid-nonce' ); |
|
| 1118 | + return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
| 1119 | + } |
|
| 1120 | + |
|
| 1121 | + /** |
|
| 1122 | + * Determines if subscription can have their payment method updated |
|
| 1123 | + * |
|
| 1124 | + * @since 1.0.0 |
|
| 1125 | + * @return bool |
|
| 1126 | + */ |
|
| 1127 | + public function can_update() { |
|
| 1128 | + return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
| 1129 | + } |
|
| 1130 | + |
|
| 1131 | + /** |
|
| 1132 | + * Retrieves the URL to update subscription |
|
| 1133 | + * |
|
| 1134 | + * @since 1.0.0 |
|
| 1135 | + * @return string |
|
| 1136 | + */ |
|
| 1137 | + public function get_update_url() { |
|
| 1138 | + $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->get_id() ) ); |
|
| 1139 | + return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
| 1140 | + } |
|
| 1141 | + |
|
| 1142 | + /** |
|
| 1143 | + * Retrieves the subscription status label |
|
| 1144 | + * |
|
| 1145 | + * @since 1.0.0 |
|
| 1146 | + * @return string |
|
| 1147 | + */ |
|
| 1148 | + public function get_status_label() { |
|
| 1149 | + return getpaid_get_subscription_status_label( $this->get_status() ); |
|
| 1150 | + } |
|
| 1151 | + |
|
| 1152 | + /** |
|
| 1153 | + * Retrieves the subscription status class |
|
| 1154 | + * |
|
| 1155 | + * @since 1.0.19 |
|
| 1156 | + * @return string |
|
| 1157 | + */ |
|
| 1158 | + public function get_status_class() { |
|
| 1159 | + $statuses = getpaid_get_subscription_status_classes(); |
|
| 1160 | + return isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : 'badge-dark'; |
|
| 1161 | + } |
|
| 1162 | 1162 | |
| 1163 | 1163 | /** |
| 1164 | 1164 | * Retrieves the subscription status label |
@@ -1168,11 +1168,11 @@ discard block |
||
| 1168 | 1168 | */ |
| 1169 | 1169 | public function get_status_label_html() { |
| 1170 | 1170 | |
| 1171 | - $status_label = sanitize_text_field( $this->get_status_label() ); |
|
| 1172 | - $class = esc_attr( $this->get_status_class() ); |
|
| 1173 | - $status = sanitize_html_class( $this->get_status() ); |
|
| 1171 | + $status_label = sanitize_text_field( $this->get_status_label() ); |
|
| 1172 | + $class = esc_attr( $this->get_status_class() ); |
|
| 1173 | + $status = sanitize_html_class( $this->get_status() ); |
|
| 1174 | 1174 | |
| 1175 | - return "<span class='bsui'><span class='badge $class $status'>$status_label</span></span>"; |
|
| 1175 | + return "<span class='bsui'><span class='badge $class $status'>$status_label</span></span>"; |
|
| 1176 | 1176 | } |
| 1177 | 1177 | |
| 1178 | 1178 | /** |
@@ -1183,75 +1183,75 @@ discard block |
||
| 1183 | 1183 | * @return bool |
| 1184 | 1184 | */ |
| 1185 | 1185 | public function payment_exists( $txn_id = '' ) { |
| 1186 | - $invoice_id = WPInv_Invoice::get_invoice_id_by_field( $txn_id, 'transaction_id' ); |
|
| 1186 | + $invoice_id = WPInv_Invoice::get_invoice_id_by_field( $txn_id, 'transaction_id' ); |
|
| 1187 | 1187 | return ! empty( $invoice_id ); |
| 1188 | - } |
|
| 1189 | - |
|
| 1190 | - /** |
|
| 1191 | - * Handle the status transition. |
|
| 1192 | - */ |
|
| 1193 | - protected function status_transition() { |
|
| 1194 | - $status_transition = $this->status_transition; |
|
| 1195 | - |
|
| 1196 | - // Reset status transition variable. |
|
| 1197 | - $this->status_transition = false; |
|
| 1198 | - |
|
| 1199 | - if ( $status_transition ) { |
|
| 1200 | - try { |
|
| 1201 | - |
|
| 1202 | - // Fire a hook for the status change. |
|
| 1203 | - do_action( 'wpinv_subscription_' . $status_transition['to'], $this->get_id(), $this, $status_transition ); |
|
| 1204 | - do_action( 'getpaid_subscription_' . $status_transition['to'], $this, $status_transition ); |
|
| 1205 | - |
|
| 1206 | - if ( ! empty( $status_transition['from'] ) ) { |
|
| 1207 | - |
|
| 1208 | - /* translators: 1: old subscription status 2: new subscription status */ |
|
| 1209 | - $transition_note = sprintf( __( 'Subscription status changed from %1$s to %2$s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['from'] ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
| 1210 | - |
|
| 1211 | - // Note the transition occurred. |
|
| 1212 | - $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
| 1213 | - |
|
| 1214 | - // Fire another hook. |
|
| 1215 | - do_action( 'getpaid_subscription_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $this ); |
|
| 1216 | - do_action( 'getpaid_subscription_status_changed', $this, $status_transition['from'], $status_transition['to'] ); |
|
| 1217 | - |
|
| 1218 | - } else { |
|
| 1219 | - /* translators: %s: new invoice status */ |
|
| 1220 | - $transition_note = sprintf( __( 'Subscription status set to %s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
| 1221 | - |
|
| 1222 | - // Note the transition occurred. |
|
| 1223 | - $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
| 1224 | - |
|
| 1225 | - } |
|
| 1226 | - } catch ( Exception $e ) { |
|
| 1227 | - $this->get_parent_payment()->add_note( __( 'Error during subscription status transition.', 'invoicing' ) . ' ' . $e->getMessage() ); |
|
| 1228 | - } |
|
| 1229 | - } |
|
| 1230 | - |
|
| 1231 | - } |
|
| 1232 | - |
|
| 1233 | - /** |
|
| 1234 | - * Save data to the database. |
|
| 1235 | - * |
|
| 1236 | - * @since 1.0.19 |
|
| 1237 | - * @return int subscription ID |
|
| 1238 | - */ |
|
| 1239 | - public function save() { |
|
| 1240 | - parent::save(); |
|
| 1241 | - $this->status_transition(); |
|
| 1242 | - return $this->get_id(); |
|
| 1243 | - } |
|
| 1244 | - |
|
| 1245 | - /** |
|
| 1246 | - * Activates a subscription. |
|
| 1247 | - * |
|
| 1248 | - * @since 1.0.19 |
|
| 1249 | - * @return int subscription ID |
|
| 1250 | - */ |
|
| 1251 | - public function activate() { |
|
| 1252 | - $status = 'trialling' == $this->get_status() ? 'trialling' : 'active'; |
|
| 1253 | - $this->set_status( $status ); |
|
| 1254 | - return $this->save(); |
|
| 1255 | - } |
|
| 1188 | + } |
|
| 1189 | + |
|
| 1190 | + /** |
|
| 1191 | + * Handle the status transition. |
|
| 1192 | + */ |
|
| 1193 | + protected function status_transition() { |
|
| 1194 | + $status_transition = $this->status_transition; |
|
| 1195 | + |
|
| 1196 | + // Reset status transition variable. |
|
| 1197 | + $this->status_transition = false; |
|
| 1198 | + |
|
| 1199 | + if ( $status_transition ) { |
|
| 1200 | + try { |
|
| 1201 | + |
|
| 1202 | + // Fire a hook for the status change. |
|
| 1203 | + do_action( 'wpinv_subscription_' . $status_transition['to'], $this->get_id(), $this, $status_transition ); |
|
| 1204 | + do_action( 'getpaid_subscription_' . $status_transition['to'], $this, $status_transition ); |
|
| 1205 | + |
|
| 1206 | + if ( ! empty( $status_transition['from'] ) ) { |
|
| 1207 | + |
|
| 1208 | + /* translators: 1: old subscription status 2: new subscription status */ |
|
| 1209 | + $transition_note = sprintf( __( 'Subscription status changed from %1$s to %2$s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['from'] ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
| 1210 | + |
|
| 1211 | + // Note the transition occurred. |
|
| 1212 | + $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
| 1213 | + |
|
| 1214 | + // Fire another hook. |
|
| 1215 | + do_action( 'getpaid_subscription_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $this ); |
|
| 1216 | + do_action( 'getpaid_subscription_status_changed', $this, $status_transition['from'], $status_transition['to'] ); |
|
| 1217 | + |
|
| 1218 | + } else { |
|
| 1219 | + /* translators: %s: new invoice status */ |
|
| 1220 | + $transition_note = sprintf( __( 'Subscription status set to %s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
| 1221 | + |
|
| 1222 | + // Note the transition occurred. |
|
| 1223 | + $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
| 1224 | + |
|
| 1225 | + } |
|
| 1226 | + } catch ( Exception $e ) { |
|
| 1227 | + $this->get_parent_payment()->add_note( __( 'Error during subscription status transition.', 'invoicing' ) . ' ' . $e->getMessage() ); |
|
| 1228 | + } |
|
| 1229 | + } |
|
| 1230 | + |
|
| 1231 | + } |
|
| 1232 | + |
|
| 1233 | + /** |
|
| 1234 | + * Save data to the database. |
|
| 1235 | + * |
|
| 1236 | + * @since 1.0.19 |
|
| 1237 | + * @return int subscription ID |
|
| 1238 | + */ |
|
| 1239 | + public function save() { |
|
| 1240 | + parent::save(); |
|
| 1241 | + $this->status_transition(); |
|
| 1242 | + return $this->get_id(); |
|
| 1243 | + } |
|
| 1244 | + |
|
| 1245 | + /** |
|
| 1246 | + * Activates a subscription. |
|
| 1247 | + * |
|
| 1248 | + * @since 1.0.19 |
|
| 1249 | + * @return int subscription ID |
|
| 1250 | + */ |
|
| 1251 | + public function activate() { |
|
| 1252 | + $status = 'trialling' == $this->get_status() ? 'trialling' : 'active'; |
|
| 1253 | + $this->set_status( $status ); |
|
| 1254 | + return $this->save(); |
|
| 1255 | + } |
|
| 1256 | 1256 | |
| 1257 | 1257 | } |
@@ -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' ), |
@@ -170,144 +170,144 @@ discard block |
||
| 170 | 170 | return; |
| 171 | 171 | } |
| 172 | 172 | |
| 173 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
| 173 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
| 174 | + |
|
| 175 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 176 | + |
|
| 177 | + foreach ( $bank_info as $key => $data ) { |
|
| 178 | + |
|
| 179 | + $key = sanitize_html_class( $key ); |
|
| 180 | + $label = wp_kses_post( $data['label'] ); |
|
| 181 | + $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
| 182 | + |
|
| 183 | + echo "<tr class='getpaid-bank-transfer-$key'><th class='font-weight-bold'>$label</th><td class='w-75'>$value</td></tr>" . PHP_EOL; |
|
| 184 | + } |
|
| 174 | 185 | |
| 175 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 186 | + echo '</table>'; |
|
| 176 | 187 | |
| 177 | - foreach ( $bank_info as $key => $data ) { |
|
| 188 | + } |
|
| 178 | 189 | |
| 179 | - $key = sanitize_html_class( $key ); |
|
| 180 | - $label = wp_kses_post( $data['label'] ); |
|
| 181 | - $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
| 190 | + /** |
|
| 191 | + * Get country locale if localized. |
|
| 192 | + * |
|
| 193 | + * @return array |
|
| 194 | + */ |
|
| 195 | + public function get_country_locale() { |
|
| 196 | + |
|
| 197 | + if ( empty( $this->locale ) ) { |
|
| 198 | + |
|
| 199 | + // Locale information to be used - only those that are not 'Sort Code'. |
|
| 200 | + $this->locale = apply_filters( |
|
| 201 | + 'getpaid_get_bank_transfer_locale', |
|
| 202 | + array( |
|
| 203 | + 'AU' => array( |
|
| 204 | + 'sortcode' => array( |
|
| 205 | + 'label' => __( 'BSB', 'invoicing' ), |
|
| 206 | + ), |
|
| 207 | + ), |
|
| 208 | + 'CA' => array( |
|
| 209 | + 'sortcode' => array( |
|
| 210 | + 'label' => __( 'Bank transit number', 'invoicing' ), |
|
| 211 | + ), |
|
| 212 | + ), |
|
| 213 | + 'IN' => array( |
|
| 214 | + 'sortcode' => array( |
|
| 215 | + 'label' => __( 'IFSC', 'invoicing' ), |
|
| 216 | + ), |
|
| 217 | + ), |
|
| 218 | + 'IT' => array( |
|
| 219 | + 'sortcode' => array( |
|
| 220 | + 'label' => __( 'Branch sort', 'invoicing' ), |
|
| 221 | + ), |
|
| 222 | + ), |
|
| 223 | + 'NZ' => array( |
|
| 224 | + 'sortcode' => array( |
|
| 225 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
| 226 | + ), |
|
| 227 | + ), |
|
| 228 | + 'SE' => array( |
|
| 229 | + 'sortcode' => array( |
|
| 230 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
| 231 | + ), |
|
| 232 | + ), |
|
| 233 | + 'US' => array( |
|
| 234 | + 'sortcode' => array( |
|
| 235 | + 'label' => __( 'Routing number', 'invoicing' ), |
|
| 236 | + ), |
|
| 237 | + ), |
|
| 238 | + 'ZA' => array( |
|
| 239 | + 'sortcode' => array( |
|
| 240 | + 'label' => __( 'Branch code', 'invoicing' ), |
|
| 241 | + ), |
|
| 242 | + ), |
|
| 243 | + ) |
|
| 244 | + ); |
|
| 182 | 245 | |
| 183 | - echo "<tr class='getpaid-bank-transfer-$key'><th class='font-weight-bold'>$label</th><td class='w-75'>$value</td></tr>" . PHP_EOL; |
|
| 184 | - } |
|
| 246 | + } |
|
| 185 | 247 | |
| 186 | - echo '</table>'; |
|
| 248 | + return $this->locale; |
|
| 187 | 249 | |
| 188 | 250 | } |
| 189 | 251 | |
| 190 | 252 | /** |
| 191 | - * Get country locale if localized. |
|
| 192 | - * |
|
| 193 | - * @return array |
|
| 194 | - */ |
|
| 195 | - public function get_country_locale() { |
|
| 196 | - |
|
| 197 | - if ( empty( $this->locale ) ) { |
|
| 198 | - |
|
| 199 | - // Locale information to be used - only those that are not 'Sort Code'. |
|
| 200 | - $this->locale = apply_filters( |
|
| 201 | - 'getpaid_get_bank_transfer_locale', |
|
| 202 | - array( |
|
| 203 | - 'AU' => array( |
|
| 204 | - 'sortcode' => array( |
|
| 205 | - 'label' => __( 'BSB', 'invoicing' ), |
|
| 206 | - ), |
|
| 207 | - ), |
|
| 208 | - 'CA' => array( |
|
| 209 | - 'sortcode' => array( |
|
| 210 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
| 211 | - ), |
|
| 212 | - ), |
|
| 213 | - 'IN' => array( |
|
| 214 | - 'sortcode' => array( |
|
| 215 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
| 216 | - ), |
|
| 217 | - ), |
|
| 218 | - 'IT' => array( |
|
| 219 | - 'sortcode' => array( |
|
| 220 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
| 221 | - ), |
|
| 222 | - ), |
|
| 223 | - 'NZ' => array( |
|
| 224 | - 'sortcode' => array( |
|
| 225 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
| 226 | - ), |
|
| 227 | - ), |
|
| 228 | - 'SE' => array( |
|
| 229 | - 'sortcode' => array( |
|
| 230 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
| 231 | - ), |
|
| 232 | - ), |
|
| 233 | - 'US' => array( |
|
| 234 | - 'sortcode' => array( |
|
| 235 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
| 236 | - ), |
|
| 237 | - ), |
|
| 238 | - 'ZA' => array( |
|
| 239 | - 'sortcode' => array( |
|
| 240 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
| 241 | - ), |
|
| 242 | - ), |
|
| 243 | - ) |
|
| 244 | - ); |
|
| 245 | - |
|
| 246 | - } |
|
| 247 | - |
|
| 248 | - return $this->locale; |
|
| 249 | - |
|
| 250 | - } |
|
| 251 | - |
|
| 252 | - /** |
|
| 253 | - * Filters the gateway settings. |
|
| 254 | - * |
|
| 255 | - * @param array $admin_settings |
|
| 256 | - */ |
|
| 257 | - public function admin_settings( $admin_settings ) { |
|
| 253 | + * Filters the gateway settings. |
|
| 254 | + * |
|
| 255 | + * @param array $admin_settings |
|
| 256 | + */ |
|
| 257 | + public function admin_settings( $admin_settings ) { |
|
| 258 | 258 | |
| 259 | 259 | $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' ); |
| 260 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
| 260 | + $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
| 261 | 261 | |
| 262 | - $locale = $this->get_country_locale(); |
|
| 262 | + $locale = $this->get_country_locale(); |
|
| 263 | 263 | |
| 264 | - // Get sortcode label in the $locale array and use appropriate one. |
|
| 265 | - $country = wpinv_default_billing_country(); |
|
| 266 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 264 | + // Get sortcode label in the $locale array and use appropriate one. |
|
| 265 | + $country = wpinv_default_billing_country(); |
|
| 266 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 267 | 267 | |
| 268 | - $admin_settings['bank_transfer_ac_name'] = array( |
|
| 268 | + $admin_settings['bank_transfer_ac_name'] = array( |
|
| 269 | 269 | 'type' => 'text', |
| 270 | 270 | 'id' => 'bank_transfer_ac_name', |
| 271 | 271 | 'name' => __( 'Account Name', 'invoicing' ), |
| 272 | - ); |
|
| 272 | + ); |
|
| 273 | 273 | |
| 274 | - $admin_settings['bank_transfer_ac_no'] = array( |
|
| 274 | + $admin_settings['bank_transfer_ac_no'] = array( |
|
| 275 | 275 | 'type' => 'text', |
| 276 | 276 | 'id' => 'bank_transfer_ac_no', |
| 277 | 277 | 'name' => __( 'Account Number', 'invoicing' ), |
| 278 | - ); |
|
| 278 | + ); |
|
| 279 | 279 | |
| 280 | - $admin_settings['bank_transfer_bank_name'] = array( |
|
| 280 | + $admin_settings['bank_transfer_bank_name'] = array( |
|
| 281 | 281 | 'type' => 'text', |
| 282 | 282 | 'id' => 'bank_transfer_bank_name', |
| 283 | 283 | 'name' => __( 'Bank Name', 'invoicing' ), |
| 284 | - ); |
|
| 284 | + ); |
|
| 285 | 285 | |
| 286 | - $admin_settings['bank_transfer_ifsc'] = array( |
|
| 286 | + $admin_settings['bank_transfer_ifsc'] = array( |
|
| 287 | 287 | 'type' => 'text', |
| 288 | 288 | 'id' => 'bank_transfer_ifsc', |
| 289 | 289 | 'name' => __( 'IFSC Code', 'invoicing' ), |
| 290 | - ); |
|
| 290 | + ); |
|
| 291 | 291 | |
| 292 | - $admin_settings['bank_transfer_iban'] = array( |
|
| 292 | + $admin_settings['bank_transfer_iban'] = array( |
|
| 293 | 293 | 'type' => 'text', |
| 294 | 294 | 'id' => 'bank_transfer_iban', |
| 295 | 295 | 'name' => __( 'IBAN', 'invoicing' ), |
| 296 | - ); |
|
| 296 | + ); |
|
| 297 | 297 | |
| 298 | - $admin_settings['bank_transfer_bic'] = array( |
|
| 298 | + $admin_settings['bank_transfer_bic'] = array( |
|
| 299 | 299 | 'type' => 'text', |
| 300 | 300 | 'id' => 'bank_transfer_bic', |
| 301 | 301 | 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
| 302 | - ); |
|
| 302 | + ); |
|
| 303 | 303 | |
| 304 | - $admin_settings['bank_transfer_sort_code'] = array( |
|
| 305 | - 'type' => 'text', |
|
| 306 | - 'id' => 'bank_transfer_sort_code', |
|
| 307 | - 'name' => $sortcode, |
|
| 308 | - ); |
|
| 304 | + $admin_settings['bank_transfer_sort_code'] = array( |
|
| 305 | + 'type' => 'text', |
|
| 306 | + 'id' => 'bank_transfer_sort_code', |
|
| 307 | + 'name' => $sortcode, |
|
| 308 | + ); |
|
| 309 | 309 | |
| 310 | - $admin_settings['bank_transfer_info'] = array( |
|
| 310 | + $admin_settings['bank_transfer_info'] = array( |
|
| 311 | 311 | 'id' => 'bank_transfer_info', |
| 312 | 312 | 'name' => __( 'Instructions', 'invoicing' ), |
| 313 | 313 | 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
@@ -317,17 +317,17 @@ discard block |
||
| 317 | 317 | 'rows' => 5 |
| 318 | 318 | ); |
| 319 | 319 | |
| 320 | - return $admin_settings; |
|
| 321 | - } |
|
| 320 | + return $admin_settings; |
|
| 321 | + } |
|
| 322 | 322 | |
| 323 | - /** |
|
| 324 | - * Processes invoice addons. |
|
| 325 | - * |
|
| 326 | - * @param WPInv_Invoice $invoice |
|
| 327 | - * @param GetPaid_Form_Item[] $items |
|
| 328 | - * @return WPInv_Invoice |
|
| 329 | - */ |
|
| 330 | - public function process_addons( $invoice, $items ) { |
|
| 323 | + /** |
|
| 324 | + * Processes invoice addons. |
|
| 325 | + * |
|
| 326 | + * @param WPInv_Invoice $invoice |
|
| 327 | + * @param GetPaid_Form_Item[] $items |
|
| 328 | + * @return WPInv_Invoice |
|
| 329 | + */ |
|
| 330 | + public function process_addons( $invoice, $items ) { |
|
| 331 | 331 | |
| 332 | 332 | foreach ( $items as $item ) { |
| 333 | 333 | $invoice->add_item( $item ); |
@@ -335,70 +335,70 @@ discard block |
||
| 335 | 335 | |
| 336 | 336 | $invoice->recalculate_total(); |
| 337 | 337 | $invoice->save(); |
| 338 | - } |
|
| 338 | + } |
|
| 339 | 339 | |
| 340 | - /** |
|
| 341 | - * (Maybe) renews a bank transfer subscription profile. |
|
| 342 | - * |
|
| 343 | - * |
|
| 340 | + /** |
|
| 341 | + * (Maybe) renews a bank transfer subscription profile. |
|
| 342 | + * |
|
| 343 | + * |
|
| 344 | 344 | * @param WPInv_Subscription $subscription |
| 345 | - */ |
|
| 346 | - public function maybe_renew_subscription( $subscription ) { |
|
| 345 | + */ |
|
| 346 | + public function maybe_renew_subscription( $subscription ) { |
|
| 347 | 347 | |
| 348 | 348 | // Ensure its our subscription && it's active. |
| 349 | 349 | if ( $this->id == $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
| 350 | - $subscription->create_payment(); |
|
| 350 | + $subscription->create_payment(); |
|
| 351 | 351 | } |
| 352 | 352 | |
| 353 | 353 | } |
| 354 | 354 | |
| 355 | - /** |
|
| 356 | - * Process a bank transfer payment. |
|
| 357 | - * |
|
| 358 | - * |
|
| 355 | + /** |
|
| 356 | + * Process a bank transfer payment. |
|
| 357 | + * |
|
| 358 | + * |
|
| 359 | 359 | * @param WPInv_Invoice $invoice |
| 360 | - */ |
|
| 361 | - public function invoice_paid( $invoice ) { |
|
| 360 | + */ |
|
| 361 | + public function invoice_paid( $invoice ) { |
|
| 362 | 362 | |
| 363 | - // Abort if not paid by bank transfer. |
|
| 364 | - if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
| 365 | - return; |
|
| 366 | - } |
|
| 363 | + // Abort if not paid by bank transfer. |
|
| 364 | + if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
| 365 | + return; |
|
| 366 | + } |
|
| 367 | 367 | |
| 368 | - // Is it a parent payment? |
|
| 369 | - if ( 0 == $invoice->get_parent_id() ) { |
|
| 368 | + // Is it a parent payment? |
|
| 369 | + if ( 0 == $invoice->get_parent_id() ) { |
|
| 370 | 370 | |
| 371 | - // (Maybe) activate subscriptions. |
|
| 372 | - $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 371 | + // (Maybe) activate subscriptions. |
|
| 372 | + $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 373 | 373 | |
| 374 | - if ( ! empty( $subscriptions ) ) { |
|
| 375 | - $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
| 374 | + if ( ! empty( $subscriptions ) ) { |
|
| 375 | + $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
| 376 | 376 | |
| 377 | - foreach ( $subscriptions as $subscription ) { |
|
| 378 | - if ( $subscription->exists() ) { |
|
| 379 | - $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
| 380 | - $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
| 377 | + foreach ( $subscriptions as $subscription ) { |
|
| 378 | + if ( $subscription->exists() ) { |
|
| 379 | + $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
| 380 | + $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
| 381 | 381 | |
| 382 | - $subscription->set_next_renewal_date( $expiry ); |
|
| 383 | - $subscription->set_date_created( current_time( 'mysql' ) ); |
|
| 384 | - $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
| 385 | - $subscription->activate(); |
|
| 386 | - } |
|
| 387 | - } |
|
| 382 | + $subscription->set_next_renewal_date( $expiry ); |
|
| 383 | + $subscription->set_date_created( current_time( 'mysql' ) ); |
|
| 384 | + $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
| 385 | + $subscription->activate(); |
|
| 386 | + } |
|
| 387 | + } |
|
| 388 | 388 | |
| 389 | - } |
|
| 389 | + } |
|
| 390 | 390 | |
| 391 | - } else { |
|
| 391 | + } else { |
|
| 392 | 392 | |
| 393 | - $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
| 393 | + $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
| 394 | 394 | |
| 395 | - // Renew the subscription. |
|
| 396 | - if ( $subscription && $subscription->exists() ) { |
|
| 397 | - $subscription->add_payment( array(), $invoice ); |
|
| 398 | - $subscription->renew(); |
|
| 399 | - } |
|
| 395 | + // Renew the subscription. |
|
| 396 | + if ( $subscription && $subscription->exists() ) { |
|
| 397 | + $subscription->add_payment( array(), $invoice ); |
|
| 398 | + $subscription->renew(); |
|
| 399 | + } |
|
| 400 | 400 | |
| 401 | - } |
|
| 401 | + } |
|
| 402 | 402 | |
| 403 | 403 | } |
| 404 | 404 | |
@@ -1,7 +1,7 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | if ( ! defined( 'ABSPATH' ) ) { |
| 4 | - exit; // Exit if accessed directly |
|
| 4 | + exit; // Exit if accessed directly |
|
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | /** |
@@ -11,1056 +11,1056 @@ discard block |
||
| 11 | 11 | */ |
| 12 | 12 | class AUI_Component_Input { |
| 13 | 13 | |
| 14 | - /** |
|
| 15 | - * Build the component. |
|
| 16 | - * |
|
| 17 | - * @param array $args |
|
| 18 | - * |
|
| 19 | - * @return string The rendered component. |
|
| 20 | - */ |
|
| 21 | - public static function input($args = array()){ |
|
| 22 | - $defaults = array( |
|
| 23 | - 'type' => 'text', |
|
| 24 | - 'name' => '', |
|
| 25 | - 'class' => '', |
|
| 26 | - 'wrap_class' => '', |
|
| 27 | - 'id' => '', |
|
| 28 | - 'placeholder'=> '', |
|
| 29 | - 'title' => '', |
|
| 30 | - 'value' => '', |
|
| 31 | - 'required' => false, |
|
| 32 | - 'label' => '', |
|
| 33 | - 'label_after'=> false, |
|
| 34 | - 'label_class'=> '', |
|
| 35 | - 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 36 | - 'help_text' => '', |
|
| 37 | - 'validation_text' => '', |
|
| 38 | - 'validation_pattern' => '', |
|
| 39 | - 'no_wrap' => false, |
|
| 40 | - 'input_group_right' => '', |
|
| 41 | - 'input_group_left' => '', |
|
| 42 | - 'input_group_right_inside' => false, // forces the input group inside the input |
|
| 43 | - 'input_group_left_inside' => false, // forces the input group inside the input |
|
| 44 | - 'step' => '', |
|
| 45 | - 'switch' => false, // to show checkbox as a switch |
|
| 46 | - 'checked' => false, // set a checkbox or radio as selected |
|
| 47 | - 'password_toggle' => true, // toggle view/hide password |
|
| 48 | - 'element_require' => '', // [%element_id%] == "1" |
|
| 49 | - 'extra_attributes' => array(), // an array of extra attributes |
|
| 50 | - 'wrap_attributes' => array() |
|
| 51 | - ); |
|
| 52 | - |
|
| 53 | - /** |
|
| 54 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 55 | - */ |
|
| 56 | - $args = wp_parse_args( $args, $defaults ); |
|
| 57 | - $output = ''; |
|
| 58 | - if ( ! empty( $args['type'] ) ) { |
|
| 59 | - // hidden label option needs to be empty |
|
| 60 | - $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 61 | - |
|
| 62 | - $type = sanitize_html_class( $args['type'] ); |
|
| 63 | - |
|
| 64 | - $help_text = ''; |
|
| 65 | - $label = ''; |
|
| 66 | - $label_after = $args['label_after']; |
|
| 67 | - $label_args = array( |
|
| 68 | - 'title'=> $args['label'], |
|
| 69 | - 'for'=> $args['id'], |
|
| 70 | - 'class' => $args['label_class']." ", |
|
| 71 | - 'label_type' => $args['label_type'] |
|
| 72 | - ); |
|
| 73 | - |
|
| 74 | - // floating labels need label after |
|
| 75 | - if( $args['label_type'] == 'floating' && $type != 'checkbox' ){ |
|
| 76 | - $label_after = true; |
|
| 77 | - $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 78 | - } |
|
| 79 | - |
|
| 80 | - // Some special sauce for files |
|
| 81 | - if($type=='file' ){ |
|
| 82 | - $label_after = true; // if type file we need the label after |
|
| 83 | - $args['class'] .= ' custom-file-input '; |
|
| 84 | - }elseif($type=='checkbox'){ |
|
| 85 | - $label_after = true; // if type file we need the label after |
|
| 86 | - $args['class'] .= ' custom-control-input '; |
|
| 87 | - }elseif($type=='datepicker' || $type=='timepicker'){ |
|
| 88 | - $type = 'text'; |
|
| 89 | - //$args['class'] .= ' aui-flatpickr bg-initial '; |
|
| 90 | - $args['class'] .= ' bg-initial '; |
|
| 91 | - |
|
| 92 | - $args['extra_attributes']['data-aui-init'] = 'flatpickr'; |
|
| 93 | - // enqueue the script |
|
| 94 | - $aui_settings = AyeCode_UI_Settings::instance(); |
|
| 95 | - $aui_settings->enqueue_flatpickr(); |
|
| 96 | - } |
|
| 97 | - |
|
| 98 | - |
|
| 99 | - // open/type |
|
| 100 | - $output .= '<input type="' . $type . '" '; |
|
| 101 | - |
|
| 102 | - // name |
|
| 103 | - if(!empty($args['name'])){ |
|
| 104 | - $output .= ' name="'.esc_attr($args['name']).'" '; |
|
| 105 | - } |
|
| 106 | - |
|
| 107 | - // id |
|
| 108 | - if(!empty($args['id'])){ |
|
| 109 | - $output .= ' id="'.sanitize_html_class($args['id']).'" '; |
|
| 110 | - } |
|
| 111 | - |
|
| 112 | - // placeholder |
|
| 113 | - if(isset($args['placeholder']) && '' != $args['placeholder'] ){ |
|
| 114 | - $output .= ' placeholder="'.esc_attr($args['placeholder']).'" '; |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - // title |
|
| 118 | - if(!empty($args['title'])){ |
|
| 119 | - $output .= ' title="'.esc_attr($args['title']).'" '; |
|
| 120 | - } |
|
| 121 | - |
|
| 122 | - // value |
|
| 123 | - if(!empty($args['value'])){ |
|
| 124 | - $output .= AUI_Component_Helper::value($args['value']); |
|
| 125 | - } |
|
| 126 | - |
|
| 127 | - // checked, for radio and checkboxes |
|
| 128 | - if( ( $type == 'checkbox' || $type == 'radio' ) && $args['checked'] ){ |
|
| 129 | - $output .= ' checked '; |
|
| 130 | - } |
|
| 131 | - |
|
| 132 | - // validation text |
|
| 133 | - if(!empty($args['validation_text'])){ |
|
| 134 | - $output .= ' oninvalid="setCustomValidity(\''.esc_attr($args['validation_text']).'\')" '; |
|
| 135 | - $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" '; |
|
| 136 | - } |
|
| 137 | - |
|
| 138 | - // validation_pattern |
|
| 139 | - if(!empty($args['validation_pattern'])){ |
|
| 140 | - $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" '; |
|
| 141 | - } |
|
| 142 | - |
|
| 143 | - // step (for numbers) |
|
| 144 | - if(!empty($args['step'])){ |
|
| 145 | - $output .= ' step="'.$args['step'].'" '; |
|
| 146 | - } |
|
| 147 | - |
|
| 148 | - // required |
|
| 149 | - if(!empty($args['required'])){ |
|
| 150 | - $output .= ' required '; |
|
| 151 | - } |
|
| 152 | - |
|
| 153 | - // class |
|
| 154 | - $class = !empty($args['class']) ? AUI_Component_Helper::esc_classes( $args['class'] ) : ''; |
|
| 155 | - $output .= ' class="form-control '.$class.'" '; |
|
| 156 | - |
|
| 157 | - // data-attributes |
|
| 158 | - $output .= AUI_Component_Helper::data_attributes($args); |
|
| 159 | - |
|
| 160 | - // extra attributes |
|
| 161 | - if(!empty($args['extra_attributes'])){ |
|
| 162 | - $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 163 | - } |
|
| 164 | - |
|
| 165 | - // close |
|
| 166 | - $output .= ' >'; |
|
| 167 | - |
|
| 168 | - |
|
| 169 | - // label |
|
| 170 | - if(!empty($args['label'])){ |
|
| 171 | - if($type == 'file'){$label_args['class'] .= 'custom-file-label';} |
|
| 172 | - elseif($type == 'checkbox'){$label_args['class'] .= 'custom-control-label';} |
|
| 173 | - $label = self::label( $label_args, $type ); |
|
| 174 | - } |
|
| 175 | - |
|
| 176 | - // help text |
|
| 177 | - if(!empty($args['help_text'])){ |
|
| 178 | - $help_text = AUI_Component_Helper::help_text($args['help_text']); |
|
| 179 | - } |
|
| 180 | - |
|
| 181 | - |
|
| 182 | - // set help text in the correct possition |
|
| 183 | - if($label_after){ |
|
| 184 | - $output .= $label . $help_text; |
|
| 185 | - } |
|
| 186 | - |
|
| 187 | - // some input types need a separate wrap |
|
| 188 | - if($type == 'file') { |
|
| 189 | - $output = self::wrap( array( |
|
| 190 | - 'content' => $output, |
|
| 191 | - 'class' => 'form-group custom-file' |
|
| 192 | - ) ); |
|
| 193 | - }elseif($type == 'checkbox'){ |
|
| 194 | - $wrap_class = $args['switch'] ? 'custom-switch' : 'custom-checkbox'; |
|
| 195 | - $output = self::wrap( array( |
|
| 196 | - 'content' => $output, |
|
| 197 | - 'class' => 'custom-control '.$wrap_class |
|
| 198 | - ) ); |
|
| 199 | - |
|
| 200 | - if($args['label_type']=='horizontal'){ |
|
| 201 | - $output = '<div class="col-sm-2 col-form-label"></div><div class="col-sm-10">' . $output . '</div>'; |
|
| 202 | - } |
|
| 203 | - }elseif($type == 'password' && $args['password_toggle'] && !$args['input_group_right']){ |
|
| 204 | - |
|
| 205 | - |
|
| 206 | - // allow password field to toggle view |
|
| 207 | - $args['input_group_right'] = '<span class="input-group-text c-pointer px-3" |
|
| 14 | + /** |
|
| 15 | + * Build the component. |
|
| 16 | + * |
|
| 17 | + * @param array $args |
|
| 18 | + * |
|
| 19 | + * @return string The rendered component. |
|
| 20 | + */ |
|
| 21 | + public static function input($args = array()){ |
|
| 22 | + $defaults = array( |
|
| 23 | + 'type' => 'text', |
|
| 24 | + 'name' => '', |
|
| 25 | + 'class' => '', |
|
| 26 | + 'wrap_class' => '', |
|
| 27 | + 'id' => '', |
|
| 28 | + 'placeholder'=> '', |
|
| 29 | + 'title' => '', |
|
| 30 | + 'value' => '', |
|
| 31 | + 'required' => false, |
|
| 32 | + 'label' => '', |
|
| 33 | + 'label_after'=> false, |
|
| 34 | + 'label_class'=> '', |
|
| 35 | + 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 36 | + 'help_text' => '', |
|
| 37 | + 'validation_text' => '', |
|
| 38 | + 'validation_pattern' => '', |
|
| 39 | + 'no_wrap' => false, |
|
| 40 | + 'input_group_right' => '', |
|
| 41 | + 'input_group_left' => '', |
|
| 42 | + 'input_group_right_inside' => false, // forces the input group inside the input |
|
| 43 | + 'input_group_left_inside' => false, // forces the input group inside the input |
|
| 44 | + 'step' => '', |
|
| 45 | + 'switch' => false, // to show checkbox as a switch |
|
| 46 | + 'checked' => false, // set a checkbox or radio as selected |
|
| 47 | + 'password_toggle' => true, // toggle view/hide password |
|
| 48 | + 'element_require' => '', // [%element_id%] == "1" |
|
| 49 | + 'extra_attributes' => array(), // an array of extra attributes |
|
| 50 | + 'wrap_attributes' => array() |
|
| 51 | + ); |
|
| 52 | + |
|
| 53 | + /** |
|
| 54 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 55 | + */ |
|
| 56 | + $args = wp_parse_args( $args, $defaults ); |
|
| 57 | + $output = ''; |
|
| 58 | + if ( ! empty( $args['type'] ) ) { |
|
| 59 | + // hidden label option needs to be empty |
|
| 60 | + $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 61 | + |
|
| 62 | + $type = sanitize_html_class( $args['type'] ); |
|
| 63 | + |
|
| 64 | + $help_text = ''; |
|
| 65 | + $label = ''; |
|
| 66 | + $label_after = $args['label_after']; |
|
| 67 | + $label_args = array( |
|
| 68 | + 'title'=> $args['label'], |
|
| 69 | + 'for'=> $args['id'], |
|
| 70 | + 'class' => $args['label_class']." ", |
|
| 71 | + 'label_type' => $args['label_type'] |
|
| 72 | + ); |
|
| 73 | + |
|
| 74 | + // floating labels need label after |
|
| 75 | + if( $args['label_type'] == 'floating' && $type != 'checkbox' ){ |
|
| 76 | + $label_after = true; |
|
| 77 | + $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 78 | + } |
|
| 79 | + |
|
| 80 | + // Some special sauce for files |
|
| 81 | + if($type=='file' ){ |
|
| 82 | + $label_after = true; // if type file we need the label after |
|
| 83 | + $args['class'] .= ' custom-file-input '; |
|
| 84 | + }elseif($type=='checkbox'){ |
|
| 85 | + $label_after = true; // if type file we need the label after |
|
| 86 | + $args['class'] .= ' custom-control-input '; |
|
| 87 | + }elseif($type=='datepicker' || $type=='timepicker'){ |
|
| 88 | + $type = 'text'; |
|
| 89 | + //$args['class'] .= ' aui-flatpickr bg-initial '; |
|
| 90 | + $args['class'] .= ' bg-initial '; |
|
| 91 | + |
|
| 92 | + $args['extra_attributes']['data-aui-init'] = 'flatpickr'; |
|
| 93 | + // enqueue the script |
|
| 94 | + $aui_settings = AyeCode_UI_Settings::instance(); |
|
| 95 | + $aui_settings->enqueue_flatpickr(); |
|
| 96 | + } |
|
| 97 | + |
|
| 98 | + |
|
| 99 | + // open/type |
|
| 100 | + $output .= '<input type="' . $type . '" '; |
|
| 101 | + |
|
| 102 | + // name |
|
| 103 | + if(!empty($args['name'])){ |
|
| 104 | + $output .= ' name="'.esc_attr($args['name']).'" '; |
|
| 105 | + } |
|
| 106 | + |
|
| 107 | + // id |
|
| 108 | + if(!empty($args['id'])){ |
|
| 109 | + $output .= ' id="'.sanitize_html_class($args['id']).'" '; |
|
| 110 | + } |
|
| 111 | + |
|
| 112 | + // placeholder |
|
| 113 | + if(isset($args['placeholder']) && '' != $args['placeholder'] ){ |
|
| 114 | + $output .= ' placeholder="'.esc_attr($args['placeholder']).'" '; |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + // title |
|
| 118 | + if(!empty($args['title'])){ |
|
| 119 | + $output .= ' title="'.esc_attr($args['title']).'" '; |
|
| 120 | + } |
|
| 121 | + |
|
| 122 | + // value |
|
| 123 | + if(!empty($args['value'])){ |
|
| 124 | + $output .= AUI_Component_Helper::value($args['value']); |
|
| 125 | + } |
|
| 126 | + |
|
| 127 | + // checked, for radio and checkboxes |
|
| 128 | + if( ( $type == 'checkbox' || $type == 'radio' ) && $args['checked'] ){ |
|
| 129 | + $output .= ' checked '; |
|
| 130 | + } |
|
| 131 | + |
|
| 132 | + // validation text |
|
| 133 | + if(!empty($args['validation_text'])){ |
|
| 134 | + $output .= ' oninvalid="setCustomValidity(\''.esc_attr($args['validation_text']).'\')" '; |
|
| 135 | + $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" '; |
|
| 136 | + } |
|
| 137 | + |
|
| 138 | + // validation_pattern |
|
| 139 | + if(!empty($args['validation_pattern'])){ |
|
| 140 | + $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" '; |
|
| 141 | + } |
|
| 142 | + |
|
| 143 | + // step (for numbers) |
|
| 144 | + if(!empty($args['step'])){ |
|
| 145 | + $output .= ' step="'.$args['step'].'" '; |
|
| 146 | + } |
|
| 147 | + |
|
| 148 | + // required |
|
| 149 | + if(!empty($args['required'])){ |
|
| 150 | + $output .= ' required '; |
|
| 151 | + } |
|
| 152 | + |
|
| 153 | + // class |
|
| 154 | + $class = !empty($args['class']) ? AUI_Component_Helper::esc_classes( $args['class'] ) : ''; |
|
| 155 | + $output .= ' class="form-control '.$class.'" '; |
|
| 156 | + |
|
| 157 | + // data-attributes |
|
| 158 | + $output .= AUI_Component_Helper::data_attributes($args); |
|
| 159 | + |
|
| 160 | + // extra attributes |
|
| 161 | + if(!empty($args['extra_attributes'])){ |
|
| 162 | + $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 163 | + } |
|
| 164 | + |
|
| 165 | + // close |
|
| 166 | + $output .= ' >'; |
|
| 167 | + |
|
| 168 | + |
|
| 169 | + // label |
|
| 170 | + if(!empty($args['label'])){ |
|
| 171 | + if($type == 'file'){$label_args['class'] .= 'custom-file-label';} |
|
| 172 | + elseif($type == 'checkbox'){$label_args['class'] .= 'custom-control-label';} |
|
| 173 | + $label = self::label( $label_args, $type ); |
|
| 174 | + } |
|
| 175 | + |
|
| 176 | + // help text |
|
| 177 | + if(!empty($args['help_text'])){ |
|
| 178 | + $help_text = AUI_Component_Helper::help_text($args['help_text']); |
|
| 179 | + } |
|
| 180 | + |
|
| 181 | + |
|
| 182 | + // set help text in the correct possition |
|
| 183 | + if($label_after){ |
|
| 184 | + $output .= $label . $help_text; |
|
| 185 | + } |
|
| 186 | + |
|
| 187 | + // some input types need a separate wrap |
|
| 188 | + if($type == 'file') { |
|
| 189 | + $output = self::wrap( array( |
|
| 190 | + 'content' => $output, |
|
| 191 | + 'class' => 'form-group custom-file' |
|
| 192 | + ) ); |
|
| 193 | + }elseif($type == 'checkbox'){ |
|
| 194 | + $wrap_class = $args['switch'] ? 'custom-switch' : 'custom-checkbox'; |
|
| 195 | + $output = self::wrap( array( |
|
| 196 | + 'content' => $output, |
|
| 197 | + 'class' => 'custom-control '.$wrap_class |
|
| 198 | + ) ); |
|
| 199 | + |
|
| 200 | + if($args['label_type']=='horizontal'){ |
|
| 201 | + $output = '<div class="col-sm-2 col-form-label"></div><div class="col-sm-10">' . $output . '</div>'; |
|
| 202 | + } |
|
| 203 | + }elseif($type == 'password' && $args['password_toggle'] && !$args['input_group_right']){ |
|
| 204 | + |
|
| 205 | + |
|
| 206 | + // allow password field to toggle view |
|
| 207 | + $args['input_group_right'] = '<span class="input-group-text c-pointer px-3" |
|
| 208 | 208 | onclick="var $el = jQuery(this).find(\'i\');$el.toggleClass(\'fa-eye fa-eye-slash\'); |
| 209 | 209 | var $eli = jQuery(this).parent().parent().find(\'input\'); |
| 210 | 210 | if($el.hasClass(\'fa-eye\')) |
| 211 | 211 | {$eli.attr(\'type\',\'text\');} |
| 212 | 212 | else{$eli.attr(\'type\',\'password\');}" |
| 213 | 213 | ><i class="far fa-fw fa-eye-slash"></i></span>'; |
| 214 | - } |
|
| 215 | - |
|
| 216 | - // input group wraps |
|
| 217 | - if($args['input_group_left'] || $args['input_group_right']){ |
|
| 218 | - $w100 = strpos($args['class'], 'w-100') !== false ? ' w-100' : ''; |
|
| 219 | - if($args['input_group_left']){ |
|
| 220 | - $output = self::wrap( array( |
|
| 221 | - 'content' => $output, |
|
| 222 | - 'class' => $args['input_group_left_inside'] ? 'input-group-inside position-relative'.$w100 : 'input-group', |
|
| 223 | - 'input_group_left' => $args['input_group_left'], |
|
| 224 | - 'input_group_left_inside' => $args['input_group_left_inside'] |
|
| 225 | - ) ); |
|
| 226 | - } |
|
| 227 | - if($args['input_group_right']){ |
|
| 228 | - $output = self::wrap( array( |
|
| 229 | - 'content' => $output, |
|
| 230 | - 'class' => $args['input_group_right_inside'] ? 'input-group-inside position-relative'.$w100 : 'input-group', |
|
| 231 | - 'input_group_right' => $args['input_group_right'], |
|
| 232 | - 'input_group_right_inside' => $args['input_group_right_inside'] |
|
| 233 | - ) ); |
|
| 234 | - } |
|
| 235 | - |
|
| 236 | - } |
|
| 237 | - |
|
| 238 | - if(!$label_after){ |
|
| 239 | - $output .= $help_text; |
|
| 240 | - } |
|
| 241 | - |
|
| 242 | - |
|
| 243 | - if($args['label_type']=='horizontal' && $type != 'checkbox'){ |
|
| 244 | - $output = self::wrap( array( |
|
| 245 | - 'content' => $output, |
|
| 246 | - 'class' => 'col-sm-10', |
|
| 247 | - ) ); |
|
| 248 | - } |
|
| 249 | - |
|
| 250 | - if(!$label_after){ |
|
| 251 | - $output = $label . $output; |
|
| 252 | - } |
|
| 253 | - |
|
| 254 | - // wrap |
|
| 255 | - if ( ! $args['no_wrap'] ) { |
|
| 256 | - $form_group_class = $args['label_type']=='floating' && $type != 'checkbox' ? 'form-label-group' : 'form-group'; |
|
| 257 | - $wrap_class = $args['label_type']=='horizontal' ? $form_group_class . ' row' : $form_group_class; |
|
| 258 | - $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 259 | - $output = self::wrap(array( |
|
| 260 | - 'content' => $output, |
|
| 261 | - 'class' => $wrap_class, |
|
| 262 | - 'element_require' => $args['element_require'], |
|
| 263 | - 'argument_id' => $args['id'], |
|
| 264 | - 'wrap_attributes' => $args['wrap_attributes'], |
|
| 265 | - )); |
|
| 266 | - } |
|
| 267 | - } |
|
| 268 | - |
|
| 269 | - return $output; |
|
| 270 | - } |
|
| 271 | - |
|
| 272 | - /** |
|
| 273 | - * Build the component. |
|
| 274 | - * |
|
| 275 | - * @param array $args |
|
| 276 | - * |
|
| 277 | - * @return string The rendered component. |
|
| 278 | - */ |
|
| 279 | - public static function textarea($args = array()){ |
|
| 280 | - $defaults = array( |
|
| 281 | - 'name' => '', |
|
| 282 | - 'class' => '', |
|
| 283 | - 'wrap_class' => '', |
|
| 284 | - 'id' => '', |
|
| 285 | - 'placeholder'=> '', |
|
| 286 | - 'title' => '', |
|
| 287 | - 'value' => '', |
|
| 288 | - 'required' => false, |
|
| 289 | - 'label' => '', |
|
| 290 | - 'label_after'=> false, |
|
| 291 | - 'label_class' => '', |
|
| 292 | - 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 293 | - 'help_text' => '', |
|
| 294 | - 'validation_text' => '', |
|
| 295 | - 'validation_pattern' => '', |
|
| 296 | - 'no_wrap' => false, |
|
| 297 | - 'rows' => '', |
|
| 298 | - 'wysiwyg' => false, |
|
| 299 | - 'allow_tags' => false, // Allow HTML tags |
|
| 300 | - 'element_require' => '', // [%element_id%] == "1" |
|
| 301 | - 'extra_attributes' => array(), // an array of extra attributes |
|
| 302 | - 'wrap_attributes' => array(), |
|
| 303 | - ); |
|
| 304 | - |
|
| 305 | - /** |
|
| 306 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 307 | - */ |
|
| 308 | - $args = wp_parse_args( $args, $defaults ); |
|
| 309 | - $output = ''; |
|
| 310 | - |
|
| 311 | - // hidden label option needs to be empty |
|
| 312 | - $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 313 | - |
|
| 314 | - // floating labels don't work with wysiwyg so set it as top |
|
| 315 | - if($args['label_type'] == 'floating' && !empty($args['wysiwyg'])){ |
|
| 316 | - $args['label_type'] = 'top'; |
|
| 317 | - } |
|
| 318 | - |
|
| 319 | - $label_after = $args['label_after']; |
|
| 320 | - |
|
| 321 | - // floating labels need label after |
|
| 322 | - if( $args['label_type'] == 'floating' && empty($args['wysiwyg']) ){ |
|
| 323 | - $label_after = true; |
|
| 324 | - $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 325 | - } |
|
| 326 | - |
|
| 327 | - // label |
|
| 328 | - if(!empty($args['label']) && is_array($args['label'])){ |
|
| 329 | - }elseif(!empty($args['label']) && !$label_after){ |
|
| 330 | - $label_args = array( |
|
| 331 | - 'title'=> $args['label'], |
|
| 332 | - 'for'=> $args['id'], |
|
| 333 | - 'class' => $args['label_class']." ", |
|
| 334 | - 'label_type' => $args['label_type'] |
|
| 335 | - ); |
|
| 336 | - $output .= self::label( $label_args ); |
|
| 337 | - } |
|
| 338 | - |
|
| 339 | - // maybe horizontal label |
|
| 340 | - if($args['label_type']=='horizontal'){ |
|
| 341 | - $output .= '<div class="col-sm-10">'; |
|
| 342 | - } |
|
| 343 | - |
|
| 344 | - if(!empty($args['wysiwyg'])){ |
|
| 345 | - ob_start(); |
|
| 346 | - $content = $args['value']; |
|
| 347 | - $editor_id = !empty($args['id']) ? sanitize_html_class($args['id']) : 'wp_editor'; |
|
| 348 | - $settings = array( |
|
| 349 | - 'textarea_rows' => !empty(absint($args['rows'])) ? absint($args['rows']) : 4, |
|
| 350 | - 'quicktags' => false, |
|
| 351 | - 'media_buttons' => false, |
|
| 352 | - 'editor_class' => 'form-control', |
|
| 353 | - 'textarea_name' => !empty($args['name']) ? sanitize_html_class($args['name']) : sanitize_html_class($args['id']), |
|
| 354 | - 'teeny' => true, |
|
| 355 | - ); |
|
| 356 | - |
|
| 357 | - // maybe set settings if array |
|
| 358 | - if(is_array($args['wysiwyg'])){ |
|
| 359 | - $settings = wp_parse_args( $args['wysiwyg'], $settings ); |
|
| 360 | - } |
|
| 361 | - |
|
| 362 | - wp_editor( $content, $editor_id, $settings ); |
|
| 363 | - $output .= ob_get_clean(); |
|
| 364 | - }else{ |
|
| 365 | - |
|
| 366 | - // open |
|
| 367 | - $output .= '<textarea '; |
|
| 368 | - |
|
| 369 | - // name |
|
| 370 | - if(!empty($args['name'])){ |
|
| 371 | - $output .= ' name="'.esc_attr($args['name']).'" '; |
|
| 372 | - } |
|
| 373 | - |
|
| 374 | - // id |
|
| 375 | - if(!empty($args['id'])){ |
|
| 376 | - $output .= ' id="'.sanitize_html_class($args['id']).'" '; |
|
| 377 | - } |
|
| 378 | - |
|
| 379 | - // placeholder |
|
| 380 | - if(isset($args['placeholder']) && '' != $args['placeholder']){ |
|
| 381 | - $output .= ' placeholder="'.esc_attr($args['placeholder']).'" '; |
|
| 382 | - } |
|
| 383 | - |
|
| 384 | - // title |
|
| 385 | - if(!empty($args['title'])){ |
|
| 386 | - $output .= ' title="'.esc_attr($args['title']).'" '; |
|
| 387 | - } |
|
| 388 | - |
|
| 389 | - // validation text |
|
| 390 | - if(!empty($args['validation_text'])){ |
|
| 391 | - $output .= ' oninvalid="setCustomValidity(\''.esc_attr($args['validation_text']).'\')" '; |
|
| 392 | - $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" '; |
|
| 393 | - } |
|
| 394 | - |
|
| 395 | - // validation_pattern |
|
| 396 | - if(!empty($args['validation_pattern'])){ |
|
| 397 | - $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" '; |
|
| 398 | - } |
|
| 399 | - |
|
| 400 | - // required |
|
| 401 | - if(!empty($args['required'])){ |
|
| 402 | - $output .= ' required '; |
|
| 403 | - } |
|
| 404 | - |
|
| 405 | - // rows |
|
| 406 | - if(!empty($args['rows'])){ |
|
| 407 | - $output .= ' rows="'.absint($args['rows']).'" '; |
|
| 408 | - } |
|
| 409 | - |
|
| 410 | - |
|
| 411 | - // class |
|
| 412 | - $class = !empty($args['class']) ? $args['class'] : ''; |
|
| 413 | - $output .= ' class="form-control '.$class.'" '; |
|
| 414 | - |
|
| 415 | - // extra attributes |
|
| 416 | - if(!empty($args['extra_attributes'])){ |
|
| 417 | - $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 418 | - } |
|
| 419 | - |
|
| 420 | - // close tag |
|
| 421 | - $output .= ' >'; |
|
| 422 | - |
|
| 423 | - // value |
|
| 424 | - if ( ! empty( $args['value'] ) ) { |
|
| 425 | - if ( ! empty( $args['allow_tags'] ) ) { |
|
| 426 | - $output .= AUI_Component_Helper::sanitize_html_field( $args['value'], $args ); // Sanitize HTML. |
|
| 427 | - } else { |
|
| 428 | - $output .= sanitize_textarea_field( $args['value'] ); |
|
| 429 | - } |
|
| 430 | - } |
|
| 431 | - |
|
| 432 | - // closing tag |
|
| 433 | - $output .= '</textarea>'; |
|
| 434 | - |
|
| 435 | - } |
|
| 436 | - |
|
| 437 | - if(!empty($args['label']) && $label_after){ |
|
| 438 | - $label_args = array( |
|
| 439 | - 'title'=> $args['label'], |
|
| 440 | - 'for'=> $args['id'], |
|
| 441 | - 'class' => $args['label_class']." ", |
|
| 442 | - 'label_type' => $args['label_type'] |
|
| 443 | - ); |
|
| 444 | - $output .= self::label( $label_args ); |
|
| 445 | - } |
|
| 446 | - |
|
| 447 | - // help text |
|
| 448 | - if(!empty($args['help_text'])){ |
|
| 449 | - $output .= AUI_Component_Helper::help_text($args['help_text']); |
|
| 450 | - } |
|
| 451 | - |
|
| 452 | - // maybe horizontal label |
|
| 453 | - if($args['label_type']=='horizontal'){ |
|
| 454 | - $output .= '</div>'; |
|
| 455 | - } |
|
| 456 | - |
|
| 457 | - |
|
| 458 | - // wrap |
|
| 459 | - if(!$args['no_wrap']){ |
|
| 460 | - $form_group_class = $args['label_type']=='floating' ? 'form-label-group' : 'form-group'; |
|
| 461 | - $wrap_class = $args['label_type']=='horizontal' ? $form_group_class . ' row' : $form_group_class; |
|
| 462 | - $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 463 | - $output = self::wrap(array( |
|
| 464 | - 'content' => $output, |
|
| 465 | - 'class' => $wrap_class, |
|
| 466 | - 'element_require' => $args['element_require'], |
|
| 467 | - 'argument_id' => $args['id'], |
|
| 468 | - 'wrap_attributes' => $args['wrap_attributes'], |
|
| 469 | - )); |
|
| 470 | - } |
|
| 471 | - |
|
| 472 | - |
|
| 473 | - return $output; |
|
| 474 | - } |
|
| 475 | - |
|
| 476 | - public static function label($args = array(), $type = ''){ |
|
| 477 | - //<label for="exampleInputEmail1">Email address</label> |
|
| 478 | - $defaults = array( |
|
| 479 | - 'title' => 'div', |
|
| 480 | - 'for' => '', |
|
| 481 | - 'class' => '', |
|
| 482 | - 'label_type' => '', // empty = hidden, top, horizontal |
|
| 483 | - ); |
|
| 484 | - |
|
| 485 | - /** |
|
| 486 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 487 | - */ |
|
| 488 | - $args = wp_parse_args( $args, $defaults ); |
|
| 489 | - $output = ''; |
|
| 490 | - |
|
| 491 | - if($args['title']){ |
|
| 492 | - |
|
| 493 | - // maybe hide labels //@todo set a global option for visibility class |
|
| 494 | - if($type == 'file' || $type == 'checkbox' || $type == 'radio' || !empty($args['label_type']) ){ |
|
| 495 | - $class = $args['class']; |
|
| 496 | - }else{ |
|
| 497 | - $class = 'sr-only '.$args['class']; |
|
| 498 | - } |
|
| 499 | - |
|
| 500 | - // maybe horizontal |
|
| 501 | - if($args['label_type']=='horizontal' && $type != 'checkbox'){ |
|
| 502 | - $class .= ' col-sm-2 col-form-label'; |
|
| 503 | - } |
|
| 504 | - |
|
| 505 | - // open |
|
| 506 | - $output .= '<label '; |
|
| 507 | - |
|
| 508 | - // for |
|
| 509 | - if(!empty($args['for'])){ |
|
| 510 | - $output .= ' for="'.esc_attr($args['for']).'" '; |
|
| 511 | - } |
|
| 512 | - |
|
| 513 | - // class |
|
| 514 | - $class = $class ? AUI_Component_Helper::esc_classes( $class ) : ''; |
|
| 515 | - $output .= ' class="'.$class.'" '; |
|
| 516 | - |
|
| 517 | - // close |
|
| 518 | - $output .= '>'; |
|
| 519 | - |
|
| 520 | - |
|
| 521 | - // title, don't escape fully as can contain html |
|
| 522 | - if(!empty($args['title'])){ |
|
| 523 | - $output .= wp_kses_post($args['title']); |
|
| 524 | - } |
|
| 525 | - |
|
| 526 | - // close wrap |
|
| 527 | - $output .= '</label>'; |
|
| 528 | - |
|
| 529 | - |
|
| 530 | - } |
|
| 531 | - |
|
| 532 | - |
|
| 533 | - return $output; |
|
| 534 | - } |
|
| 535 | - |
|
| 536 | - /** |
|
| 537 | - * Wrap some content in a HTML wrapper. |
|
| 538 | - * |
|
| 539 | - * @param array $args |
|
| 540 | - * |
|
| 541 | - * @return string |
|
| 542 | - */ |
|
| 543 | - public static function wrap($args = array()){ |
|
| 544 | - $defaults = array( |
|
| 545 | - 'type' => 'div', |
|
| 546 | - 'class' => 'form-group', |
|
| 547 | - 'content' => '', |
|
| 548 | - 'input_group_left' => '', |
|
| 549 | - 'input_group_right' => '', |
|
| 550 | - 'input_group_left_inside' => false, |
|
| 551 | - 'input_group_right_inside' => false, |
|
| 552 | - 'element_require' => '', |
|
| 553 | - 'argument_id' => '', |
|
| 554 | - 'wrap_attributes' => array() |
|
| 555 | - ); |
|
| 556 | - |
|
| 557 | - /** |
|
| 558 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 559 | - */ |
|
| 560 | - $args = wp_parse_args( $args, $defaults ); |
|
| 561 | - $output = ''; |
|
| 562 | - if($args['type']){ |
|
| 563 | - |
|
| 564 | - // open |
|
| 565 | - $output .= '<'.sanitize_html_class($args['type']); |
|
| 566 | - |
|
| 567 | - // element require |
|
| 568 | - if(!empty($args['element_require'])){ |
|
| 569 | - $output .= AUI_Component_Helper::element_require($args['element_require']); |
|
| 570 | - $args['class'] .= " aui-conditional-field"; |
|
| 571 | - } |
|
| 572 | - |
|
| 573 | - // argument_id |
|
| 574 | - if( !empty($args['argument_id']) ){ |
|
| 575 | - $output .= ' data-argument="'.esc_attr($args['argument_id']).'"'; |
|
| 576 | - } |
|
| 577 | - |
|
| 578 | - // class |
|
| 579 | - $class = !empty($args['class']) ? AUI_Component_Helper::esc_classes( $args['class'] ) : ''; |
|
| 580 | - $output .= ' class="'.$class.'" '; |
|
| 581 | - |
|
| 582 | - // Attributes |
|
| 583 | - if ( ! empty( $args['wrap_attributes'] ) ) { |
|
| 584 | - $output .= AUI_Component_Helper::extra_attributes( $args['wrap_attributes'] ); |
|
| 585 | - } |
|
| 586 | - |
|
| 587 | - // close wrap |
|
| 588 | - $output .= ' >'; |
|
| 589 | - |
|
| 590 | - |
|
| 591 | - // Input group left |
|
| 592 | - if(!empty($args['input_group_left'])){ |
|
| 593 | - $position_class = !empty($args['input_group_left_inside']) ? 'position-absolute h-100' : ''; |
|
| 594 | - $input_group_left = strpos($args['input_group_left'], '<') !== false ? $args['input_group_left'] : '<span class="input-group-text">'.$args['input_group_left'].'</span>'; |
|
| 595 | - $output .= '<div class="input-group-prepend '.$position_class.'">'.$input_group_left.'</div>'; |
|
| 596 | - } |
|
| 597 | - |
|
| 598 | - // content |
|
| 599 | - $output .= $args['content']; |
|
| 600 | - |
|
| 601 | - // Input group right |
|
| 602 | - if(!empty($args['input_group_right'])){ |
|
| 603 | - $position_class = !empty($args['input_group_left_inside']) ? 'position-absolute h-100' : ''; |
|
| 604 | - $input_group_right = strpos($args['input_group_right'], '<') !== false ? $args['input_group_right'] : '<span class="input-group-text">'.$args['input_group_right'].'</span>'; |
|
| 605 | - $output .= '<div class="input-group-append '.$position_class.'">'.$input_group_right.'</div>'; |
|
| 606 | - } |
|
| 607 | - |
|
| 608 | - |
|
| 609 | - // close wrap |
|
| 610 | - $output .= '</'.sanitize_html_class($args['type']).'>'; |
|
| 611 | - |
|
| 612 | - |
|
| 613 | - }else{ |
|
| 614 | - $output = $args['content']; |
|
| 615 | - } |
|
| 616 | - |
|
| 617 | - return $output; |
|
| 618 | - } |
|
| 619 | - |
|
| 620 | - /** |
|
| 621 | - * Build the component. |
|
| 622 | - * |
|
| 623 | - * @param array $args |
|
| 624 | - * |
|
| 625 | - * @return string The rendered component. |
|
| 626 | - */ |
|
| 627 | - public static function select($args = array()){ |
|
| 628 | - $defaults = array( |
|
| 629 | - 'class' => '', |
|
| 630 | - 'wrap_class' => '', |
|
| 631 | - 'id' => '', |
|
| 632 | - 'title' => '', |
|
| 633 | - 'value' => '', // can be an array or a string |
|
| 634 | - 'required' => false, |
|
| 635 | - 'label' => '', |
|
| 636 | - 'label_after'=> false, |
|
| 637 | - 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 638 | - 'label_class' => '', |
|
| 639 | - 'help_text' => '', |
|
| 640 | - 'placeholder'=> '', |
|
| 641 | - 'options' => array(), // array or string |
|
| 642 | - 'icon' => '', |
|
| 643 | - 'multiple' => false, |
|
| 644 | - 'select2' => false, |
|
| 645 | - 'no_wrap' => false, |
|
| 646 | - 'element_require' => '', // [%element_id%] == "1" |
|
| 647 | - 'extra_attributes' => array(), // an array of extra attributes |
|
| 648 | - 'wrap_attributes' => array(), |
|
| 649 | - ); |
|
| 650 | - |
|
| 651 | - /** |
|
| 652 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 653 | - */ |
|
| 654 | - $args = wp_parse_args( $args, $defaults ); |
|
| 655 | - $output = ''; |
|
| 656 | - |
|
| 657 | - // for now lets hide floating labels |
|
| 658 | - if( $args['label_type'] == 'floating' ){$args['label_type'] = 'hidden';} |
|
| 659 | - |
|
| 660 | - // hidden label option needs to be empty |
|
| 661 | - $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 662 | - |
|
| 663 | - |
|
| 664 | - $label_after = $args['label_after']; |
|
| 665 | - |
|
| 666 | - // floating labels need label after |
|
| 667 | - if( $args['label_type'] == 'floating' ){ |
|
| 668 | - $label_after = true; |
|
| 669 | - $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 670 | - } |
|
| 671 | - |
|
| 672 | - // Maybe setup select2 |
|
| 673 | - $is_select2 = false; |
|
| 674 | - if(!empty($args['select2'])){ |
|
| 675 | - $args['class'] .= ' aui-select2'; |
|
| 676 | - $is_select2 = true; |
|
| 677 | - }elseif( strpos($args['class'], 'aui-select2') !== false){ |
|
| 678 | - $is_select2 = true; |
|
| 679 | - } |
|
| 680 | - |
|
| 681 | - // select2 tags |
|
| 682 | - if( !empty($args['select2']) && $args['select2'] === 'tags'){ // triple equals needed here for some reason |
|
| 683 | - $args['data-tags'] = 'true'; |
|
| 684 | - $args['data-token-separators'] = "[',']"; |
|
| 685 | - $args['multiple'] = true; |
|
| 686 | - } |
|
| 687 | - |
|
| 688 | - // select2 placeholder |
|
| 689 | - if($is_select2 && isset($args['placeholder']) && '' != $args['placeholder'] && empty($args['data-placeholder'])){ |
|
| 690 | - $args['data-placeholder'] = esc_attr($args['placeholder']); |
|
| 691 | - $args['data-allow-clear'] = isset($args['data-allow-clear']) ? (bool) $args['data-allow-clear'] : true; |
|
| 692 | - } |
|
| 693 | - |
|
| 694 | - // label |
|
| 695 | - if(!empty($args['label']) && is_array($args['label'])){ |
|
| 696 | - }elseif(!empty($args['label']) && !$label_after){ |
|
| 697 | - $label_args = array( |
|
| 698 | - 'title'=> $args['label'], |
|
| 699 | - 'for'=> $args['id'], |
|
| 700 | - 'class' => $args['label_class']." ", |
|
| 701 | - 'label_type' => $args['label_type'] |
|
| 702 | - ); |
|
| 703 | - $output .= self::label($label_args); |
|
| 704 | - } |
|
| 705 | - |
|
| 706 | - // maybe horizontal label |
|
| 707 | - if($args['label_type']=='horizontal'){ |
|
| 708 | - $output .= '<div class="col-sm-10">'; |
|
| 709 | - } |
|
| 710 | - |
|
| 711 | - // Set hidden input to save empty value for multiselect. |
|
| 712 | - if ( ! empty( $args['multiple'] ) && ! empty( $args['name'] ) ) { |
|
| 713 | - $output .= '<input type="hidden" ' . AUI_Component_Helper::name( $args['name'] ) . ' value=""/>'; |
|
| 714 | - } |
|
| 715 | - |
|
| 716 | - // open/type |
|
| 717 | - $output .= '<select '; |
|
| 718 | - |
|
| 719 | - // style |
|
| 720 | - if($is_select2){ |
|
| 721 | - $output .= " style='width:100%;' "; |
|
| 722 | - } |
|
| 723 | - |
|
| 724 | - // element require |
|
| 725 | - if(!empty($args['element_require'])){ |
|
| 726 | - $output .= AUI_Component_Helper::element_require($args['element_require']); |
|
| 727 | - $args['class'] .= " aui-conditional-field"; |
|
| 728 | - } |
|
| 729 | - |
|
| 730 | - // class |
|
| 731 | - $class = !empty($args['class']) ? $args['class'] : ''; |
|
| 732 | - $output .= AUI_Component_Helper::class_attr('custom-select '.$class); |
|
| 733 | - |
|
| 734 | - // name |
|
| 735 | - if(!empty($args['name'])){ |
|
| 736 | - $output .= AUI_Component_Helper::name($args['name'],$args['multiple']); |
|
| 737 | - } |
|
| 738 | - |
|
| 739 | - // id |
|
| 740 | - if(!empty($args['id'])){ |
|
| 741 | - $output .= AUI_Component_Helper::id($args['id']); |
|
| 742 | - } |
|
| 743 | - |
|
| 744 | - // title |
|
| 745 | - if(!empty($args['title'])){ |
|
| 746 | - $output .= AUI_Component_Helper::title($args['title']); |
|
| 747 | - } |
|
| 748 | - |
|
| 749 | - // data-attributes |
|
| 750 | - $output .= AUI_Component_Helper::data_attributes($args); |
|
| 751 | - |
|
| 752 | - // aria-attributes |
|
| 753 | - $output .= AUI_Component_Helper::aria_attributes($args); |
|
| 754 | - |
|
| 755 | - // extra attributes |
|
| 756 | - if(!empty($args['extra_attributes'])){ |
|
| 757 | - $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 758 | - } |
|
| 759 | - |
|
| 760 | - // required |
|
| 761 | - if(!empty($args['required'])){ |
|
| 762 | - $output .= ' required '; |
|
| 763 | - } |
|
| 764 | - |
|
| 765 | - // multiple |
|
| 766 | - if(!empty($args['multiple'])){ |
|
| 767 | - $output .= ' multiple '; |
|
| 768 | - } |
|
| 769 | - |
|
| 770 | - // close opening tag |
|
| 771 | - $output .= ' >'; |
|
| 772 | - |
|
| 773 | - // placeholder |
|
| 774 | - if(isset($args['placeholder']) && '' != $args['placeholder'] && !$is_select2){ |
|
| 775 | - $output .= '<option value="" disabled selected hidden>'.esc_attr($args['placeholder']).'</option>'; |
|
| 776 | - }elseif($is_select2 && !empty($args['placeholder'])){ |
|
| 777 | - $output .= "<option></option>"; // select2 needs an empty select to fill the placeholder |
|
| 778 | - } |
|
| 779 | - |
|
| 780 | - // Options |
|
| 781 | - if(!empty($args['options'])){ |
|
| 782 | - |
|
| 783 | - if(!is_array($args['options'])){ |
|
| 784 | - $output .= $args['options']; // not the preferred way but an option |
|
| 785 | - }else{ |
|
| 786 | - foreach($args['options'] as $val => $name){ |
|
| 787 | - $selected = ''; |
|
| 788 | - if(is_array($name)){ |
|
| 789 | - if (isset($name['optgroup']) && ($name['optgroup'] == 'start' || $name['optgroup'] == 'end')) { |
|
| 790 | - $option_label = isset($name['label']) ? $name['label'] : ''; |
|
| 791 | - |
|
| 792 | - $output .= $name['optgroup'] == 'start' ? '<optgroup label="' . esc_attr($option_label) . '">' : '</optgroup>'; |
|
| 793 | - } else { |
|
| 794 | - $option_label = isset($name['label']) ? $name['label'] : ''; |
|
| 795 | - $option_value = isset($name['value']) ? $name['value'] : ''; |
|
| 796 | - if(!empty($args['multiple']) && !empty($args['value']) && is_array($args['value']) ){ |
|
| 797 | - $selected = in_array($option_value, stripslashes_deep($args['value'])) ? "selected" : ""; |
|
| 798 | - } elseif(!empty($args['value'])) { |
|
| 799 | - $selected = selected($option_value,stripslashes_deep($args['value']), false); |
|
| 800 | - } |
|
| 801 | - |
|
| 802 | - $output .= '<option value="' . esc_attr($option_value) . '" ' . $selected . '>' . $option_label . '</option>'; |
|
| 803 | - } |
|
| 804 | - }else{ |
|
| 805 | - if(!empty($args['value'])){ |
|
| 806 | - if(is_array($args['value'])){ |
|
| 807 | - $selected = in_array($val,$args['value']) ? 'selected="selected"' : ''; |
|
| 808 | - } elseif(!empty($args['value'])) { |
|
| 809 | - $selected = selected( $args['value'], $val, false); |
|
| 810 | - } |
|
| 811 | - } |
|
| 812 | - $output .= '<option value="'.esc_attr($val).'" '.$selected.'>'.esc_attr($name).'</option>'; |
|
| 813 | - } |
|
| 814 | - } |
|
| 815 | - } |
|
| 816 | - |
|
| 817 | - } |
|
| 818 | - |
|
| 819 | - // closing tag |
|
| 820 | - $output .= '</select>'; |
|
| 821 | - |
|
| 822 | - if(!empty($args['label']) && $label_after){ |
|
| 823 | - $label_args = array( |
|
| 824 | - 'title'=> $args['label'], |
|
| 825 | - 'for'=> $args['id'], |
|
| 826 | - 'class' => $args['label_class']." ", |
|
| 827 | - 'label_type' => $args['label_type'] |
|
| 828 | - ); |
|
| 829 | - $output .= self::label($label_args); |
|
| 830 | - } |
|
| 831 | - |
|
| 832 | - // help text |
|
| 833 | - if(!empty($args['help_text'])){ |
|
| 834 | - $output .= AUI_Component_Helper::help_text($args['help_text']); |
|
| 835 | - } |
|
| 836 | - |
|
| 837 | - // maybe horizontal label |
|
| 838 | - if($args['label_type']=='horizontal'){ |
|
| 839 | - $output .= '</div>'; |
|
| 840 | - } |
|
| 841 | - |
|
| 842 | - |
|
| 843 | - // wrap |
|
| 844 | - if(!$args['no_wrap']){ |
|
| 845 | - $wrap_class = $args['label_type']=='horizontal' ? 'form-group row' : 'form-group'; |
|
| 846 | - $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 847 | - $output = self::wrap(array( |
|
| 848 | - 'content' => $output, |
|
| 849 | - 'class' => $wrap_class, |
|
| 850 | - 'element_require' => $args['element_require'], |
|
| 851 | - 'argument_id' => $args['id'], |
|
| 852 | - 'wrap_attributes' => $args['wrap_attributes'], |
|
| 853 | - )); |
|
| 854 | - } |
|
| 855 | - |
|
| 856 | - |
|
| 857 | - return $output; |
|
| 858 | - } |
|
| 859 | - |
|
| 860 | - /** |
|
| 861 | - * Build the component. |
|
| 862 | - * |
|
| 863 | - * @param array $args |
|
| 864 | - * |
|
| 865 | - * @return string The rendered component. |
|
| 866 | - */ |
|
| 867 | - public static function radio($args = array()){ |
|
| 868 | - $defaults = array( |
|
| 869 | - 'class' => '', |
|
| 870 | - 'wrap_class' => '', |
|
| 871 | - 'id' => '', |
|
| 872 | - 'title' => '', |
|
| 873 | - 'horizontal' => false, // sets the lable horizontal |
|
| 874 | - 'value' => '', |
|
| 875 | - 'label' => '', |
|
| 876 | - 'label_class'=> '', |
|
| 877 | - 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 878 | - 'help_text' => '', |
|
| 879 | - 'inline' => true, |
|
| 880 | - 'required' => false, |
|
| 881 | - 'options' => array(), |
|
| 882 | - 'icon' => '', |
|
| 883 | - 'no_wrap' => false, |
|
| 884 | - 'element_require' => '', // [%element_id%] == "1" |
|
| 885 | - 'extra_attributes' => array(), // an array of extra attributes |
|
| 886 | - 'wrap_attributes' => array() |
|
| 887 | - ); |
|
| 888 | - |
|
| 889 | - /** |
|
| 890 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 891 | - */ |
|
| 892 | - $args = wp_parse_args( $args, $defaults ); |
|
| 893 | - |
|
| 894 | - // for now lets use horizontal for floating |
|
| 895 | - if( $args['label_type'] == 'floating' ){$args['label_type'] = 'horizontal';} |
|
| 896 | - |
|
| 897 | - $label_args = array( |
|
| 898 | - 'title'=> $args['label'], |
|
| 899 | - 'class' => $args['label_class']." pt-0 ", |
|
| 900 | - 'label_type' => $args['label_type'] |
|
| 901 | - ); |
|
| 902 | - |
|
| 903 | - $output = ''; |
|
| 904 | - |
|
| 905 | - |
|
| 906 | - |
|
| 907 | - // label before |
|
| 908 | - if(!empty($args['label'])){ |
|
| 909 | - $output .= self::label( $label_args, 'radio' ); |
|
| 910 | - } |
|
| 911 | - |
|
| 912 | - // maybe horizontal label |
|
| 913 | - if($args['label_type']=='horizontal'){ |
|
| 914 | - $output .= '<div class="col-sm-10">'; |
|
| 915 | - } |
|
| 916 | - |
|
| 917 | - if(!empty($args['options'])){ |
|
| 918 | - $count = 0; |
|
| 919 | - foreach($args['options'] as $value => $label){ |
|
| 920 | - $option_args = $args; |
|
| 921 | - $option_args['value'] = $value; |
|
| 922 | - $option_args['label'] = $label; |
|
| 923 | - $option_args['checked'] = $value == $args['value'] ? true : false; |
|
| 924 | - $output .= self::radio_option($option_args,$count); |
|
| 925 | - $count++; |
|
| 926 | - } |
|
| 927 | - } |
|
| 928 | - |
|
| 929 | - // help text |
|
| 930 | - $help_text = ! empty( $args['help_text'] ) ? AUI_Component_Helper::help_text( $args['help_text'] ) : ''; |
|
| 931 | - $output .= $help_text; |
|
| 932 | - |
|
| 933 | - // maybe horizontal label |
|
| 934 | - if($args['label_type']=='horizontal'){ |
|
| 935 | - $output .= '</div>'; |
|
| 936 | - } |
|
| 937 | - |
|
| 938 | - // wrap |
|
| 939 | - $wrap_class = $args['label_type']=='horizontal' ? 'form-group row' : 'form-group'; |
|
| 940 | - $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 941 | - $output = self::wrap(array( |
|
| 942 | - 'content' => $output, |
|
| 943 | - 'class' => $wrap_class, |
|
| 944 | - 'element_require' => $args['element_require'], |
|
| 945 | - 'argument_id' => $args['id'], |
|
| 946 | - 'wrap_attributes' => $args['wrap_attributes'], |
|
| 947 | - )); |
|
| 948 | - |
|
| 949 | - |
|
| 950 | - return $output; |
|
| 951 | - } |
|
| 952 | - |
|
| 953 | - /** |
|
| 954 | - * Build the component. |
|
| 955 | - * |
|
| 956 | - * @param array $args |
|
| 957 | - * |
|
| 958 | - * @return string The rendered component. |
|
| 959 | - */ |
|
| 960 | - public static function radio_option($args = array(),$count = ''){ |
|
| 961 | - $defaults = array( |
|
| 962 | - 'class' => '', |
|
| 963 | - 'id' => '', |
|
| 964 | - 'title' => '', |
|
| 965 | - 'value' => '', |
|
| 966 | - 'required' => false, |
|
| 967 | - 'inline' => true, |
|
| 968 | - 'label' => '', |
|
| 969 | - 'options' => array(), |
|
| 970 | - 'icon' => '', |
|
| 971 | - 'no_wrap' => false, |
|
| 972 | - 'extra_attributes' => array() // an array of extra attributes |
|
| 973 | - ); |
|
| 974 | - |
|
| 975 | - /** |
|
| 976 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 977 | - */ |
|
| 978 | - $args = wp_parse_args( $args, $defaults ); |
|
| 979 | - |
|
| 980 | - $output = ''; |
|
| 981 | - |
|
| 982 | - // open/type |
|
| 983 | - $output .= '<input type="radio"'; |
|
| 984 | - |
|
| 985 | - // class |
|
| 986 | - $output .= ' class="form-check-input" '; |
|
| 987 | - |
|
| 988 | - // name |
|
| 989 | - if(!empty($args['name'])){ |
|
| 990 | - $output .= AUI_Component_Helper::name($args['name']); |
|
| 991 | - } |
|
| 992 | - |
|
| 993 | - // id |
|
| 994 | - if(!empty($args['id'])){ |
|
| 995 | - $output .= AUI_Component_Helper::id($args['id'].$count); |
|
| 996 | - } |
|
| 997 | - |
|
| 998 | - // title |
|
| 999 | - if(!empty($args['title'])){ |
|
| 1000 | - $output .= AUI_Component_Helper::title($args['title']); |
|
| 1001 | - } |
|
| 1002 | - |
|
| 1003 | - // value |
|
| 1004 | - if(isset($args['value'])){ |
|
| 1005 | - $output .= AUI_Component_Helper::value($args['value']); |
|
| 1006 | - } |
|
| 1007 | - |
|
| 1008 | - // checked, for radio and checkboxes |
|
| 1009 | - if( $args['checked'] ){ |
|
| 1010 | - $output .= ' checked '; |
|
| 1011 | - } |
|
| 1012 | - |
|
| 1013 | - // data-attributes |
|
| 1014 | - $output .= AUI_Component_Helper::data_attributes($args); |
|
| 1015 | - |
|
| 1016 | - // aria-attributes |
|
| 1017 | - $output .= AUI_Component_Helper::aria_attributes($args); |
|
| 1018 | - |
|
| 1019 | - // extra attributes |
|
| 1020 | - if(!empty($args['extra_attributes'])){ |
|
| 1021 | - $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 1022 | - } |
|
| 1023 | - |
|
| 1024 | - // required |
|
| 1025 | - if(!empty($args['required'])){ |
|
| 1026 | - $output .= ' required '; |
|
| 1027 | - } |
|
| 1028 | - |
|
| 1029 | - // close opening tag |
|
| 1030 | - $output .= ' >'; |
|
| 1031 | - |
|
| 1032 | - // label |
|
| 1033 | - if(!empty($args['label']) && is_array($args['label'])){ |
|
| 1034 | - }elseif(!empty($args['label'])){ |
|
| 1035 | - $output .= self::label(array('title'=>$args['label'],'for'=>$args['id'].$count,'class'=>'form-check-label'),'radio'); |
|
| 1036 | - } |
|
| 1037 | - |
|
| 1038 | - // wrap |
|
| 1039 | - if ( ! $args['no_wrap'] ) { |
|
| 1040 | - $wrap_class = $args['inline'] ? 'form-check form-check-inline' : 'form-check'; |
|
| 1041 | - |
|
| 1042 | - // Unique wrap class |
|
| 1043 | - $uniq_class = 'fwrap'; |
|
| 1044 | - if ( ! empty( $args['name'] ) ) { |
|
| 1045 | - $uniq_class .= '-' . $args['name']; |
|
| 1046 | - } else if ( ! empty( $args['id'] ) ) { |
|
| 1047 | - $uniq_class .= '-' . $args['id']; |
|
| 1048 | - } |
|
| 1049 | - |
|
| 1050 | - if ( isset( $args['value'] ) || $args['value'] !== "" ) { |
|
| 1051 | - $uniq_class .= '-' . $args['value']; |
|
| 1052 | - } else { |
|
| 1053 | - $uniq_class .= '-' . $count; |
|
| 1054 | - } |
|
| 1055 | - $wrap_class .= ' ' . sanitize_html_class( $uniq_class ); |
|
| 1056 | - |
|
| 1057 | - $output = self::wrap(array( |
|
| 1058 | - 'content' => $output, |
|
| 1059 | - 'class' => $wrap_class |
|
| 1060 | - )); |
|
| 1061 | - } |
|
| 1062 | - |
|
| 1063 | - return $output; |
|
| 1064 | - } |
|
| 214 | + } |
|
| 215 | + |
|
| 216 | + // input group wraps |
|
| 217 | + if($args['input_group_left'] || $args['input_group_right']){ |
|
| 218 | + $w100 = strpos($args['class'], 'w-100') !== false ? ' w-100' : ''; |
|
| 219 | + if($args['input_group_left']){ |
|
| 220 | + $output = self::wrap( array( |
|
| 221 | + 'content' => $output, |
|
| 222 | + 'class' => $args['input_group_left_inside'] ? 'input-group-inside position-relative'.$w100 : 'input-group', |
|
| 223 | + 'input_group_left' => $args['input_group_left'], |
|
| 224 | + 'input_group_left_inside' => $args['input_group_left_inside'] |
|
| 225 | + ) ); |
|
| 226 | + } |
|
| 227 | + if($args['input_group_right']){ |
|
| 228 | + $output = self::wrap( array( |
|
| 229 | + 'content' => $output, |
|
| 230 | + 'class' => $args['input_group_right_inside'] ? 'input-group-inside position-relative'.$w100 : 'input-group', |
|
| 231 | + 'input_group_right' => $args['input_group_right'], |
|
| 232 | + 'input_group_right_inside' => $args['input_group_right_inside'] |
|
| 233 | + ) ); |
|
| 234 | + } |
|
| 235 | + |
|
| 236 | + } |
|
| 237 | + |
|
| 238 | + if(!$label_after){ |
|
| 239 | + $output .= $help_text; |
|
| 240 | + } |
|
| 241 | + |
|
| 242 | + |
|
| 243 | + if($args['label_type']=='horizontal' && $type != 'checkbox'){ |
|
| 244 | + $output = self::wrap( array( |
|
| 245 | + 'content' => $output, |
|
| 246 | + 'class' => 'col-sm-10', |
|
| 247 | + ) ); |
|
| 248 | + } |
|
| 249 | + |
|
| 250 | + if(!$label_after){ |
|
| 251 | + $output = $label . $output; |
|
| 252 | + } |
|
| 253 | + |
|
| 254 | + // wrap |
|
| 255 | + if ( ! $args['no_wrap'] ) { |
|
| 256 | + $form_group_class = $args['label_type']=='floating' && $type != 'checkbox' ? 'form-label-group' : 'form-group'; |
|
| 257 | + $wrap_class = $args['label_type']=='horizontal' ? $form_group_class . ' row' : $form_group_class; |
|
| 258 | + $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 259 | + $output = self::wrap(array( |
|
| 260 | + 'content' => $output, |
|
| 261 | + 'class' => $wrap_class, |
|
| 262 | + 'element_require' => $args['element_require'], |
|
| 263 | + 'argument_id' => $args['id'], |
|
| 264 | + 'wrap_attributes' => $args['wrap_attributes'], |
|
| 265 | + )); |
|
| 266 | + } |
|
| 267 | + } |
|
| 268 | + |
|
| 269 | + return $output; |
|
| 270 | + } |
|
| 271 | + |
|
| 272 | + /** |
|
| 273 | + * Build the component. |
|
| 274 | + * |
|
| 275 | + * @param array $args |
|
| 276 | + * |
|
| 277 | + * @return string The rendered component. |
|
| 278 | + */ |
|
| 279 | + public static function textarea($args = array()){ |
|
| 280 | + $defaults = array( |
|
| 281 | + 'name' => '', |
|
| 282 | + 'class' => '', |
|
| 283 | + 'wrap_class' => '', |
|
| 284 | + 'id' => '', |
|
| 285 | + 'placeholder'=> '', |
|
| 286 | + 'title' => '', |
|
| 287 | + 'value' => '', |
|
| 288 | + 'required' => false, |
|
| 289 | + 'label' => '', |
|
| 290 | + 'label_after'=> false, |
|
| 291 | + 'label_class' => '', |
|
| 292 | + 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 293 | + 'help_text' => '', |
|
| 294 | + 'validation_text' => '', |
|
| 295 | + 'validation_pattern' => '', |
|
| 296 | + 'no_wrap' => false, |
|
| 297 | + 'rows' => '', |
|
| 298 | + 'wysiwyg' => false, |
|
| 299 | + 'allow_tags' => false, // Allow HTML tags |
|
| 300 | + 'element_require' => '', // [%element_id%] == "1" |
|
| 301 | + 'extra_attributes' => array(), // an array of extra attributes |
|
| 302 | + 'wrap_attributes' => array(), |
|
| 303 | + ); |
|
| 304 | + |
|
| 305 | + /** |
|
| 306 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 307 | + */ |
|
| 308 | + $args = wp_parse_args( $args, $defaults ); |
|
| 309 | + $output = ''; |
|
| 310 | + |
|
| 311 | + // hidden label option needs to be empty |
|
| 312 | + $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 313 | + |
|
| 314 | + // floating labels don't work with wysiwyg so set it as top |
|
| 315 | + if($args['label_type'] == 'floating' && !empty($args['wysiwyg'])){ |
|
| 316 | + $args['label_type'] = 'top'; |
|
| 317 | + } |
|
| 318 | + |
|
| 319 | + $label_after = $args['label_after']; |
|
| 320 | + |
|
| 321 | + // floating labels need label after |
|
| 322 | + if( $args['label_type'] == 'floating' && empty($args['wysiwyg']) ){ |
|
| 323 | + $label_after = true; |
|
| 324 | + $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 325 | + } |
|
| 326 | + |
|
| 327 | + // label |
|
| 328 | + if(!empty($args['label']) && is_array($args['label'])){ |
|
| 329 | + }elseif(!empty($args['label']) && !$label_after){ |
|
| 330 | + $label_args = array( |
|
| 331 | + 'title'=> $args['label'], |
|
| 332 | + 'for'=> $args['id'], |
|
| 333 | + 'class' => $args['label_class']." ", |
|
| 334 | + 'label_type' => $args['label_type'] |
|
| 335 | + ); |
|
| 336 | + $output .= self::label( $label_args ); |
|
| 337 | + } |
|
| 338 | + |
|
| 339 | + // maybe horizontal label |
|
| 340 | + if($args['label_type']=='horizontal'){ |
|
| 341 | + $output .= '<div class="col-sm-10">'; |
|
| 342 | + } |
|
| 343 | + |
|
| 344 | + if(!empty($args['wysiwyg'])){ |
|
| 345 | + ob_start(); |
|
| 346 | + $content = $args['value']; |
|
| 347 | + $editor_id = !empty($args['id']) ? sanitize_html_class($args['id']) : 'wp_editor'; |
|
| 348 | + $settings = array( |
|
| 349 | + 'textarea_rows' => !empty(absint($args['rows'])) ? absint($args['rows']) : 4, |
|
| 350 | + 'quicktags' => false, |
|
| 351 | + 'media_buttons' => false, |
|
| 352 | + 'editor_class' => 'form-control', |
|
| 353 | + 'textarea_name' => !empty($args['name']) ? sanitize_html_class($args['name']) : sanitize_html_class($args['id']), |
|
| 354 | + 'teeny' => true, |
|
| 355 | + ); |
|
| 356 | + |
|
| 357 | + // maybe set settings if array |
|
| 358 | + if(is_array($args['wysiwyg'])){ |
|
| 359 | + $settings = wp_parse_args( $args['wysiwyg'], $settings ); |
|
| 360 | + } |
|
| 361 | + |
|
| 362 | + wp_editor( $content, $editor_id, $settings ); |
|
| 363 | + $output .= ob_get_clean(); |
|
| 364 | + }else{ |
|
| 365 | + |
|
| 366 | + // open |
|
| 367 | + $output .= '<textarea '; |
|
| 368 | + |
|
| 369 | + // name |
|
| 370 | + if(!empty($args['name'])){ |
|
| 371 | + $output .= ' name="'.esc_attr($args['name']).'" '; |
|
| 372 | + } |
|
| 373 | + |
|
| 374 | + // id |
|
| 375 | + if(!empty($args['id'])){ |
|
| 376 | + $output .= ' id="'.sanitize_html_class($args['id']).'" '; |
|
| 377 | + } |
|
| 378 | + |
|
| 379 | + // placeholder |
|
| 380 | + if(isset($args['placeholder']) && '' != $args['placeholder']){ |
|
| 381 | + $output .= ' placeholder="'.esc_attr($args['placeholder']).'" '; |
|
| 382 | + } |
|
| 383 | + |
|
| 384 | + // title |
|
| 385 | + if(!empty($args['title'])){ |
|
| 386 | + $output .= ' title="'.esc_attr($args['title']).'" '; |
|
| 387 | + } |
|
| 388 | + |
|
| 389 | + // validation text |
|
| 390 | + if(!empty($args['validation_text'])){ |
|
| 391 | + $output .= ' oninvalid="setCustomValidity(\''.esc_attr($args['validation_text']).'\')" '; |
|
| 392 | + $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" '; |
|
| 393 | + } |
|
| 394 | + |
|
| 395 | + // validation_pattern |
|
| 396 | + if(!empty($args['validation_pattern'])){ |
|
| 397 | + $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" '; |
|
| 398 | + } |
|
| 399 | + |
|
| 400 | + // required |
|
| 401 | + if(!empty($args['required'])){ |
|
| 402 | + $output .= ' required '; |
|
| 403 | + } |
|
| 404 | + |
|
| 405 | + // rows |
|
| 406 | + if(!empty($args['rows'])){ |
|
| 407 | + $output .= ' rows="'.absint($args['rows']).'" '; |
|
| 408 | + } |
|
| 409 | + |
|
| 410 | + |
|
| 411 | + // class |
|
| 412 | + $class = !empty($args['class']) ? $args['class'] : ''; |
|
| 413 | + $output .= ' class="form-control '.$class.'" '; |
|
| 414 | + |
|
| 415 | + // extra attributes |
|
| 416 | + if(!empty($args['extra_attributes'])){ |
|
| 417 | + $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 418 | + } |
|
| 419 | + |
|
| 420 | + // close tag |
|
| 421 | + $output .= ' >'; |
|
| 422 | + |
|
| 423 | + // value |
|
| 424 | + if ( ! empty( $args['value'] ) ) { |
|
| 425 | + if ( ! empty( $args['allow_tags'] ) ) { |
|
| 426 | + $output .= AUI_Component_Helper::sanitize_html_field( $args['value'], $args ); // Sanitize HTML. |
|
| 427 | + } else { |
|
| 428 | + $output .= sanitize_textarea_field( $args['value'] ); |
|
| 429 | + } |
|
| 430 | + } |
|
| 431 | + |
|
| 432 | + // closing tag |
|
| 433 | + $output .= '</textarea>'; |
|
| 434 | + |
|
| 435 | + } |
|
| 436 | + |
|
| 437 | + if(!empty($args['label']) && $label_after){ |
|
| 438 | + $label_args = array( |
|
| 439 | + 'title'=> $args['label'], |
|
| 440 | + 'for'=> $args['id'], |
|
| 441 | + 'class' => $args['label_class']." ", |
|
| 442 | + 'label_type' => $args['label_type'] |
|
| 443 | + ); |
|
| 444 | + $output .= self::label( $label_args ); |
|
| 445 | + } |
|
| 446 | + |
|
| 447 | + // help text |
|
| 448 | + if(!empty($args['help_text'])){ |
|
| 449 | + $output .= AUI_Component_Helper::help_text($args['help_text']); |
|
| 450 | + } |
|
| 451 | + |
|
| 452 | + // maybe horizontal label |
|
| 453 | + if($args['label_type']=='horizontal'){ |
|
| 454 | + $output .= '</div>'; |
|
| 455 | + } |
|
| 456 | + |
|
| 457 | + |
|
| 458 | + // wrap |
|
| 459 | + if(!$args['no_wrap']){ |
|
| 460 | + $form_group_class = $args['label_type']=='floating' ? 'form-label-group' : 'form-group'; |
|
| 461 | + $wrap_class = $args['label_type']=='horizontal' ? $form_group_class . ' row' : $form_group_class; |
|
| 462 | + $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 463 | + $output = self::wrap(array( |
|
| 464 | + 'content' => $output, |
|
| 465 | + 'class' => $wrap_class, |
|
| 466 | + 'element_require' => $args['element_require'], |
|
| 467 | + 'argument_id' => $args['id'], |
|
| 468 | + 'wrap_attributes' => $args['wrap_attributes'], |
|
| 469 | + )); |
|
| 470 | + } |
|
| 471 | + |
|
| 472 | + |
|
| 473 | + return $output; |
|
| 474 | + } |
|
| 475 | + |
|
| 476 | + public static function label($args = array(), $type = ''){ |
|
| 477 | + //<label for="exampleInputEmail1">Email address</label> |
|
| 478 | + $defaults = array( |
|
| 479 | + 'title' => 'div', |
|
| 480 | + 'for' => '', |
|
| 481 | + 'class' => '', |
|
| 482 | + 'label_type' => '', // empty = hidden, top, horizontal |
|
| 483 | + ); |
|
| 484 | + |
|
| 485 | + /** |
|
| 486 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 487 | + */ |
|
| 488 | + $args = wp_parse_args( $args, $defaults ); |
|
| 489 | + $output = ''; |
|
| 490 | + |
|
| 491 | + if($args['title']){ |
|
| 492 | + |
|
| 493 | + // maybe hide labels //@todo set a global option for visibility class |
|
| 494 | + if($type == 'file' || $type == 'checkbox' || $type == 'radio' || !empty($args['label_type']) ){ |
|
| 495 | + $class = $args['class']; |
|
| 496 | + }else{ |
|
| 497 | + $class = 'sr-only '.$args['class']; |
|
| 498 | + } |
|
| 499 | + |
|
| 500 | + // maybe horizontal |
|
| 501 | + if($args['label_type']=='horizontal' && $type != 'checkbox'){ |
|
| 502 | + $class .= ' col-sm-2 col-form-label'; |
|
| 503 | + } |
|
| 504 | + |
|
| 505 | + // open |
|
| 506 | + $output .= '<label '; |
|
| 507 | + |
|
| 508 | + // for |
|
| 509 | + if(!empty($args['for'])){ |
|
| 510 | + $output .= ' for="'.esc_attr($args['for']).'" '; |
|
| 511 | + } |
|
| 512 | + |
|
| 513 | + // class |
|
| 514 | + $class = $class ? AUI_Component_Helper::esc_classes( $class ) : ''; |
|
| 515 | + $output .= ' class="'.$class.'" '; |
|
| 516 | + |
|
| 517 | + // close |
|
| 518 | + $output .= '>'; |
|
| 519 | + |
|
| 520 | + |
|
| 521 | + // title, don't escape fully as can contain html |
|
| 522 | + if(!empty($args['title'])){ |
|
| 523 | + $output .= wp_kses_post($args['title']); |
|
| 524 | + } |
|
| 525 | + |
|
| 526 | + // close wrap |
|
| 527 | + $output .= '</label>'; |
|
| 528 | + |
|
| 529 | + |
|
| 530 | + } |
|
| 531 | + |
|
| 532 | + |
|
| 533 | + return $output; |
|
| 534 | + } |
|
| 535 | + |
|
| 536 | + /** |
|
| 537 | + * Wrap some content in a HTML wrapper. |
|
| 538 | + * |
|
| 539 | + * @param array $args |
|
| 540 | + * |
|
| 541 | + * @return string |
|
| 542 | + */ |
|
| 543 | + public static function wrap($args = array()){ |
|
| 544 | + $defaults = array( |
|
| 545 | + 'type' => 'div', |
|
| 546 | + 'class' => 'form-group', |
|
| 547 | + 'content' => '', |
|
| 548 | + 'input_group_left' => '', |
|
| 549 | + 'input_group_right' => '', |
|
| 550 | + 'input_group_left_inside' => false, |
|
| 551 | + 'input_group_right_inside' => false, |
|
| 552 | + 'element_require' => '', |
|
| 553 | + 'argument_id' => '', |
|
| 554 | + 'wrap_attributes' => array() |
|
| 555 | + ); |
|
| 556 | + |
|
| 557 | + /** |
|
| 558 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 559 | + */ |
|
| 560 | + $args = wp_parse_args( $args, $defaults ); |
|
| 561 | + $output = ''; |
|
| 562 | + if($args['type']){ |
|
| 563 | + |
|
| 564 | + // open |
|
| 565 | + $output .= '<'.sanitize_html_class($args['type']); |
|
| 566 | + |
|
| 567 | + // element require |
|
| 568 | + if(!empty($args['element_require'])){ |
|
| 569 | + $output .= AUI_Component_Helper::element_require($args['element_require']); |
|
| 570 | + $args['class'] .= " aui-conditional-field"; |
|
| 571 | + } |
|
| 572 | + |
|
| 573 | + // argument_id |
|
| 574 | + if( !empty($args['argument_id']) ){ |
|
| 575 | + $output .= ' data-argument="'.esc_attr($args['argument_id']).'"'; |
|
| 576 | + } |
|
| 577 | + |
|
| 578 | + // class |
|
| 579 | + $class = !empty($args['class']) ? AUI_Component_Helper::esc_classes( $args['class'] ) : ''; |
|
| 580 | + $output .= ' class="'.$class.'" '; |
|
| 581 | + |
|
| 582 | + // Attributes |
|
| 583 | + if ( ! empty( $args['wrap_attributes'] ) ) { |
|
| 584 | + $output .= AUI_Component_Helper::extra_attributes( $args['wrap_attributes'] ); |
|
| 585 | + } |
|
| 586 | + |
|
| 587 | + // close wrap |
|
| 588 | + $output .= ' >'; |
|
| 589 | + |
|
| 590 | + |
|
| 591 | + // Input group left |
|
| 592 | + if(!empty($args['input_group_left'])){ |
|
| 593 | + $position_class = !empty($args['input_group_left_inside']) ? 'position-absolute h-100' : ''; |
|
| 594 | + $input_group_left = strpos($args['input_group_left'], '<') !== false ? $args['input_group_left'] : '<span class="input-group-text">'.$args['input_group_left'].'</span>'; |
|
| 595 | + $output .= '<div class="input-group-prepend '.$position_class.'">'.$input_group_left.'</div>'; |
|
| 596 | + } |
|
| 597 | + |
|
| 598 | + // content |
|
| 599 | + $output .= $args['content']; |
|
| 600 | + |
|
| 601 | + // Input group right |
|
| 602 | + if(!empty($args['input_group_right'])){ |
|
| 603 | + $position_class = !empty($args['input_group_left_inside']) ? 'position-absolute h-100' : ''; |
|
| 604 | + $input_group_right = strpos($args['input_group_right'], '<') !== false ? $args['input_group_right'] : '<span class="input-group-text">'.$args['input_group_right'].'</span>'; |
|
| 605 | + $output .= '<div class="input-group-append '.$position_class.'">'.$input_group_right.'</div>'; |
|
| 606 | + } |
|
| 607 | + |
|
| 608 | + |
|
| 609 | + // close wrap |
|
| 610 | + $output .= '</'.sanitize_html_class($args['type']).'>'; |
|
| 611 | + |
|
| 612 | + |
|
| 613 | + }else{ |
|
| 614 | + $output = $args['content']; |
|
| 615 | + } |
|
| 616 | + |
|
| 617 | + return $output; |
|
| 618 | + } |
|
| 619 | + |
|
| 620 | + /** |
|
| 621 | + * Build the component. |
|
| 622 | + * |
|
| 623 | + * @param array $args |
|
| 624 | + * |
|
| 625 | + * @return string The rendered component. |
|
| 626 | + */ |
|
| 627 | + public static function select($args = array()){ |
|
| 628 | + $defaults = array( |
|
| 629 | + 'class' => '', |
|
| 630 | + 'wrap_class' => '', |
|
| 631 | + 'id' => '', |
|
| 632 | + 'title' => '', |
|
| 633 | + 'value' => '', // can be an array or a string |
|
| 634 | + 'required' => false, |
|
| 635 | + 'label' => '', |
|
| 636 | + 'label_after'=> false, |
|
| 637 | + 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 638 | + 'label_class' => '', |
|
| 639 | + 'help_text' => '', |
|
| 640 | + 'placeholder'=> '', |
|
| 641 | + 'options' => array(), // array or string |
|
| 642 | + 'icon' => '', |
|
| 643 | + 'multiple' => false, |
|
| 644 | + 'select2' => false, |
|
| 645 | + 'no_wrap' => false, |
|
| 646 | + 'element_require' => '', // [%element_id%] == "1" |
|
| 647 | + 'extra_attributes' => array(), // an array of extra attributes |
|
| 648 | + 'wrap_attributes' => array(), |
|
| 649 | + ); |
|
| 650 | + |
|
| 651 | + /** |
|
| 652 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 653 | + */ |
|
| 654 | + $args = wp_parse_args( $args, $defaults ); |
|
| 655 | + $output = ''; |
|
| 656 | + |
|
| 657 | + // for now lets hide floating labels |
|
| 658 | + if( $args['label_type'] == 'floating' ){$args['label_type'] = 'hidden';} |
|
| 659 | + |
|
| 660 | + // hidden label option needs to be empty |
|
| 661 | + $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type']; |
|
| 662 | + |
|
| 663 | + |
|
| 664 | + $label_after = $args['label_after']; |
|
| 665 | + |
|
| 666 | + // floating labels need label after |
|
| 667 | + if( $args['label_type'] == 'floating' ){ |
|
| 668 | + $label_after = true; |
|
| 669 | + $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works. |
|
| 670 | + } |
|
| 671 | + |
|
| 672 | + // Maybe setup select2 |
|
| 673 | + $is_select2 = false; |
|
| 674 | + if(!empty($args['select2'])){ |
|
| 675 | + $args['class'] .= ' aui-select2'; |
|
| 676 | + $is_select2 = true; |
|
| 677 | + }elseif( strpos($args['class'], 'aui-select2') !== false){ |
|
| 678 | + $is_select2 = true; |
|
| 679 | + } |
|
| 680 | + |
|
| 681 | + // select2 tags |
|
| 682 | + if( !empty($args['select2']) && $args['select2'] === 'tags'){ // triple equals needed here for some reason |
|
| 683 | + $args['data-tags'] = 'true'; |
|
| 684 | + $args['data-token-separators'] = "[',']"; |
|
| 685 | + $args['multiple'] = true; |
|
| 686 | + } |
|
| 687 | + |
|
| 688 | + // select2 placeholder |
|
| 689 | + if($is_select2 && isset($args['placeholder']) && '' != $args['placeholder'] && empty($args['data-placeholder'])){ |
|
| 690 | + $args['data-placeholder'] = esc_attr($args['placeholder']); |
|
| 691 | + $args['data-allow-clear'] = isset($args['data-allow-clear']) ? (bool) $args['data-allow-clear'] : true; |
|
| 692 | + } |
|
| 693 | + |
|
| 694 | + // label |
|
| 695 | + if(!empty($args['label']) && is_array($args['label'])){ |
|
| 696 | + }elseif(!empty($args['label']) && !$label_after){ |
|
| 697 | + $label_args = array( |
|
| 698 | + 'title'=> $args['label'], |
|
| 699 | + 'for'=> $args['id'], |
|
| 700 | + 'class' => $args['label_class']." ", |
|
| 701 | + 'label_type' => $args['label_type'] |
|
| 702 | + ); |
|
| 703 | + $output .= self::label($label_args); |
|
| 704 | + } |
|
| 705 | + |
|
| 706 | + // maybe horizontal label |
|
| 707 | + if($args['label_type']=='horizontal'){ |
|
| 708 | + $output .= '<div class="col-sm-10">'; |
|
| 709 | + } |
|
| 710 | + |
|
| 711 | + // Set hidden input to save empty value for multiselect. |
|
| 712 | + if ( ! empty( $args['multiple'] ) && ! empty( $args['name'] ) ) { |
|
| 713 | + $output .= '<input type="hidden" ' . AUI_Component_Helper::name( $args['name'] ) . ' value=""/>'; |
|
| 714 | + } |
|
| 715 | + |
|
| 716 | + // open/type |
|
| 717 | + $output .= '<select '; |
|
| 718 | + |
|
| 719 | + // style |
|
| 720 | + if($is_select2){ |
|
| 721 | + $output .= " style='width:100%;' "; |
|
| 722 | + } |
|
| 723 | + |
|
| 724 | + // element require |
|
| 725 | + if(!empty($args['element_require'])){ |
|
| 726 | + $output .= AUI_Component_Helper::element_require($args['element_require']); |
|
| 727 | + $args['class'] .= " aui-conditional-field"; |
|
| 728 | + } |
|
| 729 | + |
|
| 730 | + // class |
|
| 731 | + $class = !empty($args['class']) ? $args['class'] : ''; |
|
| 732 | + $output .= AUI_Component_Helper::class_attr('custom-select '.$class); |
|
| 733 | + |
|
| 734 | + // name |
|
| 735 | + if(!empty($args['name'])){ |
|
| 736 | + $output .= AUI_Component_Helper::name($args['name'],$args['multiple']); |
|
| 737 | + } |
|
| 738 | + |
|
| 739 | + // id |
|
| 740 | + if(!empty($args['id'])){ |
|
| 741 | + $output .= AUI_Component_Helper::id($args['id']); |
|
| 742 | + } |
|
| 743 | + |
|
| 744 | + // title |
|
| 745 | + if(!empty($args['title'])){ |
|
| 746 | + $output .= AUI_Component_Helper::title($args['title']); |
|
| 747 | + } |
|
| 748 | + |
|
| 749 | + // data-attributes |
|
| 750 | + $output .= AUI_Component_Helper::data_attributes($args); |
|
| 751 | + |
|
| 752 | + // aria-attributes |
|
| 753 | + $output .= AUI_Component_Helper::aria_attributes($args); |
|
| 754 | + |
|
| 755 | + // extra attributes |
|
| 756 | + if(!empty($args['extra_attributes'])){ |
|
| 757 | + $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 758 | + } |
|
| 759 | + |
|
| 760 | + // required |
|
| 761 | + if(!empty($args['required'])){ |
|
| 762 | + $output .= ' required '; |
|
| 763 | + } |
|
| 764 | + |
|
| 765 | + // multiple |
|
| 766 | + if(!empty($args['multiple'])){ |
|
| 767 | + $output .= ' multiple '; |
|
| 768 | + } |
|
| 769 | + |
|
| 770 | + // close opening tag |
|
| 771 | + $output .= ' >'; |
|
| 772 | + |
|
| 773 | + // placeholder |
|
| 774 | + if(isset($args['placeholder']) && '' != $args['placeholder'] && !$is_select2){ |
|
| 775 | + $output .= '<option value="" disabled selected hidden>'.esc_attr($args['placeholder']).'</option>'; |
|
| 776 | + }elseif($is_select2 && !empty($args['placeholder'])){ |
|
| 777 | + $output .= "<option></option>"; // select2 needs an empty select to fill the placeholder |
|
| 778 | + } |
|
| 779 | + |
|
| 780 | + // Options |
|
| 781 | + if(!empty($args['options'])){ |
|
| 782 | + |
|
| 783 | + if(!is_array($args['options'])){ |
|
| 784 | + $output .= $args['options']; // not the preferred way but an option |
|
| 785 | + }else{ |
|
| 786 | + foreach($args['options'] as $val => $name){ |
|
| 787 | + $selected = ''; |
|
| 788 | + if(is_array($name)){ |
|
| 789 | + if (isset($name['optgroup']) && ($name['optgroup'] == 'start' || $name['optgroup'] == 'end')) { |
|
| 790 | + $option_label = isset($name['label']) ? $name['label'] : ''; |
|
| 791 | + |
|
| 792 | + $output .= $name['optgroup'] == 'start' ? '<optgroup label="' . esc_attr($option_label) . '">' : '</optgroup>'; |
|
| 793 | + } else { |
|
| 794 | + $option_label = isset($name['label']) ? $name['label'] : ''; |
|
| 795 | + $option_value = isset($name['value']) ? $name['value'] : ''; |
|
| 796 | + if(!empty($args['multiple']) && !empty($args['value']) && is_array($args['value']) ){ |
|
| 797 | + $selected = in_array($option_value, stripslashes_deep($args['value'])) ? "selected" : ""; |
|
| 798 | + } elseif(!empty($args['value'])) { |
|
| 799 | + $selected = selected($option_value,stripslashes_deep($args['value']), false); |
|
| 800 | + } |
|
| 801 | + |
|
| 802 | + $output .= '<option value="' . esc_attr($option_value) . '" ' . $selected . '>' . $option_label . '</option>'; |
|
| 803 | + } |
|
| 804 | + }else{ |
|
| 805 | + if(!empty($args['value'])){ |
|
| 806 | + if(is_array($args['value'])){ |
|
| 807 | + $selected = in_array($val,$args['value']) ? 'selected="selected"' : ''; |
|
| 808 | + } elseif(!empty($args['value'])) { |
|
| 809 | + $selected = selected( $args['value'], $val, false); |
|
| 810 | + } |
|
| 811 | + } |
|
| 812 | + $output .= '<option value="'.esc_attr($val).'" '.$selected.'>'.esc_attr($name).'</option>'; |
|
| 813 | + } |
|
| 814 | + } |
|
| 815 | + } |
|
| 816 | + |
|
| 817 | + } |
|
| 818 | + |
|
| 819 | + // closing tag |
|
| 820 | + $output .= '</select>'; |
|
| 821 | + |
|
| 822 | + if(!empty($args['label']) && $label_after){ |
|
| 823 | + $label_args = array( |
|
| 824 | + 'title'=> $args['label'], |
|
| 825 | + 'for'=> $args['id'], |
|
| 826 | + 'class' => $args['label_class']." ", |
|
| 827 | + 'label_type' => $args['label_type'] |
|
| 828 | + ); |
|
| 829 | + $output .= self::label($label_args); |
|
| 830 | + } |
|
| 831 | + |
|
| 832 | + // help text |
|
| 833 | + if(!empty($args['help_text'])){ |
|
| 834 | + $output .= AUI_Component_Helper::help_text($args['help_text']); |
|
| 835 | + } |
|
| 836 | + |
|
| 837 | + // maybe horizontal label |
|
| 838 | + if($args['label_type']=='horizontal'){ |
|
| 839 | + $output .= '</div>'; |
|
| 840 | + } |
|
| 841 | + |
|
| 842 | + |
|
| 843 | + // wrap |
|
| 844 | + if(!$args['no_wrap']){ |
|
| 845 | + $wrap_class = $args['label_type']=='horizontal' ? 'form-group row' : 'form-group'; |
|
| 846 | + $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 847 | + $output = self::wrap(array( |
|
| 848 | + 'content' => $output, |
|
| 849 | + 'class' => $wrap_class, |
|
| 850 | + 'element_require' => $args['element_require'], |
|
| 851 | + 'argument_id' => $args['id'], |
|
| 852 | + 'wrap_attributes' => $args['wrap_attributes'], |
|
| 853 | + )); |
|
| 854 | + } |
|
| 855 | + |
|
| 856 | + |
|
| 857 | + return $output; |
|
| 858 | + } |
|
| 859 | + |
|
| 860 | + /** |
|
| 861 | + * Build the component. |
|
| 862 | + * |
|
| 863 | + * @param array $args |
|
| 864 | + * |
|
| 865 | + * @return string The rendered component. |
|
| 866 | + */ |
|
| 867 | + public static function radio($args = array()){ |
|
| 868 | + $defaults = array( |
|
| 869 | + 'class' => '', |
|
| 870 | + 'wrap_class' => '', |
|
| 871 | + 'id' => '', |
|
| 872 | + 'title' => '', |
|
| 873 | + 'horizontal' => false, // sets the lable horizontal |
|
| 874 | + 'value' => '', |
|
| 875 | + 'label' => '', |
|
| 876 | + 'label_class'=> '', |
|
| 877 | + 'label_type' => '', // sets the label type, default: hidden. Options: hidden, top, horizontal, floating |
|
| 878 | + 'help_text' => '', |
|
| 879 | + 'inline' => true, |
|
| 880 | + 'required' => false, |
|
| 881 | + 'options' => array(), |
|
| 882 | + 'icon' => '', |
|
| 883 | + 'no_wrap' => false, |
|
| 884 | + 'element_require' => '', // [%element_id%] == "1" |
|
| 885 | + 'extra_attributes' => array(), // an array of extra attributes |
|
| 886 | + 'wrap_attributes' => array() |
|
| 887 | + ); |
|
| 888 | + |
|
| 889 | + /** |
|
| 890 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 891 | + */ |
|
| 892 | + $args = wp_parse_args( $args, $defaults ); |
|
| 893 | + |
|
| 894 | + // for now lets use horizontal for floating |
|
| 895 | + if( $args['label_type'] == 'floating' ){$args['label_type'] = 'horizontal';} |
|
| 896 | + |
|
| 897 | + $label_args = array( |
|
| 898 | + 'title'=> $args['label'], |
|
| 899 | + 'class' => $args['label_class']." pt-0 ", |
|
| 900 | + 'label_type' => $args['label_type'] |
|
| 901 | + ); |
|
| 902 | + |
|
| 903 | + $output = ''; |
|
| 904 | + |
|
| 905 | + |
|
| 906 | + |
|
| 907 | + // label before |
|
| 908 | + if(!empty($args['label'])){ |
|
| 909 | + $output .= self::label( $label_args, 'radio' ); |
|
| 910 | + } |
|
| 911 | + |
|
| 912 | + // maybe horizontal label |
|
| 913 | + if($args['label_type']=='horizontal'){ |
|
| 914 | + $output .= '<div class="col-sm-10">'; |
|
| 915 | + } |
|
| 916 | + |
|
| 917 | + if(!empty($args['options'])){ |
|
| 918 | + $count = 0; |
|
| 919 | + foreach($args['options'] as $value => $label){ |
|
| 920 | + $option_args = $args; |
|
| 921 | + $option_args['value'] = $value; |
|
| 922 | + $option_args['label'] = $label; |
|
| 923 | + $option_args['checked'] = $value == $args['value'] ? true : false; |
|
| 924 | + $output .= self::radio_option($option_args,$count); |
|
| 925 | + $count++; |
|
| 926 | + } |
|
| 927 | + } |
|
| 928 | + |
|
| 929 | + // help text |
|
| 930 | + $help_text = ! empty( $args['help_text'] ) ? AUI_Component_Helper::help_text( $args['help_text'] ) : ''; |
|
| 931 | + $output .= $help_text; |
|
| 932 | + |
|
| 933 | + // maybe horizontal label |
|
| 934 | + if($args['label_type']=='horizontal'){ |
|
| 935 | + $output .= '</div>'; |
|
| 936 | + } |
|
| 937 | + |
|
| 938 | + // wrap |
|
| 939 | + $wrap_class = $args['label_type']=='horizontal' ? 'form-group row' : 'form-group'; |
|
| 940 | + $wrap_class = !empty($args['wrap_class']) ? $wrap_class." ".$args['wrap_class'] : $wrap_class; |
|
| 941 | + $output = self::wrap(array( |
|
| 942 | + 'content' => $output, |
|
| 943 | + 'class' => $wrap_class, |
|
| 944 | + 'element_require' => $args['element_require'], |
|
| 945 | + 'argument_id' => $args['id'], |
|
| 946 | + 'wrap_attributes' => $args['wrap_attributes'], |
|
| 947 | + )); |
|
| 948 | + |
|
| 949 | + |
|
| 950 | + return $output; |
|
| 951 | + } |
|
| 952 | + |
|
| 953 | + /** |
|
| 954 | + * Build the component. |
|
| 955 | + * |
|
| 956 | + * @param array $args |
|
| 957 | + * |
|
| 958 | + * @return string The rendered component. |
|
| 959 | + */ |
|
| 960 | + public static function radio_option($args = array(),$count = ''){ |
|
| 961 | + $defaults = array( |
|
| 962 | + 'class' => '', |
|
| 963 | + 'id' => '', |
|
| 964 | + 'title' => '', |
|
| 965 | + 'value' => '', |
|
| 966 | + 'required' => false, |
|
| 967 | + 'inline' => true, |
|
| 968 | + 'label' => '', |
|
| 969 | + 'options' => array(), |
|
| 970 | + 'icon' => '', |
|
| 971 | + 'no_wrap' => false, |
|
| 972 | + 'extra_attributes' => array() // an array of extra attributes |
|
| 973 | + ); |
|
| 974 | + |
|
| 975 | + /** |
|
| 976 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 977 | + */ |
|
| 978 | + $args = wp_parse_args( $args, $defaults ); |
|
| 979 | + |
|
| 980 | + $output = ''; |
|
| 981 | + |
|
| 982 | + // open/type |
|
| 983 | + $output .= '<input type="radio"'; |
|
| 984 | + |
|
| 985 | + // class |
|
| 986 | + $output .= ' class="form-check-input" '; |
|
| 987 | + |
|
| 988 | + // name |
|
| 989 | + if(!empty($args['name'])){ |
|
| 990 | + $output .= AUI_Component_Helper::name($args['name']); |
|
| 991 | + } |
|
| 992 | + |
|
| 993 | + // id |
|
| 994 | + if(!empty($args['id'])){ |
|
| 995 | + $output .= AUI_Component_Helper::id($args['id'].$count); |
|
| 996 | + } |
|
| 997 | + |
|
| 998 | + // title |
|
| 999 | + if(!empty($args['title'])){ |
|
| 1000 | + $output .= AUI_Component_Helper::title($args['title']); |
|
| 1001 | + } |
|
| 1002 | + |
|
| 1003 | + // value |
|
| 1004 | + if(isset($args['value'])){ |
|
| 1005 | + $output .= AUI_Component_Helper::value($args['value']); |
|
| 1006 | + } |
|
| 1007 | + |
|
| 1008 | + // checked, for radio and checkboxes |
|
| 1009 | + if( $args['checked'] ){ |
|
| 1010 | + $output .= ' checked '; |
|
| 1011 | + } |
|
| 1012 | + |
|
| 1013 | + // data-attributes |
|
| 1014 | + $output .= AUI_Component_Helper::data_attributes($args); |
|
| 1015 | + |
|
| 1016 | + // aria-attributes |
|
| 1017 | + $output .= AUI_Component_Helper::aria_attributes($args); |
|
| 1018 | + |
|
| 1019 | + // extra attributes |
|
| 1020 | + if(!empty($args['extra_attributes'])){ |
|
| 1021 | + $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']); |
|
| 1022 | + } |
|
| 1023 | + |
|
| 1024 | + // required |
|
| 1025 | + if(!empty($args['required'])){ |
|
| 1026 | + $output .= ' required '; |
|
| 1027 | + } |
|
| 1028 | + |
|
| 1029 | + // close opening tag |
|
| 1030 | + $output .= ' >'; |
|
| 1031 | + |
|
| 1032 | + // label |
|
| 1033 | + if(!empty($args['label']) && is_array($args['label'])){ |
|
| 1034 | + }elseif(!empty($args['label'])){ |
|
| 1035 | + $output .= self::label(array('title'=>$args['label'],'for'=>$args['id'].$count,'class'=>'form-check-label'),'radio'); |
|
| 1036 | + } |
|
| 1037 | + |
|
| 1038 | + // wrap |
|
| 1039 | + if ( ! $args['no_wrap'] ) { |
|
| 1040 | + $wrap_class = $args['inline'] ? 'form-check form-check-inline' : 'form-check'; |
|
| 1041 | + |
|
| 1042 | + // Unique wrap class |
|
| 1043 | + $uniq_class = 'fwrap'; |
|
| 1044 | + if ( ! empty( $args['name'] ) ) { |
|
| 1045 | + $uniq_class .= '-' . $args['name']; |
|
| 1046 | + } else if ( ! empty( $args['id'] ) ) { |
|
| 1047 | + $uniq_class .= '-' . $args['id']; |
|
| 1048 | + } |
|
| 1049 | + |
|
| 1050 | + if ( isset( $args['value'] ) || $args['value'] !== "" ) { |
|
| 1051 | + $uniq_class .= '-' . $args['value']; |
|
| 1052 | + } else { |
|
| 1053 | + $uniq_class .= '-' . $count; |
|
| 1054 | + } |
|
| 1055 | + $wrap_class .= ' ' . sanitize_html_class( $uniq_class ); |
|
| 1056 | + |
|
| 1057 | + $output = self::wrap(array( |
|
| 1058 | + 'content' => $output, |
|
| 1059 | + 'class' => $wrap_class |
|
| 1060 | + )); |
|
| 1061 | + } |
|
| 1062 | + |
|
| 1063 | + return $output; |
|
| 1064 | + } |
|
| 1065 | 1065 | |
| 1066 | 1066 | } |
| 1067 | 1067 | \ No newline at end of file |
@@ -14,90 +14,90 @@ discard block |
||
| 14 | 14 | class GetPaid_Admin { |
| 15 | 15 | |
| 16 | 16 | /** |
| 17 | - * Local path to this plugins admin directory |
|
| 18 | - * |
|
| 19 | - * @var string |
|
| 20 | - */ |
|
| 21 | - public $admin_path; |
|
| 22 | - |
|
| 23 | - /** |
|
| 24 | - * Web path to this plugins admin directory |
|
| 25 | - * |
|
| 26 | - * @var string |
|
| 27 | - */ |
|
| 28 | - public $admin_url; |
|
| 17 | + * Local path to this plugins admin directory |
|
| 18 | + * |
|
| 19 | + * @var string |
|
| 20 | + */ |
|
| 21 | + public $admin_path; |
|
| 22 | + |
|
| 23 | + /** |
|
| 24 | + * Web path to this plugins admin directory |
|
| 25 | + * |
|
| 26 | + * @var string |
|
| 27 | + */ |
|
| 28 | + public $admin_url; |
|
| 29 | 29 | |
| 30 | - /** |
|
| 31 | - * Reports components. |
|
| 32 | - * |
|
| 33 | - * @var GetPaid_Reports |
|
| 34 | - */ |
|
| 30 | + /** |
|
| 31 | + * Reports components. |
|
| 32 | + * |
|
| 33 | + * @var GetPaid_Reports |
|
| 34 | + */ |
|
| 35 | 35 | public $reports; |
| 36 | 36 | |
| 37 | 37 | /** |
| 38 | - * Class constructor. |
|
| 39 | - */ |
|
| 40 | - public function __construct(){ |
|
| 38 | + * Class constructor. |
|
| 39 | + */ |
|
| 40 | + public function __construct(){ |
|
| 41 | 41 | |
| 42 | 42 | $this->admin_path = plugin_dir_path( __FILE__ ); |
| 43 | - $this->admin_url = plugins_url( '/', __FILE__ ); |
|
| 44 | - $this->reports = new GetPaid_Reports(); |
|
| 43 | + $this->admin_url = plugins_url( '/', __FILE__ ); |
|
| 44 | + $this->reports = new GetPaid_Reports(); |
|
| 45 | 45 | |
| 46 | 46 | if ( is_admin() ) { |
| 47 | - $this->init_admin_hooks(); |
|
| 47 | + $this->init_admin_hooks(); |
|
| 48 | 48 | } |
| 49 | 49 | |
| 50 | 50 | } |
| 51 | 51 | |
| 52 | 52 | /** |
| 53 | - * Init action and filter hooks |
|
| 54 | - * |
|
| 55 | - */ |
|
| 56 | - private function init_admin_hooks() { |
|
| 53 | + * Init action and filter hooks |
|
| 54 | + * |
|
| 55 | + */ |
|
| 56 | + private function init_admin_hooks() { |
|
| 57 | 57 | add_action( 'admin_enqueue_scripts', array( $this, 'enqeue_scripts' ), 9 ); |
| 58 | 58 | add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) ); |
| 59 | 59 | add_action( 'admin_init', array( $this, 'init_ayecode_connect_helper' ) ); |
| 60 | 60 | add_action( 'admin_init', array( $this, 'activation_redirect') ); |
| 61 | 61 | add_action( 'admin_init', array( $this, 'maybe_do_admin_action') ); |
| 62 | - add_action( 'admin_notices', array( $this, 'show_notices' ) ); |
|
| 63 | - add_action( 'getpaid_authenticated_admin_action_rate_plugin', array( $this, 'redirect_to_wordpress_rating_page' ) ); |
|
| 64 | - add_action( 'getpaid_authenticated_admin_action_duplicate_form', array( $this, 'duplicate_payment_form' ) ); |
|
| 65 | - add_action( 'getpaid_authenticated_admin_action_send_invoice', array( $this, 'send_customer_invoice' ) ); |
|
| 66 | - add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) ); |
|
| 62 | + add_action( 'admin_notices', array( $this, 'show_notices' ) ); |
|
| 63 | + add_action( 'getpaid_authenticated_admin_action_rate_plugin', array( $this, 'redirect_to_wordpress_rating_page' ) ); |
|
| 64 | + add_action( 'getpaid_authenticated_admin_action_duplicate_form', array( $this, 'duplicate_payment_form' ) ); |
|
| 65 | + add_action( 'getpaid_authenticated_admin_action_send_invoice', array( $this, 'send_customer_invoice' ) ); |
|
| 66 | + add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) ); |
|
| 67 | 67 | add_action( 'getpaid_authenticated_admin_action_reset_tax_rates', array( $this, 'admin_reset_tax_rates' ) ); |
| 68 | - add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) ); |
|
| 69 | - add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) ); |
|
| 70 | - add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) ); |
|
| 71 | - add_action( 'getpaid_authenticated_admin_action_download_customers', array( $this, 'admin_download_customers' ) ); |
|
| 72 | - add_action( 'getpaid_authenticated_admin_action_recalculate_discounts', array( $this, 'admin_recalculate_discounts' ) ); |
|
| 73 | - add_action( 'getpaid_authenticated_admin_action_install_plugin', array( $this, 'admin_install_plugin' ) ); |
|
| 74 | - add_action( 'getpaid_authenticated_admin_action_connect_gateway', array( $this, 'admin_connect_gateway' ) ); |
|
| 75 | - add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) ); |
|
| 76 | - do_action( 'getpaid_init_admin_hooks', $this ); |
|
| 77 | - |
|
| 78 | - // Setup/welcome |
|
| 79 | - if ( ! empty( $_GET['page'] ) ) { |
|
| 80 | - switch ( $_GET['page'] ) { |
|
| 81 | - case 'gp-setup' : |
|
| 82 | - include_once( dirname( __FILE__ ) . '/class-getpaid-admin-setup-wizard.php' ); |
|
| 83 | - break; |
|
| 84 | - } |
|
| 85 | - } |
|
| 68 | + add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) ); |
|
| 69 | + add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) ); |
|
| 70 | + add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) ); |
|
| 71 | + add_action( 'getpaid_authenticated_admin_action_download_customers', array( $this, 'admin_download_customers' ) ); |
|
| 72 | + add_action( 'getpaid_authenticated_admin_action_recalculate_discounts', array( $this, 'admin_recalculate_discounts' ) ); |
|
| 73 | + add_action( 'getpaid_authenticated_admin_action_install_plugin', array( $this, 'admin_install_plugin' ) ); |
|
| 74 | + add_action( 'getpaid_authenticated_admin_action_connect_gateway', array( $this, 'admin_connect_gateway' ) ); |
|
| 75 | + add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) ); |
|
| 76 | + do_action( 'getpaid_init_admin_hooks', $this ); |
|
| 77 | + |
|
| 78 | + // Setup/welcome |
|
| 79 | + if ( ! empty( $_GET['page'] ) ) { |
|
| 80 | + switch ( $_GET['page'] ) { |
|
| 81 | + case 'gp-setup' : |
|
| 82 | + include_once( dirname( __FILE__ ) . '/class-getpaid-admin-setup-wizard.php' ); |
|
| 83 | + break; |
|
| 84 | + } |
|
| 85 | + } |
|
| 86 | 86 | |
| 87 | 87 | } |
| 88 | 88 | |
| 89 | 89 | /** |
| 90 | - * Register admin scripts |
|
| 91 | - * |
|
| 92 | - */ |
|
| 93 | - public function enqeue_scripts() { |
|
| 90 | + * Register admin scripts |
|
| 91 | + * |
|
| 92 | + */ |
|
| 93 | + public function enqeue_scripts() { |
|
| 94 | 94 | global $current_screen, $pagenow; |
| 95 | 95 | |
| 96 | - $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
|
| 97 | - $editing = $pagenow == 'post.php' || $pagenow == 'post-new.php'; |
|
| 96 | + $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
|
| 97 | + $editing = $pagenow == 'post.php' || $pagenow == 'post-new.php'; |
|
| 98 | 98 | |
| 99 | 99 | if ( ! empty( $current_screen->post_type ) ) { |
| 100 | - $page = $current_screen->post_type; |
|
| 100 | + $page = $current_screen->post_type; |
|
| 101 | 101 | } |
| 102 | 102 | |
| 103 | 103 | // General styles. |
@@ -118,54 +118,54 @@ discard block |
||
| 118 | 118 | } |
| 119 | 119 | |
| 120 | 120 | // Payment form scripts. |
| 121 | - if ( 'wpi_payment_form' == $page && $editing ) { |
|
| 121 | + if ( 'wpi_payment_form' == $page && $editing ) { |
|
| 122 | 122 | $this->load_payment_form_scripts(); |
| 123 | 123 | } |
| 124 | 124 | |
| 125 | - if ( $page == 'wpinv-subscriptions' ) { |
|
| 126 | - wp_enqueue_script( 'postbox' ); |
|
| 127 | - } |
|
| 125 | + if ( $page == 'wpinv-subscriptions' ) { |
|
| 126 | + wp_enqueue_script( 'postbox' ); |
|
| 127 | + } |
|
| 128 | 128 | |
| 129 | 129 | } |
| 130 | 130 | |
| 131 | 131 | /** |
| 132 | - * Returns admin js translations. |
|
| 133 | - * |
|
| 134 | - */ |
|
| 135 | - protected function get_admin_i18() { |
|
| 132 | + * Returns admin js translations. |
|
| 133 | + * |
|
| 134 | + */ |
|
| 135 | + protected function get_admin_i18() { |
|
| 136 | 136 | global $post; |
| 137 | 137 | |
| 138 | - $date_range = array( |
|
| 139 | - 'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days' |
|
| 140 | - ); |
|
| 138 | + $date_range = array( |
|
| 139 | + 'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days' |
|
| 140 | + ); |
|
| 141 | 141 | |
| 142 | - if ( $date_range['period'] == 'custom' ) { |
|
| 142 | + if ( $date_range['period'] == 'custom' ) { |
|
| 143 | 143 | |
| 144 | - if ( isset( $_GET['from'] ) ) { |
|
| 145 | - $date_range[ 'after' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS ); |
|
| 146 | - } |
|
| 144 | + if ( isset( $_GET['from'] ) ) { |
|
| 145 | + $date_range[ 'after' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS ); |
|
| 146 | + } |
|
| 147 | 147 | |
| 148 | - if ( isset( $_GET['to'] ) ) { |
|
| 149 | - $date_range[ 'before' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS ); |
|
| 150 | - } |
|
| 148 | + if ( isset( $_GET['to'] ) ) { |
|
| 149 | + $date_range[ 'before' ] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS ); |
|
| 150 | + } |
|
| 151 | 151 | |
| 152 | - } |
|
| 152 | + } |
|
| 153 | 153 | |
| 154 | 154 | $i18n = array( |
| 155 | 155 | 'ajax_url' => admin_url( 'admin-ajax.php' ), |
| 156 | 156 | 'post_ID' => isset( $post->ID ) ? $post->ID : '', |
| 157 | - 'wpinv_nonce' => wp_create_nonce( 'wpinv-nonce' ), |
|
| 158 | - 'rest_nonce' => wp_create_nonce( 'wp_rest' ), |
|
| 159 | - 'rest_root' => esc_url_raw( rest_url() ), |
|
| 160 | - 'date_range' => $date_range, |
|
| 157 | + 'wpinv_nonce' => wp_create_nonce( 'wpinv-nonce' ), |
|
| 158 | + 'rest_nonce' => wp_create_nonce( 'wp_rest' ), |
|
| 159 | + 'rest_root' => esc_url_raw( rest_url() ), |
|
| 160 | + 'date_range' => $date_range, |
|
| 161 | 161 | 'add_invoice_note_nonce' => wp_create_nonce( 'add-invoice-note' ), |
| 162 | 162 | 'delete_invoice_note_nonce' => wp_create_nonce( 'delete-invoice-note' ), |
| 163 | 163 | 'invoice_item_nonce' => wp_create_nonce( 'invoice-item' ), |
| 164 | 164 | 'billing_details_nonce' => wp_create_nonce( 'get-billing-details' ), |
| 165 | 165 | 'tax' => wpinv_tax_amount(), |
| 166 | 166 | 'discount' => 0, |
| 167 | - 'currency_symbol' => wpinv_currency_symbol(), |
|
| 168 | - 'currency' => wpinv_get_currency(), |
|
| 167 | + 'currency_symbol' => wpinv_currency_symbol(), |
|
| 168 | + 'currency' => wpinv_get_currency(), |
|
| 169 | 169 | 'currency_pos' => wpinv_currency_position(), |
| 170 | 170 | 'thousand_sep' => wpinv_thousands_separator(), |
| 171 | 171 | 'decimal_sep' => wpinv_decimal_separator(), |
@@ -185,118 +185,118 @@ discard block |
||
| 185 | 185 | 'item_description' => __( 'Item Description', 'invoicing' ), |
| 186 | 186 | 'invoice_description' => __( 'Invoice Description', 'invoicing' ), |
| 187 | 187 | 'discount_description' => __( 'Discount Description', 'invoicing' ), |
| 188 | - 'searching' => __( 'Searching', 'invoicing' ), |
|
| 189 | - 'loading' => __( 'Loading...', 'invoicing' ), |
|
| 190 | - 'search_customers' => __( 'Enter customer name or email', 'invoicing' ), |
|
| 191 | - 'search_items' => __( 'Enter item name', 'invoicing' ), |
|
| 188 | + 'searching' => __( 'Searching', 'invoicing' ), |
|
| 189 | + 'loading' => __( 'Loading...', 'invoicing' ), |
|
| 190 | + 'search_customers' => __( 'Enter customer name or email', 'invoicing' ), |
|
| 191 | + 'search_items' => __( 'Enter item name', 'invoicing' ), |
|
| 192 | 192 | ); |
| 193 | 193 | |
| 194 | - if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) { |
|
| 194 | + if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) { |
|
| 195 | 195 | |
| 196 | - $invoice = new WPInv_Invoice( $post ); |
|
| 197 | - $i18n['save_invoice'] = sprintf( |
|
| 198 | - __( 'Save %s', 'invoicing' ), |
|
| 199 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 200 | - ); |
|
| 196 | + $invoice = new WPInv_Invoice( $post ); |
|
| 197 | + $i18n['save_invoice'] = sprintf( |
|
| 198 | + __( 'Save %s', 'invoicing' ), |
|
| 199 | + ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 200 | + ); |
|
| 201 | 201 | |
| 202 | - $i18n['invoice_description'] = sprintf( |
|
| 203 | - __( '%s Description', 'invoicing' ), |
|
| 204 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 205 | - ); |
|
| 202 | + $i18n['invoice_description'] = sprintf( |
|
| 203 | + __( '%s Description', 'invoicing' ), |
|
| 204 | + ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 205 | + ); |
|
| 206 | 206 | |
| 207 | - } |
|
| 208 | - return $i18n; |
|
| 209 | - } |
|
| 207 | + } |
|
| 208 | + return $i18n; |
|
| 209 | + } |
|
| 210 | 210 | |
| 211 | - /** |
|
| 212 | - * Change the admin footer text on GetPaid admin pages. |
|
| 213 | - * |
|
| 214 | - * @since 2.0.0 |
|
| 215 | - * @param string $footer_text |
|
| 216 | - * @return string |
|
| 217 | - */ |
|
| 218 | - public function admin_footer_text( $footer_text ) { |
|
| 219 | - global $current_screen; |
|
| 211 | + /** |
|
| 212 | + * Change the admin footer text on GetPaid admin pages. |
|
| 213 | + * |
|
| 214 | + * @since 2.0.0 |
|
| 215 | + * @param string $footer_text |
|
| 216 | + * @return string |
|
| 217 | + */ |
|
| 218 | + public function admin_footer_text( $footer_text ) { |
|
| 219 | + global $current_screen; |
|
| 220 | 220 | |
| 221 | - $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
|
| 221 | + $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
|
| 222 | 222 | |
| 223 | 223 | if ( ! empty( $current_screen->post_type ) ) { |
| 224 | - $page = $current_screen->post_type; |
|
| 224 | + $page = $current_screen->post_type; |
|
| 225 | 225 | } |
| 226 | 226 | |
| 227 | 227 | // General styles. |
| 228 | 228 | if ( apply_filters( 'getpaid_display_admin_footer_text', wpinv_current_user_can_manage_invoicing() ) && false !== stripos( $page, 'wpi' ) ) { |
| 229 | 229 | |
| 230 | - // Change the footer text |
|
| 231 | - if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) { |
|
| 232 | - |
|
| 233 | - $rating_url = esc_url( |
|
| 234 | - wp_nonce_url( |
|
| 235 | - admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ), |
|
| 236 | - 'getpaid-nonce', |
|
| 237 | - 'getpaid-nonce' |
|
| 238 | - ) |
|
| 239 | - ); |
|
| 240 | - |
|
| 241 | - $footer_text = sprintf( |
|
| 242 | - /* translators: %s: five stars */ |
|
| 243 | - __( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ), |
|
| 244 | - "<a href='$rating_url'>★★★★★</a>" |
|
| 245 | - ); |
|
| 246 | - |
|
| 247 | - } else { |
|
| 248 | - |
|
| 249 | - $footer_text = sprintf( |
|
| 250 | - /* translators: %s: GetPaid */ |
|
| 251 | - __( 'Thank you for using %s!', 'invoicing' ), |
|
| 252 | - "<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>" |
|
| 253 | - ); |
|
| 254 | - |
|
| 255 | - } |
|
| 256 | - |
|
| 257 | - } |
|
| 258 | - |
|
| 259 | - return $footer_text; |
|
| 260 | - } |
|
| 261 | - |
|
| 262 | - /** |
|
| 263 | - * Redirects to wp.org to rate the plugin. |
|
| 264 | - * |
|
| 265 | - * @since 2.0.0 |
|
| 266 | - */ |
|
| 267 | - public function redirect_to_wordpress_rating_page() { |
|
| 268 | - update_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', 1 ); |
|
| 269 | - wp_redirect( 'https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post' ); |
|
| 270 | - exit; |
|
| 271 | - } |
|
| 272 | - |
|
| 273 | - /** |
|
| 274 | - * Loads payment form js. |
|
| 275 | - * |
|
| 276 | - */ |
|
| 277 | - protected function load_payment_form_scripts() { |
|
| 230 | + // Change the footer text |
|
| 231 | + if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) { |
|
| 232 | + |
|
| 233 | + $rating_url = esc_url( |
|
| 234 | + wp_nonce_url( |
|
| 235 | + admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ), |
|
| 236 | + 'getpaid-nonce', |
|
| 237 | + 'getpaid-nonce' |
|
| 238 | + ) |
|
| 239 | + ); |
|
| 240 | + |
|
| 241 | + $footer_text = sprintf( |
|
| 242 | + /* translators: %s: five stars */ |
|
| 243 | + __( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ), |
|
| 244 | + "<a href='$rating_url'>★★★★★</a>" |
|
| 245 | + ); |
|
| 246 | + |
|
| 247 | + } else { |
|
| 248 | + |
|
| 249 | + $footer_text = sprintf( |
|
| 250 | + /* translators: %s: GetPaid */ |
|
| 251 | + __( 'Thank you for using %s!', 'invoicing' ), |
|
| 252 | + "<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>" |
|
| 253 | + ); |
|
| 254 | + |
|
| 255 | + } |
|
| 256 | + |
|
| 257 | + } |
|
| 258 | + |
|
| 259 | + return $footer_text; |
|
| 260 | + } |
|
| 261 | + |
|
| 262 | + /** |
|
| 263 | + * Redirects to wp.org to rate the plugin. |
|
| 264 | + * |
|
| 265 | + * @since 2.0.0 |
|
| 266 | + */ |
|
| 267 | + public function redirect_to_wordpress_rating_page() { |
|
| 268 | + update_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', 1 ); |
|
| 269 | + wp_redirect( 'https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post' ); |
|
| 270 | + exit; |
|
| 271 | + } |
|
| 272 | + |
|
| 273 | + /** |
|
| 274 | + * Loads payment form js. |
|
| 275 | + * |
|
| 276 | + */ |
|
| 277 | + protected function load_payment_form_scripts() { |
|
| 278 | 278 | global $post; |
| 279 | 279 | |
| 280 | 280 | wp_enqueue_script( 'vue', WPINV_PLUGIN_URL . 'assets/js/vue/vue.min.js', array(), WPINV_VERSION ); |
| 281 | - wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION ); |
|
| 282 | - wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION ); |
|
| 281 | + wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION ); |
|
| 282 | + wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION ); |
|
| 283 | 283 | |
| 284 | - $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/admin-payment-forms.js' ); |
|
| 285 | - wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.js', array( 'wpinv-admin-script', 'vue_draggable', 'wp-hooks' ), $version ); |
|
| 284 | + $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/admin-payment-forms.js' ); |
|
| 285 | + wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.js', array( 'wpinv-admin-script', 'vue_draggable', 'wp-hooks' ), $version ); |
|
| 286 | 286 | |
| 287 | - wp_localize_script( |
|
| 287 | + wp_localize_script( |
|
| 288 | 288 | 'wpinv-admin-payment-form-script', |
| 289 | 289 | 'wpinvPaymentFormAdmin', |
| 290 | 290 | array( |
| 291 | - 'elements' => wpinv_get_data( 'payment-form-elements' ), |
|
| 292 | - 'form_elements' => getpaid_get_payment_form_elements( $post->ID ), |
|
| 293 | - 'currency' => wpinv_currency_symbol(), |
|
| 294 | - 'position' => wpinv_currency_position(), |
|
| 295 | - 'decimals' => (int) wpinv_decimals(), |
|
| 296 | - 'thousands_sep' => wpinv_thousands_separator(), |
|
| 297 | - 'decimals_sep' => wpinv_decimal_separator(), |
|
| 298 | - 'form_items' => gepaid_get_form_items( $post->ID ), |
|
| 299 | - 'is_default' => $post->ID == wpinv_get_default_payment_form(), |
|
| 291 | + 'elements' => wpinv_get_data( 'payment-form-elements' ), |
|
| 292 | + 'form_elements' => getpaid_get_payment_form_elements( $post->ID ), |
|
| 293 | + 'currency' => wpinv_currency_symbol(), |
|
| 294 | + 'position' => wpinv_currency_position(), |
|
| 295 | + 'decimals' => (int) wpinv_decimals(), |
|
| 296 | + 'thousands_sep' => wpinv_thousands_separator(), |
|
| 297 | + 'decimals_sep' => wpinv_decimal_separator(), |
|
| 298 | + 'form_items' => gepaid_get_form_items( $post->ID ), |
|
| 299 | + 'is_default' => $post->ID == wpinv_get_default_payment_form(), |
|
| 300 | 300 | ) |
| 301 | 301 | ); |
| 302 | 302 | |
@@ -305,20 +305,20 @@ discard block |
||
| 305 | 305 | } |
| 306 | 306 | |
| 307 | 307 | /** |
| 308 | - * Add our classes to admin pages. |
|
| 308 | + * Add our classes to admin pages. |
|
| 309 | 309 | * |
| 310 | 310 | * @param string $classes |
| 311 | 311 | * @return string |
| 312 | - * |
|
| 313 | - */ |
|
| 312 | + * |
|
| 313 | + */ |
|
| 314 | 314 | public function admin_body_class( $classes ) { |
| 315 | - global $pagenow, $post, $current_screen; |
|
| 315 | + global $pagenow, $post, $current_screen; |
|
| 316 | 316 | |
| 317 | 317 | |
| 318 | 318 | $page = isset( $_GET['page'] ) ? $_GET['page'] : ''; |
| 319 | 319 | |
| 320 | 320 | if ( ! empty( $current_screen->post_type ) ) { |
| 321 | - $page = $current_screen->post_type; |
|
| 321 | + $page = $current_screen->post_type; |
|
| 322 | 322 | } |
| 323 | 323 | |
| 324 | 324 | if ( false !== stripos( $page, 'wpi' ) ) { |
@@ -327,68 +327,68 @@ discard block |
||
| 327 | 327 | |
| 328 | 328 | if ( in_array( $page, wpinv_parse_list( 'wpi_invoice wpi_payment_form wpi_quote' ) ) ) { |
| 329 | 329 | $classes .= ' wpinv-cpt wpinv'; |
| 330 | - } |
|
| 330 | + } |
|
| 331 | 331 | |
| 332 | - if ( getpaid_is_invoice_post_type( $page ) ) { |
|
| 332 | + if ( getpaid_is_invoice_post_type( $page ) ) { |
|
| 333 | 333 | $classes .= ' getpaid-is-invoice-cpt'; |
| 334 | 334 | } |
| 335 | 335 | |
| 336 | - return $classes; |
|
| 336 | + return $classes; |
|
| 337 | 337 | } |
| 338 | 338 | |
| 339 | 339 | /** |
| 340 | - * Maybe show the AyeCode Connect Notice. |
|
| 341 | - */ |
|
| 342 | - public function init_ayecode_connect_helper(){ |
|
| 340 | + * Maybe show the AyeCode Connect Notice. |
|
| 341 | + */ |
|
| 342 | + public function init_ayecode_connect_helper(){ |
|
| 343 | 343 | |
| 344 | - // Register with the deactivation survey class. |
|
| 345 | - AyeCode_Deactivation_Survey::instance(array( |
|
| 346 | - 'slug' => 'invoicing', |
|
| 347 | - 'version' => WPINV_VERSION, |
|
| 348 | - 'support_url' => 'https://wpgetpaid.com/support/', |
|
| 349 | - 'documentation_url' => 'https://docs.wpgetpaid.com/', |
|
| 350 | - 'activated' => (int) get_option( 'gepaid_installed_on' ), |
|
| 351 | - )); |
|
| 344 | + // Register with the deactivation survey class. |
|
| 345 | + AyeCode_Deactivation_Survey::instance(array( |
|
| 346 | + 'slug' => 'invoicing', |
|
| 347 | + 'version' => WPINV_VERSION, |
|
| 348 | + 'support_url' => 'https://wpgetpaid.com/support/', |
|
| 349 | + 'documentation_url' => 'https://docs.wpgetpaid.com/', |
|
| 350 | + 'activated' => (int) get_option( 'gepaid_installed_on' ), |
|
| 351 | + )); |
|
| 352 | 352 | |
| 353 | 353 | new AyeCode_Connect_Helper( |
| 354 | 354 | array( |
| 355 | - 'connect_title' => __("WP Invoicing - an AyeCode product!","invoicing"), |
|
| 356 | - 'connect_external' => __( "Please confirm you wish to connect your site?","invoicing" ), |
|
| 357 | - 'connect' => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s","invoicing" ),"<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>","</a>" ), |
|
| 358 | - 'connect_button' => __("Connect Site","invoicing"), |
|
| 359 | - 'connecting_button' => __("Connecting...","invoicing"), |
|
| 360 | - 'error_localhost' => __( "This service will only work with a live domain, not a localhost.","invoicing" ), |
|
| 361 | - 'error' => __( "Something went wrong, please refresh and try again.","invoicing" ), |
|
| 355 | + 'connect_title' => __("WP Invoicing - an AyeCode product!","invoicing"), |
|
| 356 | + 'connect_external' => __( "Please confirm you wish to connect your site?","invoicing" ), |
|
| 357 | + 'connect' => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s","invoicing" ),"<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>","</a>" ), |
|
| 358 | + 'connect_button' => __("Connect Site","invoicing"), |
|
| 359 | + 'connecting_button' => __("Connecting...","invoicing"), |
|
| 360 | + 'error_localhost' => __( "This service will only work with a live domain, not a localhost.","invoicing" ), |
|
| 361 | + 'error' => __( "Something went wrong, please refresh and try again.","invoicing" ), |
|
| 362 | 362 | ), |
| 363 | 363 | array( 'wpi-addons' ) |
| 364 | 364 | ); |
| 365 | 365 | |
| 366 | 366 | } |
| 367 | 367 | |
| 368 | - /** |
|
| 369 | - * Redirect users to settings on activation. |
|
| 370 | - * |
|
| 371 | - * @return void |
|
| 372 | - */ |
|
| 373 | - public function activation_redirect() { |
|
| 368 | + /** |
|
| 369 | + * Redirect users to settings on activation. |
|
| 370 | + * |
|
| 371 | + * @return void |
|
| 372 | + */ |
|
| 373 | + public function activation_redirect() { |
|
| 374 | 374 | |
| 375 | - $redirected = get_option( 'wpinv_redirected_to_settings' ); |
|
| 375 | + $redirected = get_option( 'wpinv_redirected_to_settings' ); |
|
| 376 | 376 | |
| 377 | - if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) { |
|
| 378 | - return; |
|
| 379 | - } |
|
| 377 | + if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) { |
|
| 378 | + return; |
|
| 379 | + } |
|
| 380 | 380 | |
| 381 | - // Bail if activating from network, or bulk |
|
| 382 | - if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) { |
|
| 383 | - return; |
|
| 384 | - } |
|
| 381 | + // Bail if activating from network, or bulk |
|
| 382 | + if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) { |
|
| 383 | + return; |
|
| 384 | + } |
|
| 385 | 385 | |
| 386 | - update_option( 'wpinv_redirected_to_settings', 1 ); |
|
| 386 | + update_option( 'wpinv_redirected_to_settings', 1 ); |
|
| 387 | 387 | |
| 388 | 388 | wp_safe_redirect( admin_url( 'index.php?page=gp-setup' ) ); |
| 389 | 389 | exit; |
| 390 | 390 | |
| 391 | - } |
|
| 391 | + } |
|
| 392 | 392 | |
| 393 | 393 | /** |
| 394 | 394 | * Fires an admin action after verifying that a user can fire them. |
@@ -402,498 +402,498 @@ discard block |
||
| 402 | 402 | |
| 403 | 403 | } |
| 404 | 404 | |
| 405 | - /** |
|
| 405 | + /** |
|
| 406 | 406 | * Sends a payment reminder to a customer. |
| 407 | - * |
|
| 408 | - * @param array $args |
|
| 407 | + * |
|
| 408 | + * @param array $args |
|
| 409 | 409 | */ |
| 410 | 410 | public function duplicate_payment_form( $args ) { |
| 411 | 411 | |
| 412 | - if ( empty( $args['form_id'] ) ) { |
|
| 413 | - return; |
|
| 414 | - } |
|
| 415 | - |
|
| 416 | - $form = new GetPaid_Payment_Form( $args['form_id'] ); |
|
| 412 | + if ( empty( $args['form_id'] ) ) { |
|
| 413 | + return; |
|
| 414 | + } |
|
| 417 | 415 | |
| 418 | - if ( ! $form->exists() ) { |
|
| 419 | - return; |
|
| 420 | - } |
|
| 416 | + $form = new GetPaid_Payment_Form( $args['form_id'] ); |
|
| 421 | 417 | |
| 422 | - $new_form = new GetPaid_Payment_Form(); |
|
| 423 | - $new_form->set_author( $form->get_author( 'edit' ) ); |
|
| 424 | - $new_form->set_name( $form->get_name( 'edit' ) . __( '(copy)', 'invoicing' ) ); |
|
| 425 | - $new_form->set_elements( $form->get_elements( 'edit' ) ); |
|
| 426 | - $new_form->set_items( $form->get_items( 'edit' ) ); |
|
| 427 | - $new_form->save(); |
|
| 418 | + if ( ! $form->exists() ) { |
|
| 419 | + return; |
|
| 420 | + } |
|
| 428 | 421 | |
| 429 | - if ( $new_form->exists() ) { |
|
| 430 | - $this->show_success( __( 'Form duplicated successfully', 'invoicing' ) ); |
|
| 431 | - $url = get_edit_post_link( $new_form->get_id(), 'edit' ); |
|
| 432 | - } else { |
|
| 433 | - $this->show_error( __( 'Unable to duplicate form', 'invoicing' ) ); |
|
| 434 | - $url = remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) ); |
|
| 435 | - } |
|
| 422 | + $new_form = new GetPaid_Payment_Form(); |
|
| 423 | + $new_form->set_author( $form->get_author( 'edit' ) ); |
|
| 424 | + $new_form->set_name( $form->get_name( 'edit' ) . __( '(copy)', 'invoicing' ) ); |
|
| 425 | + $new_form->set_elements( $form->get_elements( 'edit' ) ); |
|
| 426 | + $new_form->set_items( $form->get_items( 'edit' ) ); |
|
| 427 | + $new_form->save(); |
|
| 428 | + |
|
| 429 | + if ( $new_form->exists() ) { |
|
| 430 | + $this->show_success( __( 'Form duplicated successfully', 'invoicing' ) ); |
|
| 431 | + $url = get_edit_post_link( $new_form->get_id(), 'edit' ); |
|
| 432 | + } else { |
|
| 433 | + $this->show_error( __( 'Unable to duplicate form', 'invoicing' ) ); |
|
| 434 | + $url = remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) ); |
|
| 435 | + } |
|
| 436 | 436 | |
| 437 | - wp_redirect( $url ); |
|
| 438 | - exit; |
|
| 439 | - } |
|
| 437 | + wp_redirect( $url ); |
|
| 438 | + exit; |
|
| 439 | + } |
|
| 440 | 440 | |
| 441 | - /** |
|
| 441 | + /** |
|
| 442 | 442 | * Sends a payment reminder to a customer. |
| 443 | - * |
|
| 444 | - * @param array $args |
|
| 443 | + * |
|
| 444 | + * @param array $args |
|
| 445 | 445 | */ |
| 446 | 446 | public function send_customer_invoice( $args ) { |
| 447 | - $sent = getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ), true ); |
|
| 447 | + $sent = getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ), true ); |
|
| 448 | 448 | |
| 449 | - if ( $sent ) { |
|
| 450 | - $this->show_success( __( 'Invoice was successfully sent to the customer', 'invoicing' ) ); |
|
| 451 | - } else { |
|
| 452 | - $this->show_error( __( 'Could not send the invoice to the customer', 'invoicing' ) ); |
|
| 453 | - } |
|
| 449 | + if ( $sent ) { |
|
| 450 | + $this->show_success( __( 'Invoice was successfully sent to the customer', 'invoicing' ) ); |
|
| 451 | + } else { |
|
| 452 | + $this->show_error( __( 'Could not send the invoice to the customer', 'invoicing' ) ); |
|
| 453 | + } |
|
| 454 | 454 | |
| 455 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 456 | - exit; |
|
| 457 | - } |
|
| 455 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 456 | + exit; |
|
| 457 | + } |
|
| 458 | 458 | |
| 459 | - /** |
|
| 459 | + /** |
|
| 460 | 460 | * Sends a payment reminder to a customer. |
| 461 | - * |
|
| 462 | - * @param array $args |
|
| 461 | + * |
|
| 462 | + * @param array $args |
|
| 463 | 463 | */ |
| 464 | 464 | public function send_customer_payment_reminder( $args ) { |
| 465 | - $sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) ); |
|
| 465 | + $sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) ); |
|
| 466 | 466 | |
| 467 | - if ( $sent ) { |
|
| 468 | - $this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) ); |
|
| 469 | - } else { |
|
| 470 | - $this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) ); |
|
| 471 | - } |
|
| 467 | + if ( $sent ) { |
|
| 468 | + $this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) ); |
|
| 469 | + } else { |
|
| 470 | + $this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) ); |
|
| 471 | + } |
|
| 472 | 472 | |
| 473 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 474 | - exit; |
|
| 475 | - } |
|
| 473 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 474 | + exit; |
|
| 475 | + } |
|
| 476 | 476 | |
| 477 | - /** |
|
| 477 | + /** |
|
| 478 | 478 | * Resets tax rates. |
| 479 | - * |
|
| 479 | + * |
|
| 480 | 480 | */ |
| 481 | 481 | public function admin_reset_tax_rates() { |
| 482 | 482 | |
| 483 | - update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) ); |
|
| 484 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 485 | - exit; |
|
| 483 | + update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) ); |
|
| 484 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 485 | + exit; |
|
| 486 | 486 | |
| 487 | - } |
|
| 487 | + } |
|
| 488 | 488 | |
| 489 | - /** |
|
| 489 | + /** |
|
| 490 | 490 | * Resets admin pages. |
| 491 | - * |
|
| 491 | + * |
|
| 492 | 492 | */ |
| 493 | 493 | public function admin_create_missing_pages() { |
| 494 | - $installer = new GetPaid_Installer(); |
|
| 495 | - $installer->create_pages(); |
|
| 496 | - $this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) ); |
|
| 497 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 498 | - exit; |
|
| 499 | - } |
|
| 500 | - |
|
| 501 | - /** |
|
| 494 | + $installer = new GetPaid_Installer(); |
|
| 495 | + $installer->create_pages(); |
|
| 496 | + $this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) ); |
|
| 497 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 498 | + exit; |
|
| 499 | + } |
|
| 500 | + |
|
| 501 | + /** |
|
| 502 | 502 | * Creates an missing admin tables. |
| 503 | - * |
|
| 503 | + * |
|
| 504 | 504 | */ |
| 505 | 505 | public function admin_create_missing_tables() { |
| 506 | - global $wpdb; |
|
| 507 | - $installer = new GetPaid_Installer(); |
|
| 506 | + global $wpdb; |
|
| 507 | + $installer = new GetPaid_Installer(); |
|
| 508 | 508 | |
| 509 | - if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}wpinv_subscriptions'" ) != $wpdb->prefix . 'wpinv_subscriptions' ) { |
|
| 510 | - $installer->create_subscriptions_table(); |
|
| 509 | + if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}wpinv_subscriptions'" ) != $wpdb->prefix . 'wpinv_subscriptions' ) { |
|
| 510 | + $installer->create_subscriptions_table(); |
|
| 511 | 511 | |
| 512 | - if ( $wpdb->last_error !== '' ) { |
|
| 513 | - $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 514 | - } |
|
| 515 | - } |
|
| 512 | + if ( $wpdb->last_error !== '' ) { |
|
| 513 | + $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 514 | + } |
|
| 515 | + } |
|
| 516 | 516 | |
| 517 | - if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoices'" ) != $wpdb->prefix . 'getpaid_invoices' ) { |
|
| 518 | - $installer->create_invoices_table(); |
|
| 517 | + if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoices'" ) != $wpdb->prefix . 'getpaid_invoices' ) { |
|
| 518 | + $installer->create_invoices_table(); |
|
| 519 | 519 | |
| 520 | - if ( $wpdb->last_error !== '' ) { |
|
| 521 | - $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 522 | - } |
|
| 523 | - } |
|
| 520 | + if ( $wpdb->last_error !== '' ) { |
|
| 521 | + $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 522 | + } |
|
| 523 | + } |
|
| 524 | 524 | |
| 525 | - if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoice_items'" ) != $wpdb->prefix . 'getpaid_invoice_items' ) { |
|
| 526 | - $installer->create_invoice_items_table(); |
|
| 525 | + if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoice_items'" ) != $wpdb->prefix . 'getpaid_invoice_items' ) { |
|
| 526 | + $installer->create_invoice_items_table(); |
|
| 527 | 527 | |
| 528 | - if ( $wpdb->last_error !== '' ) { |
|
| 529 | - $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 530 | - } |
|
| 531 | - } |
|
| 528 | + if ( $wpdb->last_error !== '' ) { |
|
| 529 | + $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 530 | + } |
|
| 531 | + } |
|
| 532 | 532 | |
| 533 | - if ( ! $this->has_notices() ) { |
|
| 534 | - $this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) ); |
|
| 535 | - } |
|
| 533 | + if ( ! $this->has_notices() ) { |
|
| 534 | + $this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) ); |
|
| 535 | + } |
|
| 536 | 536 | |
| 537 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 538 | - exit; |
|
| 539 | - } |
|
| 537 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 538 | + exit; |
|
| 539 | + } |
|
| 540 | 540 | |
| 541 | - /** |
|
| 541 | + /** |
|
| 542 | 542 | * Migrates old invoices to the new database tables. |
| 543 | - * |
|
| 543 | + * |
|
| 544 | 544 | */ |
| 545 | 545 | public function admin_migrate_old_invoices() { |
| 546 | 546 | |
| 547 | - // Migrate the invoices. |
|
| 548 | - $installer = new GetPaid_Installer(); |
|
| 549 | - $installer->migrate_old_invoices(); |
|
| 547 | + // Migrate the invoices. |
|
| 548 | + $installer = new GetPaid_Installer(); |
|
| 549 | + $installer->migrate_old_invoices(); |
|
| 550 | 550 | |
| 551 | - // Show an admin message. |
|
| 552 | - $this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) ); |
|
| 551 | + // Show an admin message. |
|
| 552 | + $this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) ); |
|
| 553 | 553 | |
| 554 | - // Redirect the admin. |
|
| 555 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 556 | - exit; |
|
| 554 | + // Redirect the admin. |
|
| 555 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 556 | + exit; |
|
| 557 | 557 | |
| 558 | - } |
|
| 558 | + } |
|
| 559 | 559 | |
| 560 | - /** |
|
| 560 | + /** |
|
| 561 | 561 | * Download customers. |
| 562 | - * |
|
| 562 | + * |
|
| 563 | 563 | */ |
| 564 | 564 | public function admin_download_customers() { |
| 565 | - global $wpdb; |
|
| 565 | + global $wpdb; |
|
| 566 | 566 | |
| 567 | - $output = fopen( 'php://output', 'w' ) or die( __( 'Unsupported server', 'invoicing' ) ); |
|
| 567 | + $output = fopen( 'php://output', 'w' ) or die( __( 'Unsupported server', 'invoicing' ) ); |
|
| 568 | 568 | |
| 569 | - header( "Content-Type:text/csv" ); |
|
| 570 | - header( "Content-Disposition:attachment;filename=customers.csv" ); |
|
| 569 | + header( "Content-Type:text/csv" ); |
|
| 570 | + header( "Content-Disposition:attachment;filename=customers.csv" ); |
|
| 571 | 571 | |
| 572 | - $post_types = ''; |
|
| 572 | + $post_types = ''; |
|
| 573 | 573 | |
| 574 | - foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) { |
|
| 575 | - $post_types .= $wpdb->prepare( "post_type=%s OR ", $post_type ); |
|
| 576 | - } |
|
| 574 | + foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) { |
|
| 575 | + $post_types .= $wpdb->prepare( "post_type=%s OR ", $post_type ); |
|
| 576 | + } |
|
| 577 | 577 | |
| 578 | - $post_types = rtrim( $post_types, ' OR' ); |
|
| 578 | + $post_types = rtrim( $post_types, ' OR' ); |
|
| 579 | 579 | |
| 580 | - $customers = $wpdb->get_col( |
|
| 581 | - $wpdb->prepare( |
|
| 582 | - "SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types" |
|
| 583 | - ) |
|
| 584 | - ); |
|
| 580 | + $customers = $wpdb->get_col( |
|
| 581 | + $wpdb->prepare( |
|
| 582 | + "SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types" |
|
| 583 | + ) |
|
| 584 | + ); |
|
| 585 | 585 | |
| 586 | - $columns = array( |
|
| 587 | - 'name' => __( 'Name', 'invoicing' ), |
|
| 588 | - 'email' => __( 'Email', 'invoicing' ), |
|
| 589 | - 'country' => __( 'Country', 'invoicing' ), |
|
| 590 | - 'state' => __( 'State', 'invoicing' ), |
|
| 591 | - 'city' => __( 'City', 'invoicing' ), |
|
| 592 | - 'zip' => __( 'ZIP', 'invoicing' ), |
|
| 593 | - 'address' => __( 'Address', 'invoicing' ), |
|
| 594 | - 'phone' => __( 'Phone', 'invoicing' ), |
|
| 595 | - 'company' => __( 'Company', 'invoicing' ), |
|
| 596 | - 'company_id' => __( 'Company ID', 'invoicing' ), |
|
| 597 | - 'invoices' => __( 'Invoices', 'invoicing' ), |
|
| 598 | - 'total_raw' => __( 'Total Spend', 'invoicing' ), |
|
| 599 | - 'signup' => __( 'Date created', 'invoicing' ), |
|
| 600 | - ); |
|
| 586 | + $columns = array( |
|
| 587 | + 'name' => __( 'Name', 'invoicing' ), |
|
| 588 | + 'email' => __( 'Email', 'invoicing' ), |
|
| 589 | + 'country' => __( 'Country', 'invoicing' ), |
|
| 590 | + 'state' => __( 'State', 'invoicing' ), |
|
| 591 | + 'city' => __( 'City', 'invoicing' ), |
|
| 592 | + 'zip' => __( 'ZIP', 'invoicing' ), |
|
| 593 | + 'address' => __( 'Address', 'invoicing' ), |
|
| 594 | + 'phone' => __( 'Phone', 'invoicing' ), |
|
| 595 | + 'company' => __( 'Company', 'invoicing' ), |
|
| 596 | + 'company_id' => __( 'Company ID', 'invoicing' ), |
|
| 597 | + 'invoices' => __( 'Invoices', 'invoicing' ), |
|
| 598 | + 'total_raw' => __( 'Total Spend', 'invoicing' ), |
|
| 599 | + 'signup' => __( 'Date created', 'invoicing' ), |
|
| 600 | + ); |
|
| 601 | 601 | |
| 602 | - // Output the csv column headers. |
|
| 603 | - fputcsv( $output, array_values( $columns ) ); |
|
| 602 | + // Output the csv column headers. |
|
| 603 | + fputcsv( $output, array_values( $columns ) ); |
|
| 604 | 604 | |
| 605 | - // Loop through |
|
| 606 | - $table = new WPInv_Customers_Table(); |
|
| 607 | - foreach ( $customers as $customer_id ) { |
|
| 605 | + // Loop through |
|
| 606 | + $table = new WPInv_Customers_Table(); |
|
| 607 | + foreach ( $customers as $customer_id ) { |
|
| 608 | 608 | |
| 609 | - $user = get_user_by( 'id', $customer_id ); |
|
| 610 | - $row = array(); |
|
| 611 | - if ( empty( $user ) ) { |
|
| 612 | - continue; |
|
| 613 | - } |
|
| 609 | + $user = get_user_by( 'id', $customer_id ); |
|
| 610 | + $row = array(); |
|
| 611 | + if ( empty( $user ) ) { |
|
| 612 | + continue; |
|
| 613 | + } |
|
| 614 | 614 | |
| 615 | - foreach ( array_keys( $columns ) as $column ) { |
|
| 615 | + foreach ( array_keys( $columns ) as $column ) { |
|
| 616 | 616 | |
| 617 | - $method = 'column_' . $column; |
|
| 617 | + $method = 'column_' . $column; |
|
| 618 | 618 | |
| 619 | - if ( 'name' == $column ) { |
|
| 620 | - $value = esc_html( $user->display_name ); |
|
| 621 | - } else if( 'email' == $column ) { |
|
| 622 | - $value = sanitize_email( $user->user_email ); |
|
| 623 | - } else if ( is_callable( array( $table, $method ) ) ) { |
|
| 624 | - $value = strip_tags( $table->$method( $user ) ); |
|
| 625 | - } |
|
| 619 | + if ( 'name' == $column ) { |
|
| 620 | + $value = esc_html( $user->display_name ); |
|
| 621 | + } else if( 'email' == $column ) { |
|
| 622 | + $value = sanitize_email( $user->user_email ); |
|
| 623 | + } else if ( is_callable( array( $table, $method ) ) ) { |
|
| 624 | + $value = strip_tags( $table->$method( $user ) ); |
|
| 625 | + } |
|
| 626 | 626 | |
| 627 | - if ( empty( $value ) ) { |
|
| 628 | - $value = esc_html( get_user_meta( $user->ID, '_wpinv_' . $column, true ) ); |
|
| 629 | - } |
|
| 627 | + if ( empty( $value ) ) { |
|
| 628 | + $value = esc_html( get_user_meta( $user->ID, '_wpinv_' . $column, true ) ); |
|
| 629 | + } |
|
| 630 | 630 | |
| 631 | - $row[] = $value; |
|
| 631 | + $row[] = $value; |
|
| 632 | 632 | |
| 633 | - } |
|
| 633 | + } |
|
| 634 | 634 | |
| 635 | - fputcsv( $output, $row ); |
|
| 636 | - } |
|
| 635 | + fputcsv( $output, $row ); |
|
| 636 | + } |
|
| 637 | 637 | |
| 638 | - fclose( $output ); |
|
| 639 | - exit; |
|
| 638 | + fclose( $output ); |
|
| 639 | + exit; |
|
| 640 | 640 | |
| 641 | - } |
|
| 641 | + } |
|
| 642 | 642 | |
| 643 | - /** |
|
| 643 | + /** |
|
| 644 | 644 | * Installs a plugin. |
| 645 | - * |
|
| 646 | - * @param array $data |
|
| 645 | + * |
|
| 646 | + * @param array $data |
|
| 647 | 647 | */ |
| 648 | 648 | public function admin_install_plugin( $data ) { |
| 649 | 649 | |
| 650 | - if ( ! empty( $data['plugins'] ) ) { |
|
| 651 | - include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 652 | - wp_cache_flush(); |
|
| 650 | + if ( ! empty( $data['plugins'] ) ) { |
|
| 651 | + include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 652 | + wp_cache_flush(); |
|
| 653 | 653 | |
| 654 | - foreach ( $data['plugins'] as $slug => $file ) { |
|
| 655 | - $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip' ); |
|
| 656 | - $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 657 | - $installed = $upgrader->install( $plugin_zip ); |
|
| 654 | + foreach ( $data['plugins'] as $slug => $file ) { |
|
| 655 | + $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip' ); |
|
| 656 | + $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 657 | + $installed = $upgrader->install( $plugin_zip ); |
|
| 658 | 658 | |
| 659 | - if ( ! is_wp_error( $installed ) && $installed ) { |
|
| 660 | - activate_plugin( $file, '', false, true ); |
|
| 661 | - } else { |
|
| 662 | - wpinv_error_log( $upgrader->skin->get_upgrade_messages(), false ); |
|
| 663 | - } |
|
| 659 | + if ( ! is_wp_error( $installed ) && $installed ) { |
|
| 660 | + activate_plugin( $file, '', false, true ); |
|
| 661 | + } else { |
|
| 662 | + wpinv_error_log( $upgrader->skin->get_upgrade_messages(), false ); |
|
| 663 | + } |
|
| 664 | 664 | |
| 665 | - } |
|
| 665 | + } |
|
| 666 | 666 | |
| 667 | - } |
|
| 667 | + } |
|
| 668 | 668 | |
| 669 | - $redirect = isset( $data['redirect'] ) ? esc_url_raw( $data['redirect'] ) : admin_url( 'plugins.php' ); |
|
| 670 | - wp_safe_redirect( $redirect ); |
|
| 671 | - exit; |
|
| 669 | + $redirect = isset( $data['redirect'] ) ? esc_url_raw( $data['redirect'] ) : admin_url( 'plugins.php' ); |
|
| 670 | + wp_safe_redirect( $redirect ); |
|
| 671 | + exit; |
|
| 672 | 672 | |
| 673 | - } |
|
| 673 | + } |
|
| 674 | 674 | |
| 675 | - /** |
|
| 675 | + /** |
|
| 676 | 676 | * Connects a gateway. |
| 677 | - * |
|
| 678 | - * @param array $data |
|
| 677 | + * |
|
| 678 | + * @param array $data |
|
| 679 | 679 | */ |
| 680 | 680 | public function admin_connect_gateway( $data ) { |
| 681 | 681 | |
| 682 | - if ( ! empty( $data['plugin'] ) ) { |
|
| 682 | + if ( ! empty( $data['plugin'] ) ) { |
|
| 683 | 683 | |
| 684 | - $gateway = sanitize_key( $data['plugin'] ); |
|
| 685 | - $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 684 | + $gateway = sanitize_key( $data['plugin'] ); |
|
| 685 | + $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 686 | 686 | |
| 687 | - if ( ! empty( $connect_url ) ) { |
|
| 688 | - wp_redirect( $connect_url ); |
|
| 689 | - exit; |
|
| 690 | - } |
|
| 687 | + if ( ! empty( $connect_url ) ) { |
|
| 688 | + wp_redirect( $connect_url ); |
|
| 689 | + exit; |
|
| 690 | + } |
|
| 691 | 691 | |
| 692 | - if ( 'stripe' == $data['plugin'] ) { |
|
| 693 | - require_once ABSPATH . 'wp-admin/includes/plugin.php'; |
|
| 694 | - include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 695 | - wp_cache_flush(); |
|
| 692 | + if ( 'stripe' == $data['plugin'] ) { |
|
| 693 | + require_once ABSPATH . 'wp-admin/includes/plugin.php'; |
|
| 694 | + include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 695 | + wp_cache_flush(); |
|
| 696 | 696 | |
| 697 | - if ( ! array_key_exists( 'getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins() ) ) { |
|
| 698 | - $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip' ); |
|
| 699 | - $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 700 | - $upgrader->install( $plugin_zip ); |
|
| 701 | - } |
|
| 697 | + if ( ! array_key_exists( 'getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins() ) ) { |
|
| 698 | + $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip' ); |
|
| 699 | + $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 700 | + $upgrader->install( $plugin_zip ); |
|
| 701 | + } |
|
| 702 | 702 | |
| 703 | - activate_plugin( 'getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true ); |
|
| 704 | - } |
|
| 703 | + activate_plugin( 'getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true ); |
|
| 704 | + } |
|
| 705 | 705 | |
| 706 | - $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 707 | - if ( ! empty( $connect_url ) ) { |
|
| 708 | - wp_redirect( $connect_url ); |
|
| 709 | - exit; |
|
| 710 | - } |
|
| 706 | + $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 707 | + if ( ! empty( $connect_url ) ) { |
|
| 708 | + wp_redirect( $connect_url ); |
|
| 709 | + exit; |
|
| 710 | + } |
|
| 711 | 711 | |
| 712 | - } |
|
| 712 | + } |
|
| 713 | 713 | |
| 714 | - $redirect = isset( $data['redirect'] ) ? esc_url_raw( urldecode( $data['redirect'] ) ) : admin_url( 'admin.php?page=wpinv-settings&tab=gateways' ); |
|
| 715 | - wp_safe_redirect( $redirect ); |
|
| 716 | - exit; |
|
| 714 | + $redirect = isset( $data['redirect'] ) ? esc_url_raw( urldecode( $data['redirect'] ) ) : admin_url( 'admin.php?page=wpinv-settings&tab=gateways' ); |
|
| 715 | + wp_safe_redirect( $redirect ); |
|
| 716 | + exit; |
|
| 717 | 717 | |
| 718 | - } |
|
| 718 | + } |
|
| 719 | 719 | |
| 720 | - /** |
|
| 720 | + /** |
|
| 721 | 721 | * Recalculates discounts. |
| 722 | - * |
|
| 722 | + * |
|
| 723 | 723 | */ |
| 724 | 724 | public function admin_recalculate_discounts() { |
| 725 | - global $wpdb; |
|
| 725 | + global $wpdb; |
|
| 726 | 726 | |
| 727 | - // Fetch all invoices that have discount codes. |
|
| 728 | - $table = $wpdb->prefix . 'getpaid_invoices'; |
|
| 729 | - $invoices = $wpdb->get_col( "SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''" ); |
|
| 727 | + // Fetch all invoices that have discount codes. |
|
| 728 | + $table = $wpdb->prefix . 'getpaid_invoices'; |
|
| 729 | + $invoices = $wpdb->get_col( "SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''" ); |
|
| 730 | 730 | |
| 731 | - foreach ( $invoices as $invoice ) { |
|
| 731 | + foreach ( $invoices as $invoice ) { |
|
| 732 | 732 | |
| 733 | - $invoice = new WPInv_Invoice( $invoice ); |
|
| 733 | + $invoice = new WPInv_Invoice( $invoice ); |
|
| 734 | 734 | |
| 735 | - if ( ! $invoice->exists() ) { |
|
| 736 | - continue; |
|
| 737 | - } |
|
| 735 | + if ( ! $invoice->exists() ) { |
|
| 736 | + continue; |
|
| 737 | + } |
|
| 738 | 738 | |
| 739 | - // Abort if the discount does not exist or does not apply here. |
|
| 740 | - $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 741 | - if ( ! $discount->exists() ) { |
|
| 742 | - continue; |
|
| 743 | - } |
|
| 739 | + // Abort if the discount does not exist or does not apply here. |
|
| 740 | + $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 741 | + if ( ! $discount->exists() ) { |
|
| 742 | + continue; |
|
| 743 | + } |
|
| 744 | 744 | |
| 745 | - $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 746 | - $invoice->recalculate_total(); |
|
| 745 | + $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 746 | + $invoice->recalculate_total(); |
|
| 747 | 747 | |
| 748 | - if ( $invoice->get_total_discount() > 0 ) { |
|
| 749 | - $invoice->save(); |
|
| 750 | - } |
|
| 748 | + if ( $invoice->get_total_discount() > 0 ) { |
|
| 749 | + $invoice->save(); |
|
| 750 | + } |
|
| 751 | 751 | |
| 752 | - } |
|
| 752 | + } |
|
| 753 | 753 | |
| 754 | - // Show an admin message. |
|
| 755 | - $this->show_success( __( 'Discounts have been recalculated.', 'invoicing' ) ); |
|
| 754 | + // Show an admin message. |
|
| 755 | + $this->show_success( __( 'Discounts have been recalculated.', 'invoicing' ) ); |
|
| 756 | 756 | |
| 757 | - // Redirect the admin. |
|
| 758 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 759 | - exit; |
|
| 757 | + // Redirect the admin. |
|
| 758 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 759 | + exit; |
|
| 760 | 760 | |
| 761 | - } |
|
| 761 | + } |
|
| 762 | 762 | |
| 763 | 763 | /** |
| 764 | - * Returns an array of admin notices. |
|
| 765 | - * |
|
| 766 | - * @since 1.0.19 |
|
| 764 | + * Returns an array of admin notices. |
|
| 765 | + * |
|
| 766 | + * @since 1.0.19 |
|
| 767 | 767 | * @return array |
| 768 | - */ |
|
| 769 | - public function get_notices() { |
|
| 770 | - $notices = get_option( 'wpinv_admin_notices' ); |
|
| 768 | + */ |
|
| 769 | + public function get_notices() { |
|
| 770 | + $notices = get_option( 'wpinv_admin_notices' ); |
|
| 771 | 771 | return is_array( $notices ) ? $notices : array(); |
| 772 | - } |
|
| 772 | + } |
|
| 773 | 773 | |
| 774 | - /** |
|
| 775 | - * Checks if we have any admin notices. |
|
| 776 | - * |
|
| 777 | - * @since 2.0.4 |
|
| 774 | + /** |
|
| 775 | + * Checks if we have any admin notices. |
|
| 776 | + * |
|
| 777 | + * @since 2.0.4 |
|
| 778 | 778 | * @return array |
| 779 | - */ |
|
| 780 | - public function has_notices() { |
|
| 781 | - return count( $this->get_notices() ) > 0; |
|
| 782 | - } |
|
| 783 | - |
|
| 784 | - /** |
|
| 785 | - * Clears all admin notices |
|
| 786 | - * |
|
| 787 | - * @access public |
|
| 788 | - * @since 1.0.19 |
|
| 789 | - */ |
|
| 790 | - public function clear_notices() { |
|
| 791 | - delete_option( 'wpinv_admin_notices' ); |
|
| 792 | - } |
|
| 793 | - |
|
| 794 | - /** |
|
| 795 | - * Saves a new admin notice |
|
| 796 | - * |
|
| 797 | - * @access public |
|
| 798 | - * @since 1.0.19 |
|
| 799 | - */ |
|
| 800 | - public function save_notice( $type, $message ) { |
|
| 801 | - $notices = $this->get_notices(); |
|
| 802 | - |
|
| 803 | - if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ]) ) { |
|
| 804 | - $notices[ $type ] = array(); |
|
| 805 | - } |
|
| 806 | - |
|
| 807 | - $notices[ $type ][] = $message; |
|
| 808 | - |
|
| 809 | - update_option( 'wpinv_admin_notices', $notices ); |
|
| 810 | - } |
|
| 811 | - |
|
| 812 | - /** |
|
| 813 | - * Displays a success notice |
|
| 814 | - * |
|
| 815 | - * @param string $msg The message to qeue. |
|
| 816 | - * @access public |
|
| 817 | - * @since 1.0.19 |
|
| 818 | - */ |
|
| 819 | - public function show_success( $msg ) { |
|
| 820 | - $this->save_notice( 'success', $msg ); |
|
| 821 | - } |
|
| 822 | - |
|
| 823 | - /** |
|
| 824 | - * Displays a error notice |
|
| 825 | - * |
|
| 826 | - * @access public |
|
| 827 | - * @param string $msg The message to qeue. |
|
| 828 | - * @since 1.0.19 |
|
| 829 | - */ |
|
| 830 | - public function show_error( $msg ) { |
|
| 831 | - $this->save_notice( 'error', $msg ); |
|
| 832 | - } |
|
| 833 | - |
|
| 834 | - /** |
|
| 835 | - * Displays a warning notice |
|
| 836 | - * |
|
| 837 | - * @access public |
|
| 838 | - * @param string $msg The message to qeue. |
|
| 839 | - * @since 1.0.19 |
|
| 840 | - */ |
|
| 841 | - public function show_warning( $msg ) { |
|
| 842 | - $this->save_notice( 'warning', $msg ); |
|
| 843 | - } |
|
| 844 | - |
|
| 845 | - /** |
|
| 846 | - * Displays a info notice |
|
| 847 | - * |
|
| 848 | - * @access public |
|
| 849 | - * @param string $msg The message to qeue. |
|
| 850 | - * @since 1.0.19 |
|
| 851 | - */ |
|
| 852 | - public function show_info( $msg ) { |
|
| 853 | - $this->save_notice( 'info', $msg ); |
|
| 854 | - } |
|
| 855 | - |
|
| 856 | - /** |
|
| 857 | - * Show notices |
|
| 858 | - * |
|
| 859 | - * @access public |
|
| 860 | - * @since 1.0.19 |
|
| 861 | - */ |
|
| 862 | - public function show_notices() { |
|
| 779 | + */ |
|
| 780 | + public function has_notices() { |
|
| 781 | + return count( $this->get_notices() ) > 0; |
|
| 782 | + } |
|
| 783 | + |
|
| 784 | + /** |
|
| 785 | + * Clears all admin notices |
|
| 786 | + * |
|
| 787 | + * @access public |
|
| 788 | + * @since 1.0.19 |
|
| 789 | + */ |
|
| 790 | + public function clear_notices() { |
|
| 791 | + delete_option( 'wpinv_admin_notices' ); |
|
| 792 | + } |
|
| 793 | + |
|
| 794 | + /** |
|
| 795 | + * Saves a new admin notice |
|
| 796 | + * |
|
| 797 | + * @access public |
|
| 798 | + * @since 1.0.19 |
|
| 799 | + */ |
|
| 800 | + public function save_notice( $type, $message ) { |
|
| 801 | + $notices = $this->get_notices(); |
|
| 802 | + |
|
| 803 | + if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ]) ) { |
|
| 804 | + $notices[ $type ] = array(); |
|
| 805 | + } |
|
| 806 | + |
|
| 807 | + $notices[ $type ][] = $message; |
|
| 808 | + |
|
| 809 | + update_option( 'wpinv_admin_notices', $notices ); |
|
| 810 | + } |
|
| 811 | + |
|
| 812 | + /** |
|
| 813 | + * Displays a success notice |
|
| 814 | + * |
|
| 815 | + * @param string $msg The message to qeue. |
|
| 816 | + * @access public |
|
| 817 | + * @since 1.0.19 |
|
| 818 | + */ |
|
| 819 | + public function show_success( $msg ) { |
|
| 820 | + $this->save_notice( 'success', $msg ); |
|
| 821 | + } |
|
| 822 | + |
|
| 823 | + /** |
|
| 824 | + * Displays a error notice |
|
| 825 | + * |
|
| 826 | + * @access public |
|
| 827 | + * @param string $msg The message to qeue. |
|
| 828 | + * @since 1.0.19 |
|
| 829 | + */ |
|
| 830 | + public function show_error( $msg ) { |
|
| 831 | + $this->save_notice( 'error', $msg ); |
|
| 832 | + } |
|
| 833 | + |
|
| 834 | + /** |
|
| 835 | + * Displays a warning notice |
|
| 836 | + * |
|
| 837 | + * @access public |
|
| 838 | + * @param string $msg The message to qeue. |
|
| 839 | + * @since 1.0.19 |
|
| 840 | + */ |
|
| 841 | + public function show_warning( $msg ) { |
|
| 842 | + $this->save_notice( 'warning', $msg ); |
|
| 843 | + } |
|
| 844 | + |
|
| 845 | + /** |
|
| 846 | + * Displays a info notice |
|
| 847 | + * |
|
| 848 | + * @access public |
|
| 849 | + * @param string $msg The message to qeue. |
|
| 850 | + * @since 1.0.19 |
|
| 851 | + */ |
|
| 852 | + public function show_info( $msg ) { |
|
| 853 | + $this->save_notice( 'info', $msg ); |
|
| 854 | + } |
|
| 855 | + |
|
| 856 | + /** |
|
| 857 | + * Show notices |
|
| 858 | + * |
|
| 859 | + * @access public |
|
| 860 | + * @since 1.0.19 |
|
| 861 | + */ |
|
| 862 | + public function show_notices() { |
|
| 863 | 863 | |
| 864 | 864 | $notices = $this->get_notices(); |
| 865 | 865 | $this->clear_notices(); |
| 866 | 866 | |
| 867 | - foreach ( $notices as $type => $messages ) { |
|
| 867 | + foreach ( $notices as $type => $messages ) { |
|
| 868 | 868 | |
| 869 | - if ( ! is_array( $messages ) ) { |
|
| 870 | - continue; |
|
| 871 | - } |
|
| 869 | + if ( ! is_array( $messages ) ) { |
|
| 870 | + continue; |
|
| 871 | + } |
|
| 872 | 872 | |
| 873 | 873 | $type = sanitize_key( $type ); |
| 874 | - foreach ( $messages as $message ) { |
|
| 874 | + foreach ( $messages as $message ) { |
|
| 875 | 875 | $message = wp_kses_post( $message ); |
| 876 | - echo "<div class='notice notice-$type is-dismissible'><p>$message</p></div>"; |
|
| 876 | + echo "<div class='notice notice-$type is-dismissible'><p>$message</p></div>"; |
|
| 877 | 877 | } |
| 878 | 878 | |
| 879 | 879 | } |
| 880 | 880 | |
| 881 | - foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) { |
|
| 882 | - |
|
| 883 | - if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) { |
|
| 884 | - $url = wp_nonce_url( |
|
| 885 | - add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ), |
|
| 886 | - 'getpaid-nonce', |
|
| 887 | - 'getpaid-nonce' |
|
| 888 | - ); |
|
| 889 | - $message = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' ); |
|
| 890 | - $message2 = __( 'Generate Pages', 'invoicing' ); |
|
| 891 | - echo "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>"; |
|
| 892 | - break; |
|
| 893 | - } |
|
| 881 | + foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) { |
|
| 882 | + |
|
| 883 | + if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) { |
|
| 884 | + $url = wp_nonce_url( |
|
| 885 | + add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ), |
|
| 886 | + 'getpaid-nonce', |
|
| 887 | + 'getpaid-nonce' |
|
| 888 | + ); |
|
| 889 | + $message = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' ); |
|
| 890 | + $message2 = __( 'Generate Pages', 'invoicing' ); |
|
| 891 | + echo "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>"; |
|
| 892 | + break; |
|
| 893 | + } |
|
| 894 | 894 | |
| 895 | - } |
|
| 895 | + } |
|
| 896 | 896 | |
| 897 | - } |
|
| 897 | + } |
|
| 898 | 898 | |
| 899 | 899 | } |
@@ -1,103 +1,103 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | if ( ! defined( 'ABSPATH' ) ) { |
| 4 | - exit; |
|
| 4 | + exit; |
|
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | if ( ! class_exists( 'AyeCode_Deactivation_Survey' ) ) { |
| 8 | 8 | |
| 9 | - class AyeCode_Deactivation_Survey { |
|
| 9 | + class AyeCode_Deactivation_Survey { |
|
| 10 | 10 | |
| 11 | - /** |
|
| 12 | - * AyeCode_Deactivation_Survey instance. |
|
| 13 | - * |
|
| 14 | - * @access private |
|
| 15 | - * @since 1.0.0 |
|
| 16 | - * @var AyeCode_Deactivation_Survey There can be only one! |
|
| 17 | - */ |
|
| 18 | - private static $instance = null; |
|
| 11 | + /** |
|
| 12 | + * AyeCode_Deactivation_Survey instance. |
|
| 13 | + * |
|
| 14 | + * @access private |
|
| 15 | + * @since 1.0.0 |
|
| 16 | + * @var AyeCode_Deactivation_Survey There can be only one! |
|
| 17 | + */ |
|
| 18 | + private static $instance = null; |
|
| 19 | 19 | |
| 20 | - public static $plugins; |
|
| 20 | + public static $plugins; |
|
| 21 | 21 | |
| 22 | - public $version = "1.0.4"; |
|
| 22 | + public $version = "1.0.4"; |
|
| 23 | 23 | |
| 24 | - public static function instance( $plugin = array() ) { |
|
| 25 | - if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_Deactivation_Survey ) ) { |
|
| 26 | - self::$instance = new AyeCode_Deactivation_Survey; |
|
| 27 | - self::$plugins = array(); |
|
| 24 | + public static function instance( $plugin = array() ) { |
|
| 25 | + if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_Deactivation_Survey ) ) { |
|
| 26 | + self::$instance = new AyeCode_Deactivation_Survey; |
|
| 27 | + self::$plugins = array(); |
|
| 28 | 28 | |
| 29 | - add_action( 'admin_enqueue_scripts', array( self::$instance, 'scripts' ) ); |
|
| 29 | + add_action( 'admin_enqueue_scripts', array( self::$instance, 'scripts' ) ); |
|
| 30 | 30 | |
| 31 | - do_action( 'ayecode_deactivation_survey_loaded' ); |
|
| 32 | - } |
|
| 31 | + do_action( 'ayecode_deactivation_survey_loaded' ); |
|
| 32 | + } |
|
| 33 | 33 | |
| 34 | - if(!empty($plugin)){ |
|
| 35 | - self::$plugins[] = (object)$plugin; |
|
| 36 | - } |
|
| 34 | + if(!empty($plugin)){ |
|
| 35 | + self::$plugins[] = (object)$plugin; |
|
| 36 | + } |
|
| 37 | 37 | |
| 38 | - return self::$instance; |
|
| 39 | - } |
|
| 38 | + return self::$instance; |
|
| 39 | + } |
|
| 40 | 40 | |
| 41 | - public function scripts() { |
|
| 42 | - global $pagenow; |
|
| 41 | + public function scripts() { |
|
| 42 | + global $pagenow; |
|
| 43 | 43 | |
| 44 | - // Bail if we are not on the plugins page |
|
| 45 | - if ( $pagenow != "plugins.php" ) { |
|
| 46 | - return; |
|
| 47 | - } |
|
| 44 | + // Bail if we are not on the plugins page |
|
| 45 | + if ( $pagenow != "plugins.php" ) { |
|
| 46 | + return; |
|
| 47 | + } |
|
| 48 | 48 | |
| 49 | - // Enqueue scripts |
|
| 50 | - add_thickbox(); |
|
| 51 | - wp_enqueue_script('ayecode-deactivation-survey', plugin_dir_url(__FILE__) . 'ayecode-ds.js'); |
|
| 49 | + // Enqueue scripts |
|
| 50 | + add_thickbox(); |
|
| 51 | + wp_enqueue_script('ayecode-deactivation-survey', plugin_dir_url(__FILE__) . 'ayecode-ds.js'); |
|
| 52 | 52 | |
| 53 | - /* |
|
| 53 | + /* |
|
| 54 | 54 | * Localized strings. Strings can be localised by plugins using this class. |
| 55 | 55 | * We deliberately don't add textdomains here so that double textdomain warning is not given in theme review. |
| 56 | 56 | */ |
| 57 | - wp_localize_script('ayecode-deactivation-survey', 'ayecodeds_deactivate_feedback_form_strings', array( |
|
| 58 | - 'quick_feedback' => 'Quick Feedback', |
|
| 59 | - 'foreword' => 'If you would be kind enough, please tell us why you\'re deactivating?', |
|
| 60 | - 'better_plugins_name' => 'Please tell us which plugin?', |
|
| 61 | - 'please_tell_us' => 'Please tell us the reason so we can improve the plugin', |
|
| 62 | - 'do_not_attach_email' => 'Do not send my e-mail address with this feedback', |
|
| 63 | - 'brief_description' => 'Please give us any feedback that could help us improve', |
|
| 64 | - 'cancel' => 'Cancel', |
|
| 65 | - 'skip_and_deactivate' => 'Skip & Deactivate', |
|
| 66 | - 'submit_and_deactivate' => 'Submit & Deactivate', |
|
| 67 | - 'please_wait' => 'Please wait', |
|
| 68 | - 'get_support' => 'Get Support', |
|
| 69 | - 'documentation' => 'Documentation', |
|
| 70 | - 'thank_you' => 'Thank you!', |
|
| 71 | - )); |
|
| 72 | - |
|
| 73 | - // Plugins |
|
| 74 | - $plugins = apply_filters('ayecode_deactivation_survey_plugins', self::$plugins); |
|
| 75 | - |
|
| 76 | - // Reasons |
|
| 77 | - $defaultReasons = array( |
|
| 78 | - 'suddenly-stopped-working' => 'The plugin suddenly stopped working', |
|
| 79 | - 'plugin-broke-site' => 'The plugin broke my site', |
|
| 80 | - 'plugin-setup-difficult' => 'Too difficult to setup', |
|
| 81 | - 'plugin-design-difficult' => 'Too difficult to get the design i want', |
|
| 82 | - 'no-longer-needed' => 'I don\'t need this plugin any more', |
|
| 83 | - 'found-better-plugin' => 'I found a better plugin', |
|
| 84 | - 'temporary-deactivation' => 'It\'s a temporary deactivation, I\'m troubleshooting', |
|
| 85 | - 'other' => 'Other', |
|
| 86 | - ); |
|
| 87 | - |
|
| 88 | - foreach($plugins as $plugin) |
|
| 89 | - { |
|
| 90 | - $plugin->reasons = apply_filters('ayecode_deactivation_survey_reasons', $defaultReasons, $plugin); |
|
| 91 | - $plugin->url = home_url(); |
|
| 92 | - $plugin->activated = 0; |
|
| 93 | - } |
|
| 94 | - |
|
| 95 | - // Send plugin data |
|
| 96 | - wp_localize_script('ayecode-deactivation-survey', 'ayecodeds_deactivate_feedback_form_plugins', $plugins); |
|
| 97 | - |
|
| 98 | - } |
|
| 57 | + wp_localize_script('ayecode-deactivation-survey', 'ayecodeds_deactivate_feedback_form_strings', array( |
|
| 58 | + 'quick_feedback' => 'Quick Feedback', |
|
| 59 | + 'foreword' => 'If you would be kind enough, please tell us why you\'re deactivating?', |
|
| 60 | + 'better_plugins_name' => 'Please tell us which plugin?', |
|
| 61 | + 'please_tell_us' => 'Please tell us the reason so we can improve the plugin', |
|
| 62 | + 'do_not_attach_email' => 'Do not send my e-mail address with this feedback', |
|
| 63 | + 'brief_description' => 'Please give us any feedback that could help us improve', |
|
| 64 | + 'cancel' => 'Cancel', |
|
| 65 | + 'skip_and_deactivate' => 'Skip & Deactivate', |
|
| 66 | + 'submit_and_deactivate' => 'Submit & Deactivate', |
|
| 67 | + 'please_wait' => 'Please wait', |
|
| 68 | + 'get_support' => 'Get Support', |
|
| 69 | + 'documentation' => 'Documentation', |
|
| 70 | + 'thank_you' => 'Thank you!', |
|
| 71 | + )); |
|
| 72 | + |
|
| 73 | + // Plugins |
|
| 74 | + $plugins = apply_filters('ayecode_deactivation_survey_plugins', self::$plugins); |
|
| 75 | + |
|
| 76 | + // Reasons |
|
| 77 | + $defaultReasons = array( |
|
| 78 | + 'suddenly-stopped-working' => 'The plugin suddenly stopped working', |
|
| 79 | + 'plugin-broke-site' => 'The plugin broke my site', |
|
| 80 | + 'plugin-setup-difficult' => 'Too difficult to setup', |
|
| 81 | + 'plugin-design-difficult' => 'Too difficult to get the design i want', |
|
| 82 | + 'no-longer-needed' => 'I don\'t need this plugin any more', |
|
| 83 | + 'found-better-plugin' => 'I found a better plugin', |
|
| 84 | + 'temporary-deactivation' => 'It\'s a temporary deactivation, I\'m troubleshooting', |
|
| 85 | + 'other' => 'Other', |
|
| 86 | + ); |
|
| 87 | + |
|
| 88 | + foreach($plugins as $plugin) |
|
| 89 | + { |
|
| 90 | + $plugin->reasons = apply_filters('ayecode_deactivation_survey_reasons', $defaultReasons, $plugin); |
|
| 91 | + $plugin->url = home_url(); |
|
| 92 | + $plugin->activated = 0; |
|
| 93 | + } |
|
| 94 | + |
|
| 95 | + // Send plugin data |
|
| 96 | + wp_localize_script('ayecode-deactivation-survey', 'ayecodeds_deactivate_feedback_form_plugins', $plugins); |
|
| 97 | + |
|
| 98 | + } |
|
| 99 | 99 | |
| 100 | 100 | |
| 101 | - } |
|
| 101 | + } |
|
| 102 | 102 | |
| 103 | 103 | } |
| 104 | 104 | \ No newline at end of file |
@@ -1,6 +1,6 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | if ( ! defined( 'ABSPATH' ) ) { |
| 3 | - exit; |
|
| 3 | + exit; |
|
| 4 | 4 | } |
| 5 | 5 | |
| 6 | 6 | /** |
@@ -10,67 +10,67 @@ discard block |
||
| 10 | 10 | class GetPaid_Form_Item extends WPInv_Item { |
| 11 | 11 | |
| 12 | 12 | /** |
| 13 | - * Stores a custom description for the item. |
|
| 14 | - * |
|
| 15 | - * @var string |
|
| 16 | - */ |
|
| 17 | - protected $custom_description = null; |
|
| 18 | - |
|
| 19 | - /** |
|
| 20 | - * Stores the item quantity. |
|
| 21 | - * |
|
| 22 | - * @var float |
|
| 23 | - */ |
|
| 24 | - protected $quantity = 1; |
|
| 25 | - |
|
| 26 | - /** |
|
| 27 | - * Stores the item meta. |
|
| 28 | - * |
|
| 29 | - * @var array |
|
| 30 | - */ |
|
| 31 | - protected $meta = array(); |
|
| 32 | - |
|
| 33 | - /** |
|
| 34 | - * Is this item required? |
|
| 35 | - * |
|
| 36 | - * @var int |
|
| 37 | - */ |
|
| 38 | - protected $is_required = true; |
|
| 39 | - |
|
| 40 | - /** |
|
| 41 | - * Are quantities allowed? |
|
| 42 | - * |
|
| 43 | - * @var int |
|
| 44 | - */ |
|
| 45 | - protected $allow_quantities = false; |
|
| 46 | - |
|
| 47 | - /** |
|
| 48 | - * Associated invoice. |
|
| 49 | - * |
|
| 50 | - * @var int |
|
| 51 | - */ |
|
| 52 | - public $invoice_id = 0; |
|
| 53 | - |
|
| 54 | - /** |
|
| 55 | - * Item discount. |
|
| 56 | - * |
|
| 57 | - * @var float |
|
| 58 | - */ |
|
| 59 | - public $item_discount = 0; |
|
| 60 | - |
|
| 61 | - /** |
|
| 62 | - * Recurring item discount. |
|
| 63 | - * |
|
| 64 | - * @var float |
|
| 65 | - */ |
|
| 66 | - public $recurring_item_discount = 0; |
|
| 67 | - |
|
| 68 | - /** |
|
| 69 | - * Item tax. |
|
| 70 | - * |
|
| 71 | - * @var float |
|
| 72 | - */ |
|
| 73 | - public $item_tax = 0; |
|
| 13 | + * Stores a custom description for the item. |
|
| 14 | + * |
|
| 15 | + * @var string |
|
| 16 | + */ |
|
| 17 | + protected $custom_description = null; |
|
| 18 | + |
|
| 19 | + /** |
|
| 20 | + * Stores the item quantity. |
|
| 21 | + * |
|
| 22 | + * @var float |
|
| 23 | + */ |
|
| 24 | + protected $quantity = 1; |
|
| 25 | + |
|
| 26 | + /** |
|
| 27 | + * Stores the item meta. |
|
| 28 | + * |
|
| 29 | + * @var array |
|
| 30 | + */ |
|
| 31 | + protected $meta = array(); |
|
| 32 | + |
|
| 33 | + /** |
|
| 34 | + * Is this item required? |
|
| 35 | + * |
|
| 36 | + * @var int |
|
| 37 | + */ |
|
| 38 | + protected $is_required = true; |
|
| 39 | + |
|
| 40 | + /** |
|
| 41 | + * Are quantities allowed? |
|
| 42 | + * |
|
| 43 | + * @var int |
|
| 44 | + */ |
|
| 45 | + protected $allow_quantities = false; |
|
| 46 | + |
|
| 47 | + /** |
|
| 48 | + * Associated invoice. |
|
| 49 | + * |
|
| 50 | + * @var int |
|
| 51 | + */ |
|
| 52 | + public $invoice_id = 0; |
|
| 53 | + |
|
| 54 | + /** |
|
| 55 | + * Item discount. |
|
| 56 | + * |
|
| 57 | + * @var float |
|
| 58 | + */ |
|
| 59 | + public $item_discount = 0; |
|
| 60 | + |
|
| 61 | + /** |
|
| 62 | + * Recurring item discount. |
|
| 63 | + * |
|
| 64 | + * @var float |
|
| 65 | + */ |
|
| 66 | + public $recurring_item_discount = 0; |
|
| 67 | + |
|
| 68 | + /** |
|
| 69 | + * Item tax. |
|
| 70 | + * |
|
| 71 | + * @var float |
|
| 72 | + */ |
|
| 73 | + public $item_tax = 0; |
|
| 74 | 74 | |
| 75 | 75 | /* |
| 76 | 76 | |-------------------------------------------------------------------------- |
@@ -88,230 +88,230 @@ discard block |
||
| 88 | 88 | */ |
| 89 | 89 | |
| 90 | 90 | /** |
| 91 | - * Get the item name. |
|
| 92 | - * |
|
| 93 | - * @since 1.0.19 |
|
| 94 | - * @param string $context View or edit context. |
|
| 95 | - * @return string |
|
| 96 | - */ |
|
| 97 | - public function get_name( $context = 'view' ) { |
|
| 98 | - $name = parent::get_name( $context ); |
|
| 99 | - return $name . wpinv_get_item_suffix( $this ); |
|
| 100 | - } |
|
| 101 | - |
|
| 102 | - /** |
|
| 103 | - * Get the item name without a suffix. |
|
| 104 | - * |
|
| 105 | - * @since 1.0.19 |
|
| 106 | - * @param string $context View or edit context. |
|
| 107 | - * @return string |
|
| 108 | - */ |
|
| 109 | - public function get_raw_name( $context = 'view' ) { |
|
| 110 | - return parent::get_name( $context ); |
|
| 111 | - } |
|
| 112 | - |
|
| 113 | - /** |
|
| 114 | - * Get the item description. |
|
| 115 | - * |
|
| 116 | - * @since 1.0.19 |
|
| 117 | - * @param string $context View or edit context. |
|
| 118 | - * @return string |
|
| 119 | - */ |
|
| 120 | - public function get_description( $context = 'view' ) { |
|
| 121 | - |
|
| 122 | - if ( isset( $this->custom_description ) ) { |
|
| 123 | - return $this->custom_description; |
|
| 124 | - } |
|
| 125 | - |
|
| 126 | - return parent::get_description( $context ); |
|
| 127 | - } |
|
| 128 | - |
|
| 129 | - /** |
|
| 130 | - * Returns the sub total. |
|
| 131 | - * |
|
| 132 | - * @since 1.0.19 |
|
| 133 | - * @param string $context View or edit context. |
|
| 134 | - * @return float |
|
| 135 | - */ |
|
| 136 | - public function get_sub_total( $context = 'view' ) { |
|
| 137 | - return $this->get_quantity( $context ) * $this->get_initial_price( $context ); |
|
| 138 | - } |
|
| 139 | - |
|
| 140 | - /** |
|
| 141 | - * Returns the recurring sub total. |
|
| 142 | - * |
|
| 143 | - * @since 1.0.19 |
|
| 144 | - * @param string $context View or edit context. |
|
| 145 | - * @return float |
|
| 146 | - */ |
|
| 147 | - public function get_recurring_sub_total( $context = 'view' ) { |
|
| 148 | - |
|
| 149 | - if ( $this->is_recurring() ) { |
|
| 150 | - return $this->get_quantity( $context ) * $this->get_price( $context ); |
|
| 151 | - } |
|
| 152 | - |
|
| 153 | - return 0; |
|
| 154 | - } |
|
| 155 | - |
|
| 156 | - /** |
|
| 157 | - * @deprecated |
|
| 158 | - */ |
|
| 159 | - public function get_qantity( $context = 'view' ) { |
|
| 160 | - return $this->get_quantity( $context ); |
|
| 161 | - } |
|
| 162 | - |
|
| 163 | - /** |
|
| 164 | - * Get the item quantity. |
|
| 165 | - * |
|
| 166 | - * @since 1.0.19 |
|
| 167 | - * @param string $context View or edit context. |
|
| 168 | - * @return float |
|
| 169 | - */ |
|
| 170 | - public function get_quantity( $context = 'view' ) { |
|
| 171 | - $quantity = (float) $this->quantity; |
|
| 172 | - |
|
| 173 | - if ( 'view' == $context ) { |
|
| 174 | - return apply_filters( 'getpaid_payment_form_item_quantity', $quantity, $this ); |
|
| 175 | - } |
|
| 176 | - |
|
| 177 | - return $quantity; |
|
| 178 | - |
|
| 179 | - } |
|
| 180 | - |
|
| 181 | - /** |
|
| 182 | - * Get the item meta data. |
|
| 183 | - * |
|
| 184 | - * @since 1.0.19 |
|
| 185 | - * @param string $context View or edit context. |
|
| 186 | - * @return meta |
|
| 187 | - */ |
|
| 188 | - public function get_item_meta( $context = 'view' ) { |
|
| 189 | - $meta = $this->meta; |
|
| 190 | - |
|
| 191 | - if ( 'view' == $context ) { |
|
| 192 | - return apply_filters( 'getpaid_payment_form_item_meta', $meta, $this ); |
|
| 193 | - } |
|
| 194 | - |
|
| 195 | - return $meta; |
|
| 196 | - |
|
| 197 | - } |
|
| 198 | - |
|
| 199 | - /** |
|
| 200 | - * Returns whether or not customers can update the item quantity. |
|
| 201 | - * |
|
| 202 | - * @since 1.0.19 |
|
| 203 | - * @param string $context View or edit context. |
|
| 204 | - * @return bool |
|
| 205 | - */ |
|
| 206 | - public function get_allow_quantities( $context = 'view' ) { |
|
| 207 | - $allow_quantities = (bool) $this->allow_quantities; |
|
| 208 | - |
|
| 209 | - if ( 'view' == $context ) { |
|
| 210 | - return apply_filters( 'getpaid_payment_form_item_allow_quantities', $allow_quantities, $this ); |
|
| 211 | - } |
|
| 212 | - |
|
| 213 | - return $allow_quantities; |
|
| 214 | - |
|
| 215 | - } |
|
| 216 | - |
|
| 217 | - /** |
|
| 218 | - * Returns whether or not the item is required. |
|
| 219 | - * |
|
| 220 | - * @since 1.0.19 |
|
| 221 | - * @param string $context View or edit context. |
|
| 222 | - * @return bool |
|
| 223 | - */ |
|
| 224 | - public function get_is_required( $context = 'view' ) { |
|
| 225 | - $is_required = (bool) $this->is_required; |
|
| 226 | - |
|
| 227 | - if ( 'view' == $context ) { |
|
| 228 | - return apply_filters( 'getpaid_payment_form_item_is_required', $is_required, $this ); |
|
| 229 | - } |
|
| 230 | - |
|
| 231 | - return $is_required; |
|
| 232 | - |
|
| 233 | - } |
|
| 234 | - |
|
| 235 | - /** |
|
| 236 | - * Prepares form data for use. |
|
| 237 | - * |
|
| 238 | - * @since 1.0.19 |
|
| 239 | - * @return array |
|
| 240 | - */ |
|
| 241 | - public function prepare_data_for_use( $required = null ) { |
|
| 242 | - |
|
| 243 | - $required = is_null( $required ) ? $this->is_required() : $required; |
|
| 244 | - return array( |
|
| 245 | - 'title' => strip_tags( $this->get_name() ), |
|
| 246 | - 'id' => $this->get_id(), |
|
| 247 | - 'price' => $this->get_price(), |
|
| 248 | - 'recurring' => $this->is_recurring(), |
|
| 249 | - 'description' => $this->get_description(), |
|
| 250 | - 'allow_quantities' => $this->allows_quantities(), |
|
| 251 | - 'required' => $required, |
|
| 252 | - ); |
|
| 253 | - |
|
| 254 | - } |
|
| 255 | - |
|
| 256 | - /** |
|
| 257 | - * Prepares form data for ajax use. |
|
| 258 | - * |
|
| 259 | - * @since 1.0.19 |
|
| 260 | - * @return array |
|
| 261 | - */ |
|
| 262 | - public function prepare_data_for_invoice_edit_ajax( $currency = '', $is_renewal = false ) { |
|
| 263 | - |
|
| 264 | - $description = getpaid_item_recurring_price_help_text( $this, $currency ); |
|
| 265 | - |
|
| 266 | - if ( $description ) { |
|
| 267 | - $description = "<div class='getpaid-subscription-help-text'>$description</div>"; |
|
| 268 | - } |
|
| 269 | - |
|
| 270 | - $price = ! $is_renewal ? $this->get_price() : $this->get_recurring_price(); |
|
| 271 | - $subtotal = ! $is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total(); |
|
| 272 | - return array( |
|
| 273 | - 'id' => $this->get_id(), |
|
| 274 | - 'texts' => array( |
|
| 275 | - 'item-name' => sanitize_text_field( $this->get_name() ), |
|
| 276 | - 'item-description' => wp_kses_post( $this->get_description() ) . $description, |
|
| 277 | - 'item-quantity' => floatval( $this->get_quantity() ), |
|
| 278 | - 'item-price' => wpinv_price( $price, $currency ), |
|
| 279 | - 'item-total' => wpinv_price( $subtotal, $currency ), |
|
| 280 | - ), |
|
| 281 | - 'inputs' => array( |
|
| 282 | - 'item-id' => $this->get_id(), |
|
| 283 | - 'item-name' => sanitize_text_field( $this->get_name() ), |
|
| 284 | - 'item-description' => wp_kses_post( $this->get_description() ), |
|
| 285 | - 'item-quantity' => floatval( $this->get_quantity() ), |
|
| 286 | - 'item-price' => $price, |
|
| 287 | - ) |
|
| 288 | - ); |
|
| 289 | - |
|
| 290 | - } |
|
| 291 | - |
|
| 292 | - /** |
|
| 293 | - * Prepares form data for saving (cart_details). |
|
| 294 | - * |
|
| 295 | - * @since 1.0.19 |
|
| 296 | - * @return array |
|
| 297 | - */ |
|
| 298 | - public function prepare_data_for_saving() { |
|
| 299 | - |
|
| 300 | - return array( |
|
| 301 | - 'post_id' => $this->invoice_id, |
|
| 302 | - 'item_id' => $this->get_id(), |
|
| 303 | - 'item_name' => sanitize_text_field( $this->get_raw_name( 'edit' ) ), |
|
| 304 | - 'item_description' => $this->get_description( 'edit' ), |
|
| 305 | - 'tax' => $this->item_tax, |
|
| 306 | - 'item_price' => $this->get_price( 'edit' ), |
|
| 307 | - 'quantity' => (float) $this->get_quantity( 'edit' ), |
|
| 308 | - 'discount' => $this->item_discount, |
|
| 309 | - 'subtotal' => $this->get_sub_total( 'edit' ), |
|
| 310 | - 'price' => $this->get_sub_total( 'edit' ) + $this->item_tax - $this->item_discount, |
|
| 311 | - 'meta' => $this->get_item_meta( 'edit' ), |
|
| 312 | - ); |
|
| 313 | - |
|
| 314 | - } |
|
| 91 | + * Get the item name. |
|
| 92 | + * |
|
| 93 | + * @since 1.0.19 |
|
| 94 | + * @param string $context View or edit context. |
|
| 95 | + * @return string |
|
| 96 | + */ |
|
| 97 | + public function get_name( $context = 'view' ) { |
|
| 98 | + $name = parent::get_name( $context ); |
|
| 99 | + return $name . wpinv_get_item_suffix( $this ); |
|
| 100 | + } |
|
| 101 | + |
|
| 102 | + /** |
|
| 103 | + * Get the item name without a suffix. |
|
| 104 | + * |
|
| 105 | + * @since 1.0.19 |
|
| 106 | + * @param string $context View or edit context. |
|
| 107 | + * @return string |
|
| 108 | + */ |
|
| 109 | + public function get_raw_name( $context = 'view' ) { |
|
| 110 | + return parent::get_name( $context ); |
|
| 111 | + } |
|
| 112 | + |
|
| 113 | + /** |
|
| 114 | + * Get the item description. |
|
| 115 | + * |
|
| 116 | + * @since 1.0.19 |
|
| 117 | + * @param string $context View or edit context. |
|
| 118 | + * @return string |
|
| 119 | + */ |
|
| 120 | + public function get_description( $context = 'view' ) { |
|
| 121 | + |
|
| 122 | + if ( isset( $this->custom_description ) ) { |
|
| 123 | + return $this->custom_description; |
|
| 124 | + } |
|
| 125 | + |
|
| 126 | + return parent::get_description( $context ); |
|
| 127 | + } |
|
| 128 | + |
|
| 129 | + /** |
|
| 130 | + * Returns the sub total. |
|
| 131 | + * |
|
| 132 | + * @since 1.0.19 |
|
| 133 | + * @param string $context View or edit context. |
|
| 134 | + * @return float |
|
| 135 | + */ |
|
| 136 | + public function get_sub_total( $context = 'view' ) { |
|
| 137 | + return $this->get_quantity( $context ) * $this->get_initial_price( $context ); |
|
| 138 | + } |
|
| 139 | + |
|
| 140 | + /** |
|
| 141 | + * Returns the recurring sub total. |
|
| 142 | + * |
|
| 143 | + * @since 1.0.19 |
|
| 144 | + * @param string $context View or edit context. |
|
| 145 | + * @return float |
|
| 146 | + */ |
|
| 147 | + public function get_recurring_sub_total( $context = 'view' ) { |
|
| 148 | + |
|
| 149 | + if ( $this->is_recurring() ) { |
|
| 150 | + return $this->get_quantity( $context ) * $this->get_price( $context ); |
|
| 151 | + } |
|
| 152 | + |
|
| 153 | + return 0; |
|
| 154 | + } |
|
| 155 | + |
|
| 156 | + /** |
|
| 157 | + * @deprecated |
|
| 158 | + */ |
|
| 159 | + public function get_qantity( $context = 'view' ) { |
|
| 160 | + return $this->get_quantity( $context ); |
|
| 161 | + } |
|
| 162 | + |
|
| 163 | + /** |
|
| 164 | + * Get the item quantity. |
|
| 165 | + * |
|
| 166 | + * @since 1.0.19 |
|
| 167 | + * @param string $context View or edit context. |
|
| 168 | + * @return float |
|
| 169 | + */ |
|
| 170 | + public function get_quantity( $context = 'view' ) { |
|
| 171 | + $quantity = (float) $this->quantity; |
|
| 172 | + |
|
| 173 | + if ( 'view' == $context ) { |
|
| 174 | + return apply_filters( 'getpaid_payment_form_item_quantity', $quantity, $this ); |
|
| 175 | + } |
|
| 176 | + |
|
| 177 | + return $quantity; |
|
| 178 | + |
|
| 179 | + } |
|
| 180 | + |
|
| 181 | + /** |
|
| 182 | + * Get the item meta data. |
|
| 183 | + * |
|
| 184 | + * @since 1.0.19 |
|
| 185 | + * @param string $context View or edit context. |
|
| 186 | + * @return meta |
|
| 187 | + */ |
|
| 188 | + public function get_item_meta( $context = 'view' ) { |
|
| 189 | + $meta = $this->meta; |
|
| 190 | + |
|
| 191 | + if ( 'view' == $context ) { |
|
| 192 | + return apply_filters( 'getpaid_payment_form_item_meta', $meta, $this ); |
|
| 193 | + } |
|
| 194 | + |
|
| 195 | + return $meta; |
|
| 196 | + |
|
| 197 | + } |
|
| 198 | + |
|
| 199 | + /** |
|
| 200 | + * Returns whether or not customers can update the item quantity. |
|
| 201 | + * |
|
| 202 | + * @since 1.0.19 |
|
| 203 | + * @param string $context View or edit context. |
|
| 204 | + * @return bool |
|
| 205 | + */ |
|
| 206 | + public function get_allow_quantities( $context = 'view' ) { |
|
| 207 | + $allow_quantities = (bool) $this->allow_quantities; |
|
| 208 | + |
|
| 209 | + if ( 'view' == $context ) { |
|
| 210 | + return apply_filters( 'getpaid_payment_form_item_allow_quantities', $allow_quantities, $this ); |
|
| 211 | + } |
|
| 212 | + |
|
| 213 | + return $allow_quantities; |
|
| 214 | + |
|
| 215 | + } |
|
| 216 | + |
|
| 217 | + /** |
|
| 218 | + * Returns whether or not the item is required. |
|
| 219 | + * |
|
| 220 | + * @since 1.0.19 |
|
| 221 | + * @param string $context View or edit context. |
|
| 222 | + * @return bool |
|
| 223 | + */ |
|
| 224 | + public function get_is_required( $context = 'view' ) { |
|
| 225 | + $is_required = (bool) $this->is_required; |
|
| 226 | + |
|
| 227 | + if ( 'view' == $context ) { |
|
| 228 | + return apply_filters( 'getpaid_payment_form_item_is_required', $is_required, $this ); |
|
| 229 | + } |
|
| 230 | + |
|
| 231 | + return $is_required; |
|
| 232 | + |
|
| 233 | + } |
|
| 234 | + |
|
| 235 | + /** |
|
| 236 | + * Prepares form data for use. |
|
| 237 | + * |
|
| 238 | + * @since 1.0.19 |
|
| 239 | + * @return array |
|
| 240 | + */ |
|
| 241 | + public function prepare_data_for_use( $required = null ) { |
|
| 242 | + |
|
| 243 | + $required = is_null( $required ) ? $this->is_required() : $required; |
|
| 244 | + return array( |
|
| 245 | + 'title' => strip_tags( $this->get_name() ), |
|
| 246 | + 'id' => $this->get_id(), |
|
| 247 | + 'price' => $this->get_price(), |
|
| 248 | + 'recurring' => $this->is_recurring(), |
|
| 249 | + 'description' => $this->get_description(), |
|
| 250 | + 'allow_quantities' => $this->allows_quantities(), |
|
| 251 | + 'required' => $required, |
|
| 252 | + ); |
|
| 253 | + |
|
| 254 | + } |
|
| 255 | + |
|
| 256 | + /** |
|
| 257 | + * Prepares form data for ajax use. |
|
| 258 | + * |
|
| 259 | + * @since 1.0.19 |
|
| 260 | + * @return array |
|
| 261 | + */ |
|
| 262 | + public function prepare_data_for_invoice_edit_ajax( $currency = '', $is_renewal = false ) { |
|
| 263 | + |
|
| 264 | + $description = getpaid_item_recurring_price_help_text( $this, $currency ); |
|
| 265 | + |
|
| 266 | + if ( $description ) { |
|
| 267 | + $description = "<div class='getpaid-subscription-help-text'>$description</div>"; |
|
| 268 | + } |
|
| 269 | + |
|
| 270 | + $price = ! $is_renewal ? $this->get_price() : $this->get_recurring_price(); |
|
| 271 | + $subtotal = ! $is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total(); |
|
| 272 | + return array( |
|
| 273 | + 'id' => $this->get_id(), |
|
| 274 | + 'texts' => array( |
|
| 275 | + 'item-name' => sanitize_text_field( $this->get_name() ), |
|
| 276 | + 'item-description' => wp_kses_post( $this->get_description() ) . $description, |
|
| 277 | + 'item-quantity' => floatval( $this->get_quantity() ), |
|
| 278 | + 'item-price' => wpinv_price( $price, $currency ), |
|
| 279 | + 'item-total' => wpinv_price( $subtotal, $currency ), |
|
| 280 | + ), |
|
| 281 | + 'inputs' => array( |
|
| 282 | + 'item-id' => $this->get_id(), |
|
| 283 | + 'item-name' => sanitize_text_field( $this->get_name() ), |
|
| 284 | + 'item-description' => wp_kses_post( $this->get_description() ), |
|
| 285 | + 'item-quantity' => floatval( $this->get_quantity() ), |
|
| 286 | + 'item-price' => $price, |
|
| 287 | + ) |
|
| 288 | + ); |
|
| 289 | + |
|
| 290 | + } |
|
| 291 | + |
|
| 292 | + /** |
|
| 293 | + * Prepares form data for saving (cart_details). |
|
| 294 | + * |
|
| 295 | + * @since 1.0.19 |
|
| 296 | + * @return array |
|
| 297 | + */ |
|
| 298 | + public function prepare_data_for_saving() { |
|
| 299 | + |
|
| 300 | + return array( |
|
| 301 | + 'post_id' => $this->invoice_id, |
|
| 302 | + 'item_id' => $this->get_id(), |
|
| 303 | + 'item_name' => sanitize_text_field( $this->get_raw_name( 'edit' ) ), |
|
| 304 | + 'item_description' => $this->get_description( 'edit' ), |
|
| 305 | + 'tax' => $this->item_tax, |
|
| 306 | + 'item_price' => $this->get_price( 'edit' ), |
|
| 307 | + 'quantity' => (float) $this->get_quantity( 'edit' ), |
|
| 308 | + 'discount' => $this->item_discount, |
|
| 309 | + 'subtotal' => $this->get_sub_total( 'edit' ), |
|
| 310 | + 'price' => $this->get_sub_total( 'edit' ) + $this->item_tax - $this->item_discount, |
|
| 311 | + 'meta' => $this->get_item_meta( 'edit' ), |
|
| 312 | + ); |
|
| 313 | + |
|
| 314 | + } |
|
| 315 | 315 | |
| 316 | 316 | /* |
| 317 | 317 | |-------------------------------------------------------------------------- |
@@ -323,70 +323,70 @@ discard block |
||
| 323 | 323 | | object. |
| 324 | 324 | */ |
| 325 | 325 | |
| 326 | - /** |
|
| 327 | - * Set the item qantity. |
|
| 328 | - * |
|
| 329 | - * @since 1.0.19 |
|
| 330 | - * @param float $quantity The item quantity. |
|
| 331 | - */ |
|
| 332 | - public function set_quantity( $quantity ) { |
|
| 333 | - |
|
| 334 | - if ( ! is_numeric( $quantity ) ) { |
|
| 335 | - $quantity = 1; |
|
| 336 | - } |
|
| 337 | - |
|
| 338 | - $this->quantity = (float) $quantity; |
|
| 339 | - |
|
| 340 | - } |
|
| 341 | - |
|
| 342 | - /** |
|
| 343 | - * Set the item meta data. |
|
| 344 | - * |
|
| 345 | - * @since 1.0.19 |
|
| 346 | - * @param array $meta The item meta data. |
|
| 347 | - */ |
|
| 348 | - public function set_item_meta( $meta ) { |
|
| 349 | - $this->meta = maybe_unserialize( $meta ); |
|
| 350 | - } |
|
| 351 | - |
|
| 352 | - /** |
|
| 353 | - * Set whether or not the quantities are allowed. |
|
| 354 | - * |
|
| 355 | - * @since 1.0.19 |
|
| 356 | - * @param bool $allow_quantities |
|
| 357 | - */ |
|
| 358 | - public function set_allow_quantities( $allow_quantities ) { |
|
| 359 | - $this->allow_quantities = (bool) $allow_quantities; |
|
| 360 | - } |
|
| 361 | - |
|
| 362 | - /** |
|
| 363 | - * Set whether or not the item is required. |
|
| 364 | - * |
|
| 365 | - * @since 1.0.19 |
|
| 366 | - * @param bool $is_required |
|
| 367 | - */ |
|
| 368 | - public function set_is_required( $is_required ) { |
|
| 369 | - $this->is_required = (bool) $is_required; |
|
| 370 | - } |
|
| 371 | - |
|
| 372 | - /** |
|
| 373 | - * Sets the custom item description. |
|
| 374 | - * |
|
| 375 | - * @since 1.0.19 |
|
| 376 | - * @param string $description |
|
| 377 | - */ |
|
| 378 | - public function set_custom_description( $description ) { |
|
| 379 | - $this->custom_description = $description; |
|
| 380 | - } |
|
| 326 | + /** |
|
| 327 | + * Set the item qantity. |
|
| 328 | + * |
|
| 329 | + * @since 1.0.19 |
|
| 330 | + * @param float $quantity The item quantity. |
|
| 331 | + */ |
|
| 332 | + public function set_quantity( $quantity ) { |
|
| 333 | + |
|
| 334 | + if ( ! is_numeric( $quantity ) ) { |
|
| 335 | + $quantity = 1; |
|
| 336 | + } |
|
| 337 | + |
|
| 338 | + $this->quantity = (float) $quantity; |
|
| 339 | + |
|
| 340 | + } |
|
| 341 | + |
|
| 342 | + /** |
|
| 343 | + * Set the item meta data. |
|
| 344 | + * |
|
| 345 | + * @since 1.0.19 |
|
| 346 | + * @param array $meta The item meta data. |
|
| 347 | + */ |
|
| 348 | + public function set_item_meta( $meta ) { |
|
| 349 | + $this->meta = maybe_unserialize( $meta ); |
|
| 350 | + } |
|
| 351 | + |
|
| 352 | + /** |
|
| 353 | + * Set whether or not the quantities are allowed. |
|
| 354 | + * |
|
| 355 | + * @since 1.0.19 |
|
| 356 | + * @param bool $allow_quantities |
|
| 357 | + */ |
|
| 358 | + public function set_allow_quantities( $allow_quantities ) { |
|
| 359 | + $this->allow_quantities = (bool) $allow_quantities; |
|
| 360 | + } |
|
| 361 | + |
|
| 362 | + /** |
|
| 363 | + * Set whether or not the item is required. |
|
| 364 | + * |
|
| 365 | + * @since 1.0.19 |
|
| 366 | + * @param bool $is_required |
|
| 367 | + */ |
|
| 368 | + public function set_is_required( $is_required ) { |
|
| 369 | + $this->is_required = (bool) $is_required; |
|
| 370 | + } |
|
| 371 | + |
|
| 372 | + /** |
|
| 373 | + * Sets the custom item description. |
|
| 374 | + * |
|
| 375 | + * @since 1.0.19 |
|
| 376 | + * @param string $description |
|
| 377 | + */ |
|
| 378 | + public function set_custom_description( $description ) { |
|
| 379 | + $this->custom_description = $description; |
|
| 380 | + } |
|
| 381 | 381 | |
| 382 | 382 | /** |
| 383 | 383 | * We do not want to save items to the database. |
| 384 | 384 | * |
| 385 | - * @return int item id |
|
| 385 | + * @return int item id |
|
| 386 | 386 | */ |
| 387 | 387 | public function save( $data = array() ) { |
| 388 | 388 | return $this->get_id(); |
| 389 | - } |
|
| 389 | + } |
|
| 390 | 390 | |
| 391 | 391 | /* |
| 392 | 392 | |-------------------------------------------------------------------------- |
@@ -398,23 +398,23 @@ discard block |
||
| 398 | 398 | */ |
| 399 | 399 | |
| 400 | 400 | /** |
| 401 | - * Checks whether the item has enabled dynamic pricing. |
|
| 402 | - * |
|
| 403 | - * @since 1.0.19 |
|
| 404 | - * @return bool |
|
| 405 | - */ |
|
| 406 | - public function is_required() { |
|
| 401 | + * Checks whether the item has enabled dynamic pricing. |
|
| 402 | + * |
|
| 403 | + * @since 1.0.19 |
|
| 404 | + * @return bool |
|
| 405 | + */ |
|
| 406 | + public function is_required() { |
|
| 407 | 407 | return (bool) $this->get_is_required(); |
| 408 | - } |
|
| 409 | - |
|
| 410 | - /** |
|
| 411 | - * Checks whether users can edit the quantities. |
|
| 412 | - * |
|
| 413 | - * @since 1.0.19 |
|
| 414 | - * @return bool |
|
| 415 | - */ |
|
| 416 | - public function allows_quantities() { |
|
| 408 | + } |
|
| 409 | + |
|
| 410 | + /** |
|
| 411 | + * Checks whether users can edit the quantities. |
|
| 412 | + * |
|
| 413 | + * @since 1.0.19 |
|
| 414 | + * @return bool |
|
| 415 | + */ |
|
| 416 | + public function allows_quantities() { |
|
| 417 | 417 | return (bool) $this->get_allow_quantities(); |
| 418 | - } |
|
| 418 | + } |
|
| 419 | 419 | |
| 420 | 420 | } |
@@ -21,22 +21,22 @@ |
||
| 21 | 21 | |
| 22 | 22 | foreach ( $file_types as $file_type ) { |
| 23 | 23 | |
| 24 | - if ( isset( $all_types[ $file_type ] ) ) { |
|
| 25 | - $types[] = $all_types[ $file_type ]; |
|
| 26 | - $file_type = explode( '|', $file_type ); |
|
| 24 | + if ( isset( $all_types[ $file_type ] ) ) { |
|
| 25 | + $types[] = $all_types[ $file_type ]; |
|
| 26 | + $file_type = explode( '|', $file_type ); |
|
| 27 | 27 | |
| 28 | - foreach ( $file_type as $type ) { |
|
| 29 | - $type = trim( $type ); |
|
| 30 | - $types[] = ".$type"; |
|
| 31 | - $_types[] = $type; |
|
| 32 | - } |
|
| 28 | + foreach ( $file_type as $type ) { |
|
| 29 | + $type = trim( $type ); |
|
| 30 | + $types[] = ".$type"; |
|
| 31 | + $_types[] = $type; |
|
| 32 | + } |
|
| 33 | 33 | |
| 34 | - } |
|
| 34 | + } |
|
| 35 | 35 | |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | 38 | if ( ! empty( $required ) ) { |
| 39 | - $label .= "<span class='text-danger'> *</span>"; |
|
| 39 | + $label .= "<span class='text-danger'> *</span>"; |
|
| 40 | 40 | } |
| 41 | 41 | |
| 42 | 42 | ?> |