| @@ -156,9 +156,10 @@ | ||
| 156 | 156 | 'pro' => array( |
| 157 | 157 | 'title' => 'Formidable Forms Pro', |
| 158 | 158 | 'slug' => 'formidable-pro', |
| 159 | 159 | 'released' => '2011-02-05', |
| 160 | - 'docs' => 'knowledgebase/', | |
| 160 | + 'docs' => 'knowledgebase/what-is-the-difference-between-the-lite-free-and-pro-version/', | |
| 161 | + 'docs_label' => __( 'Why Upgrade', 'formidable' ), | |
| 161 | 162 | 'categories' => array( 'basic', 'plus', 'business', 'elite' ), |
| 162 | 163 | 'excerpt' => 'Create calculators, surveys, smart forms, and data-driven applications. Build directories, real estate listings, job boards, and much more.', |
| 163 | 164 | ), |
| 164 | 165 | ); |
| @@ -472,14 +473,54 @@ | ||
| 472 | 473 | } |
| 473 | 474 | |
| 474 | 475 | /** |
| 475 | 476 | * @since 4.06 |
| 477 | + * @since 6.31 Added the $force_type param. | |
| 476 | 478 | * |
| 479 | + * @param bool $force_type Whether to resolve grandfathered licenses to their real license type. | |
| 480 | + * | |
| 477 | 481 | * @return string |
| 478 | 482 | */ |
| 479 | - public static function license_type() { | |
| 483 | + public static function license_type( $force_type = false ) { | |
| 480 | 484 | if ( is_callable( 'FrmProAddonsController::license_type' ) ) { |
| 481 | - return FrmProAddonsController::license_type(); | |
| 485 | + return FrmProAddonsController::license_type( $force_type ); | |
| 486 | + } | |
| 487 | + | |
| 488 | + return 'free'; | |
| 489 | + } | |
| 490 | + | |
| 491 | + /** | |
| 492 | + * Determine the license status for payment fee decisions. | |
| 493 | + * | |
| 494 | + * Mirrors the API's determine_status_from_license_details logic. | |
| 495 | + * | |
| 496 | + * @since 6.31 | |
| 497 | + * | |
| 498 | + * @return string 'active', 'expired', or 'free'. | |
| 499 | + */ | |
| 500 | + public static function get_payment_license_status() { | |
| 501 | + $version_info = self::get_primary_license_info(); | |
| 502 | + | |
| 503 | + if ( ! $version_info ) { | |
| 504 | + return 'free'; | |
| 505 | + } | |
| 506 | + | |
| 507 | + $error = $version_info['error'] ?? array(); | |
| 508 | + | |
| 509 | + if ( is_array( $error ) ) { | |
| 510 | + $code = $error['code'] ?? ''; | |
| 511 | + | |
| 512 | + if ( 'expired' === $code ) { | |
| 513 | + return 'expired'; | |
| 514 | + } | |
| 515 | + | |
| 516 | + if ( 'grandfathered' === $code && isset( $error['expires'] ) && gmdate( 'Y-m-d', $error['expires'] ) < '2016-04-26' ) { | |
| 517 | + return 'free'; | |
| 518 | + } | |
| 519 | + } | |
| 520 | + | |
| 521 | + if ( in_array( self::license_type( true ), array( 'elite', 'business' ), true ) ) { | |
| 522 | + return 'active'; | |
| 482 | 523 | } |
| 483 | 524 | |
| 484 | 525 | return 'free'; |
| 485 | 526 | } |