Files
User A0264400 a766acdc90 first commit
2026-04-01 23:20:16 +03:00

274 lines
7.6 KiB
PHP

<?php
/**
* Update Compatibility
*
* @package UAGB
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
if ( ! class_exists( 'UAGB_Update' ) ) :
/**
* UAGB Update initial setup
*
* @since 1.13.4
*/
class UAGB_Update {
/**
* Class instance.
*
* @access private
* @var $instance Class instance.
*/
private static $instance;
/**
* Initiator
*/
public static function get_instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor
*/
public function __construct() {
add_action( 'admin_init', array( $this, 'init' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) );
add_action( 'in_plugin_update_message-' . UAGB_BASE, array( $this, 'plugin_update_notification' ), 10 );
}
/**
* Init
*
* @since 1.13.4
* @return void
*/
public function init() {
// Get auto saved version number.
$saved_version = get_option( 'uagb-version', false );
// Update auto saved version number.
if ( ! $saved_version || ! is_string( $saved_version ) ) {
// Fresh install updation.
$this->fresh_install_update_asset_generation_option();
// Update current version.
update_option( 'uagb-version', UAGB_VER );
return;
}
do_action( 'uagb_update_before' );
// If equals then return.
if ( version_compare( $saved_version, UAGB_VER, '=' ) ) {
return;
}
// If user is older than 2.0.0 then set the option.
if ( version_compare( $saved_version, '2.0.0', '<' ) ) {
update_option( 'uagb-old-user-less-than-2', 'yes' );
}
// Enable Legacy Blocks for users older than 2.0.5.
if ( version_compare( $saved_version, '2.0.5', '<' ) ) {
UAGB_Admin_Helper::update_admin_settings_option( 'uag_enable_legacy_blocks', 'yes' );
}
// If user is older than equal to 2.12.1 then set the option.
if ( version_compare( $saved_version, '2.12.1', '<=' ) ) {
UAGB_Admin_Helper::update_admin_settings_option( 'uag_enable_quick_action_sidebar', 'disabled' );
}
// Delete any of the unused options that have been unsupported or no longer required.
// Delete the header titlebar option if it exists- which has been removed from version 2.14.1.
if ( UAGB_Admin_Helper::get_admin_settings_option( 'uag_enable_header_titlebar' ) ) {
UAGB_Admin_Helper::delete_admin_settings_option( 'uag_enable_header_titlebar' );
}
// Create a Core Block Array for all versions in which a Core Spectra Block was added.
$core_blocks = array();
$blocks_status = UAGB_Admin_Helper::get_admin_settings_option( '_uagb_blocks' );
// If Block Statuses exists and is not empty, enable the required Core Spectra Blocks.
if ( is_array( $blocks_status ) && ! empty( $blocks_status ) ) {
// If user is older than 2.0.16 then enable all the Core Spectra Blocks, as we have removed option to disable core blocks from 2.0.16.
if ( version_compare( $saved_version, '2.0.16', '<' ) ) {
array_push(
$core_blocks,
'container',
'advanced-heading',
'image',
'buttons',
'info-box',
'call-to-action'
);
}
// If user is older than 2.4.0 then enable the Icon Block that was added to the Core Blocks in this release.
if ( version_compare( $saved_version, '2.4.0', '<' ) ) {
array_push(
$core_blocks,
'icon'
);
}
// If user is older than 2.6.0 then enable the Countdown Block that was added to the Core Blocks in this release.
if ( version_compare( $saved_version, '2.6.0', '<' ) ) {
array_push(
$core_blocks,
'countdown'
);
}
// If user is older than 2.12.3 then enable the popup-builder Block that was added to the Core Blocks in this release.
if ( version_compare( $saved_version, '2.12.3', '<' ) ) {
array_push(
$core_blocks,
'popup-builder'
);
}
}
$inherit_from_theme = UAGB_Admin_Helper::get_admin_settings_option( 'uag_btn_inherit_from_theme' );
// If user is older than 2.13.4 and Inherit from theme is enabled update the fallback.
if ( version_compare( $saved_version, '2.13.4', '<' ) && 'enabled' === $inherit_from_theme ) {
UAGB_Admin_Helper::update_admin_settings_option( 'uag_btn_inherit_from_theme_fallback', 'disabled' );
}
// If the core block array is not empty, update the enabled blocks option.
if ( ! empty( $core_blocks ) ) {
foreach ( $core_blocks as $block ) {
$blocks_status[ $block ] = $block;
}
UAGB_Admin_Helper::update_admin_settings_option( '_uagb_blocks', $blocks_status );
}
// Create file if not present.
uagb_install()->create_files();
/* Create activated blocks stylesheet */
UAGB_Admin_Helper::create_specific_stylesheet();
// Update asset version number.
update_option( '__uagb_asset_version', time() );
// Update auto saved version number.
update_option( 'uagb-version', UAGB_VER );
do_action( 'uagb_update_after' );
}
/**
* Migrate_visibility_mode
*
* @since 2.8.0
* @return void
*/
public static function migrate_visibility_mode() {
$old_option = UAGB_Admin_Helper::get_admin_settings_option( 'uag_enable_coming_soon_mode' );
$old_option_page = UAGB_Admin_Helper::get_admin_settings_option( 'uag_coming_soon_page' );
if ( ! $old_option && ! $old_option_page ) {
return;
}
// Update the option.
UAGB_Admin_Helper::update_admin_settings_option( 'uag_visibility_mode', $old_option ? $old_option : 'disabled' );
UAGB_Admin_Helper::update_admin_settings_option( 'uag_visibility_page', $old_option_page ? $old_option_page : '' );
// Delete the old option.
UAGB_Admin_Helper::delete_admin_settings_option( 'uag_enable_coming_soon_mode' );
UAGB_Admin_Helper::delete_admin_settings_option( 'uag_coming_soon_page' );
}
/**
* Update asset generation option if it is not exist.
*
* @since 1.22.4
* @return void
*/
public function fresh_install_update_asset_generation_option() {
uagb_install()->create_files();
if ( UAGB_Helper::is_uag_dir_has_write_permissions() ) {
update_option( '_uagb_allow_file_generation', 'enabled' );
}
}
/**
* Plugin update notification.
*
* @param array $data Plugin update data.
* @since 2.7.2
* @return void
*/
public function plugin_update_notification( $data ) {
if ( ! empty( $data['upgrade_notice'] ) ) { ?>
<hr class="uagb-plugin-update-notification__separator" />
<div class="uagb-plugin-update-notification">
<div class="uagb-plugin-update-notification__icon">
<span class="dashicons dashicons-info"></span>
</div>
<div>
<div class="uagb-plugin-update-notification__title">
<?php echo esc_html__( 'Heads up!', 'ultimate-addons-for-gutenberg' ); ?>
</div>
<div class="uagb-plugin-update-notification__message">
<?php
printf(
wp_kses(
$data['upgrade_notice'],
array( 'a' => array( 'href' => array() ) )
)
);
?>
</div>
</div>
</div>
<?php
} //end if
}
/**
* Enqueue styles.
*
* @since 2.7.2
* @return void
*/
public function enqueue_styles() {
// Check if assets should be excluded for the current post type.
if ( UAGB_Admin_Helper::should_exclude_assets_for_cpt() ) {
return; // Early return to prevent loading assets.
}
$screen = get_current_screen();
if ( empty( $screen->id ) || 'plugins' !== $screen->id ) {
return;
}
wp_enqueue_style( 'uagb-update-notice', UAGB_URL . 'admin/assets/css/update-notice.css', array(), UAGB_VER );
}
}
/**
* Kicking this off by calling 'get_instance()' method
*/
UAGB_Update::get_instance();
endif;