686 lines
21 KiB
PHP
686 lines
21 KiB
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',
|
||
|
'collaps_qs' => 'debug-collaps_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 folllowing 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 folllowing 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');
|
||
|
}
|