File Editor
Directories:
.. (Back)
Files:
RequirementsAlerts.php
Create New File
Create
Edit File: RequirementsAlerts.php
<?php namespace WPForms\Forms\Fields\Helpers; /** * Helpers for Requirements Alerts. * * Can be used for notifying about new features that addons are not supported. * * @since 1.8.7 */ class RequirementsAlerts { /** * Determine if the Product Quantities feature is allowed to use. * * @since 1.8.7 * * @return bool */ public static function is_product_quantities_allowed(): bool { return empty( self::get_addons_require_for_product_quantities() ); } /** * Determine if the Order Summary feature is allowed to use. * * @since 1.8.7 * * @return bool */ public static function is_order_summary_allowed(): bool { return ! self::is_pro() || ! defined( 'WPFORMS_COUPONS_VERSION' ) || version_compare( WPFORMS_COUPONS_VERSION, '1.2.0', '>=' ); } /** * Product Quantities feature: get an update required alert HTML. * * @since 1.8.7 * * @return string */ public static function get_product_quantities_alert(): string { $addons_require_update = self::get_addons_require_for_product_quantities(); // Generate update link when only one addon needs to be updated. if ( count( $addons_require_update ) === 1 ) { $update_url = self::get_addon_update_url( key( $addons_require_update ) ); } else { // Redirect to the Plugins admin page if multiple addons require an update. $update_url = admin_url( 'plugins.php?plugin_status=upgrade' ); } return self::get_update_alert( sprintf( /* translators: %1$s - addons list. */ __( 'The following addons require an update to support product quantities: %1$s', 'wpforms-lite' ), implode( ', ', $addons_require_update ) ), $update_url ); } /** * Order Summary feature: get an update required alert HTML. * * @since 1.8.7 * * @return string */ public static function get_order_summary_alert(): string { return self::get_update_alert( __( 'You\'re using an older version of the Coupons addon that does not support order summary.', 'wpforms-lite' ), self::get_addon_update_url( 'wpforms-coupons' ) ); } /** * Repeater field: determine if addon is allowed to use inside the repeater field. * * @since 1.8.9 * * @param string $addon_slug Addon slug. * * @return bool */ public static function is_inside_repeater_allowed( string $addon_slug ): bool { $requirements = [ 'wpforms-geolocation' => '2.10.0', 'wpforms-signatures' => '1.11.0', 'wpforms-form-abandonment' => '1.12.0', 'wpforms-save-resume' => '1.11.0', 'wpforms-lead-forms' => '1000', // @todo: We should adjust this value when the Lead Forms get the Repeater field support. 'wpforms-google-sheets' => '2.1.0', ]; if ( ! isset( $requirements[ $addon_slug ] ) ) { return true; } $version_constant = strtoupper( str_replace( '-', '_', $addon_slug ) ) . '_VERSION'; return self::is_pro() && defined( $version_constant ) && version_compare( constant( $version_constant ), $requirements[ $addon_slug ], '>=' ); } /** * Repeater field: get an update required alert HTML. * * @since 1.8.9 * * @param string $addon_name Addon name. * @param string $addon_slug Addon slug. * * @return string */ public static function get_repeater_alert( string $addon_name, string $addon_slug ): string { return self::get_update_alert( self::get_repeater_alert_text( $addon_name ), self::get_addon_update_url( $addon_slug ) ); } /** * Repeater field: get alert text. * * @since 1.8.9 * * @param string $addon_name Addon name. * * @return string */ public static function get_repeater_alert_text( string $addon_name ): string { return sprintf( /* translators: %1$s - addon name. */ __( 'You\'re using an older version of the %1$s addon that does not support the Repeater field.', 'wpforms-lite' ), $addon_name ); } /** * Retrieve a list of addons that require updating to support the Product Quantities feature. * * @since 1.8.7 * * @return array */ private static function get_addons_require_for_product_quantities(): array { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh static $addons; if ( ! is_null( $addons ) ) { return $addons; } $addons = []; // All addons require Pro and Top level licenses. if ( ! self::is_pro() ) { return $addons; } if ( defined( 'WPFORMS_COUPONS_VERSION' ) && version_compare( WPFORMS_COUPONS_VERSION, '1.2.0', '<' ) ) { $addons['wpforms-coupons'] = __( 'Coupons', 'wpforms-lite' ); } if ( defined( 'WPFORMS_PAYPAL_COMMERCE_VERSION' ) && version_compare( WPFORMS_PAYPAL_COMMERCE_VERSION, '1.9.0', '<' ) ) { $addons['wpforms-paypal-commerce'] = __( 'PayPal Commerce', 'wpforms-lite' ); } if ( defined( 'WPFORMS_PAYPAL_STANDARD_VERSION' ) && version_compare( WPFORMS_PAYPAL_STANDARD_VERSION, '1.10.0', '<' ) ) { $addons['wpforms-paypal-standard'] = __( 'PayPal Standard', 'wpforms-lite' ); } if ( defined( 'WPFORMS_SQUARE_VERSION' ) && version_compare( WPFORMS_SQUARE_VERSION, '1.9.0', '<' ) ) { $addons['wpforms-square'] = __( 'Square', 'wpforms-lite' ); } if ( defined( 'WPFORMS_SAVE_RESUME_VERSION' ) && version_compare( WPFORMS_SAVE_RESUME_VERSION, '1.9.0', '<' ) ) { $addons['wpforms-save-resume'] = __( 'Save and Resume', 'wpforms-lite' ); } return $addons; } /** * Get an update alert HTML. * * @since 1.8.7 * * @param string $message Alert message. * @param string $update_url Update button URL. * * @return string */ private static function get_update_alert( string $message, string $update_url ): string { $alert = sprintf( '<div class="wpforms-alert-message"> <h4>%1$s</h4> <p>%2$s</p> </div> <div class="wpforms-alert-buttons"> <a href="%3$s" target="_blank" rel="noopener noreferrer" class="wpforms-btn wpforms-btn-sm wpforms-btn-blue">%4$s</a> </div>', esc_html__( 'Update Required', 'wpforms-lite' ), esc_html( $message ), esc_url( $update_url ), esc_html__( 'Update Now', 'wpforms-lite' ) ); return sprintf( '<div class="wpforms-alert wpforms-alert-danger wpforms-alert-field-requirements">%1$s</div>', $alert // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ); } /** * Get addon update URL. * * @since 1.8.7 * * @param string $addon_slug Addon slug. * * @return string */ private static function get_addon_update_url( string $addon_slug ): string { $addon_path = sprintf( '%1$s/%1$s.php', $addon_slug ); return wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $addon_path ), 'upgrade-plugin_' . $addon_path ); } /** * Determine if Pro or Top level license is used. * * @since 1.8.7 * * @return bool */ private static function is_pro(): bool { return in_array( wpforms_get_license_type(), [ 'pro', 'elite', 'agency', 'ultimate' ], true ); } }
Save Changes
Rename File
Rename