XylotrechusZ
<?php
namespace WPForms\Pro\Admin\Addons;
use WPForms\Admin\Notice;
/**
* Google Sheets addon update admin notices.
*
* @since 1.8.5.3
*/
class GoogleSheets {
/**
* Indicate if current class is allowed to load.
*
* @since 1.8.5.3
*
* @return bool
*/
private function allow_load(): bool {
if ( ! is_admin() || wp_doing_ajax() ) {
return false;
}
// Only for v1.x.x.
if ( ! defined( 'WPFORMS_GOOGLE_SHEETS_VERSION' ) || version_compare( WPFORMS_GOOGLE_SHEETS_VERSION, '2.0', '>=' ) ) {
return false;
}
if ( ! wpforms_is_addon_initialized( 'google-sheets' ) ) {
return false;
}
// The credentials are not set.
if ( empty( wpforms_google_sheets()->get( 'account' )->get_credentials() ) ) {
return false;
}
global $pagenow;
// Load only on certain admin pages.
return in_array( $pagenow, [ 'index.php', 'plugins.php' ], true ) ||
wpforms_is_admin_page();
}
/**
* Init.
*
* @since 1.8.5.3
*/
public function init() {
if ( ! $this->allow_load() ) {
return;
}
// The Google Sheets addon v2.0 admin notice.
if ( $this->is_v2_released() ) {
$this->v2_update_is_released_notice();
} else {
$this->v2_update_is_expected_notice();
}
}
/**
* Detect if the v2.0 is released.
*
* @since 1.8.5.3
*
* @return bool
*/
private function is_v2_released(): bool {
$updates = (array) get_site_transient( 'update_plugins' );
if ( empty( $updates['response'] ) ) {
return false;
}
$addon_slug = plugin_basename( WPFORMS_GOOGLE_SHEETS_FILE );
$addon_update = (array) ( $updates['response'][ $addon_slug ] ?? [] );
$new_version = $addon_update['new_version'] ?? false;
if ( ! $new_version ) {
return false;
}
return version_compare( $new_version, '2.0', '>=' );
}
/**
* The addon v2.0 is expected notice.
*
* @since 1.8.5.3
*/
private function v2_update_is_expected_notice() {
$title = __( 'Important Update for Google Sheets Addon Users', 'wpforms' );
$message = sprintf( /* translators: %1$s - Google Sheets Re-Authentication doc link. */
__( 'The Google Sheets addon for WPForms will be updated soon. All users who are sending entries to Google Sheets will need to <a href="%1$s" target="_blank" rel="noopener noreferrer">update the addon and re-authenticate their Google connection</a> as soon as version 2.0 becomes available to avoid interruptions in service.', 'wpforms' ),
esc_url(
wpforms_utm_link(
'https://wpforms.com/docs/google-sheets-2-0-update-requirements/',
'Google Sheets Update Alert 1',
'Google Sheets Re-Authentication doc'
)
)
);
Notice::info( $this->get_compiled_notice( $title, $message ) );
}
/**
* The addon v2.0 is released notice.
*
* @since 1.8.5.3
*/
private function v2_update_is_released_notice() {
$title = __( 'Urgent Action Required for Google Sheets Addon Users', 'wpforms' );
$message = sprintf( /* translators: %1$s - Google Sheets Re-Authentication doc link. */
__( 'WPForms Google Sheets addon version 2.0 is now available. All users who are sending entries to Google Sheets need to <a href="%1$s" target="_blank" rel="noopener noreferrer">update the addon and re-authenticate their Google connection</a> as soon as possible to avoid interruptions in service.', 'wpforms' ),
esc_url(
wpforms_utm_link(
'https://wpforms.com/docs/google-sheets-2-0-update-requirements/',
'Google Sheets Update Alert 2',
'Google Sheets Re-Authentication doc'
)
)
);
Notice::error( $this->get_compiled_notice( $title, $message ) );
}
/**
* Get compiled notice.
*
* @since 1.8.5.3
*
* @param string $title Notice title.
* @param string $message Notice message.
*
* @return string
*/
private function get_compiled_notice( $title, $message ): string {
$notice = sprintf(
'<h3 style="margin: 0.75em 0 0; padding: 0 2px;">%1$s</h3><p>%2$s</p>',
$title,
$message
);
return wp_kses(
$notice,
[
'a' => [
'href' => [],
'rel' => [],
'target' => [],
],
'h3' => [
'style' => [],
],
'p' => [],
]
);
}
}