File ManagerCurrent Directory: wp-content/plugins/wpforms/src/Pro/EmailsLinux appserver-0d5e4f1e-php-cc8da225320a42ba9b7d66cba40b1f03 6.6.123+ #1 SMP PREEMPT_DYNAMIC Wed Mar 11 09:04:28 UTC 2026 x86_64Edit File: LicenseBanner.php <?php namespace WPForms\Pro\Emails; use WPForms\Emails\Templates\Summary; /** * Class LicenseBanner. * * @since 1.8.8 */ class LicenseBanner { /** * Number of days before the license expires to show the banner. * * Note that the banner will be shown if the license expires within the next X days, * and the user has canceled the subscription, meaning the license will not be renewed automatically. * * @since 1.8.8 */ const EXPIRE_SOON_DAYS = 7; /** * Initialize class. * * @since 1.8.8 */ public function init() { // Leave early if the license key is not set. if ( ! $this->has_license() ) { return; } $this->hooks(); } /** * Hooks. * * @since 1.8.8 */ private function hooks() { add_filter( 'wpforms_emails_summaries_template', [ $this, 'add_license_banner_to_header_args' ] ); } /** * Adds license banner to header arguments based on license status. * * @since 1.8.8 * * @param Summary $template The template being used. * * @return Summary */ public function add_license_banner_to_header_args( $template ) { // Get the current license status. $license_status = $this->get_license_status(); // Leave early if the license status is empty. if ( empty( $license_status ) ) { return $template; } // Retrieve license banner arguments based on license status. $license_banner_args = $this->generate_license_banner_args( $license_status ); // Add license banner to header arguments. $template->set_args( [ 'header' => [ 'license_banner' => $license_banner_args, ], ] ); // Return modified header arguments. return $template; } /** * Checks if the license exists. * * @since 1.8.8 * * @return bool */ private function has_license(): bool { return ! empty( wpforms_get_license_key() ); } /** * Retrieves the license status. * The status can be one of the following: invalid, expired, expire_soon, or an empty string. * * @since 1.8.8 * * @return string */ private function get_license_status(): string { // Retrieve the license data from options. $license = (array) get_option( 'wpforms_license', [] ); // Check for expired license. if ( ! empty( $license['is_expired'] ) ) { return 'expired'; } // Check for disabled or invalid license. if ( ! empty( $license['is_disabled'] ) || ! empty( $license['is_invalid'] ) ) { return 'disabled'; } // Check if the subscription status is active or empty. // There could be instances where a user can have an active license but the subscription status is empty. if ( empty( $license['sub_status'] ) || $license['sub_status'] === 'active' ) { return ''; } // Check for soon-to-expire license within X days. // Note the `expires` value normally returns timestamp in string format; // There could be a case when it returns "lifetime" string for licenses with no expiration date. if ( isset( $license['expires'] ) && is_numeric( $license['expires'] ) ) { $expires_timestamp = (int) $license['expires']; // Valid timestamp, proceed with comparison. if ( $expires_timestamp < strtotime( '+' . self::EXPIRE_SOON_DAYS . ' days' ) ) { return 'expire_soon'; } } return ''; } /** * Retrieves the license banner arguments based on the provided status. * * @since 1.8.8 * * @param string $status The status of the license. * * @return array */ private function generate_license_banner_args( string $status ): array { $license_help_url = wpforms_utm_link( 'https://wpforms.com/docs/why-you-should-always-use-the-latest-version-of-wpforms/', 'Latest Version Doc', 'Use Latest WPForms Version' ); $license_help_html = sprintf( wp_kses( /* translators: %1$s - WPForms.com license help URL. */ __( 'Have questions? <a href="%1$s" target="_blank" rel="noopener noreferrer">Learn why you should always use the latest version of WPForms</a>.', 'wpforms' ), [ 'a' => [ 'href' => [], 'rel' => [], 'target' => [], ], ] ), $license_help_url ); // Switch statement to handle different license statuses. switch ( $status ) { case 'invalid': case 'disabled': $message = [ 'status' => 'disabled', 'title' => __( 'Heads Up! Your License is Invalid', 'wpforms' ), 'content' => [ __( 'Your key either no longer exists or the user associated with the key has been deleted. Please use a different key to continue receiving automatic updates.', 'wpforms' ), $license_help_html, ], 'help_url' => $license_help_url, 'cta' => [ 'class' => 'button button-red', 'text' => __( 'Purchase a New License', 'wpforms' ), 'url' => wpforms_utm_link( 'https://wpforms.com/pricing/', 'Invalid Banner', 'Renew Your License Now' ), ], ]; break; case 'expired': $message = [ 'status' => 'expired', 'title' => __( 'Heads Up! Your License Has Expired', 'wpforms' ), 'content' => [ __( 'Without an active license, you lose access to plugin updates and new features. Renew your license today so you don’t miss out!', 'wpforms' ), $license_help_html, ], 'help_url' => $license_help_url, 'cta' => [ 'class' => 'button button-red', 'text' => __( 'Renew Your License Now', 'wpforms' ), 'url' => wpforms_utm_link( 'https://wpforms.com/account/licenses/', 'Expired Banner', 'Renew Your License Now' ), ], ]; break; case 'expire_soon': $message = [ 'status' => 'expire_soon', 'title' => __( 'Heads Up! Your License Will Expire Soon', 'wpforms' ), 'content' => [ __( 'Without an active license, you will lose access to plugin updates and new features. Enable automatic renewal today so you don’t miss out!', 'wpforms' ), $license_help_html, ], 'help_url' => $license_help_url, 'cta' => [ 'class' => 'button button-orange', 'text' => __( 'Turn on Automatic Renewal', 'wpforms' ), 'url' => wpforms_utm_link( 'https://wpforms.com/account/billing/', 'Expiring Soon Banner', 'Turn On Automatic Renewal' ), ], ]; break; default: // Set default message for other cases. $message = []; break; } // Return the banner arguments. return $message; } } Upload File Directory Listing NameTypeSizeActions.. (Parent Directory)DirLicenseBanner.phpFile6.20 KB Rename | Delete | EditSummaries.phpFile1.46 KB Rename | Delete | EditTemplatesDirectory Rename | Delete