Sindbad~EG File Manager
<?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 );
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists