Edit File by line
/home/zeestwma/ajeebong.../wp-conte.../plugins/litespee.../src
File: data.upgrade.func.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Database upgrade funcs
[2] Fix | Delete
*
[3] Fix | Delete
* NOTE: whenever called this file, always call Data::get_upgrade_lock and Data::_set_upgrade_lock first.
[4] Fix | Delete
*
[5] Fix | Delete
* @package LiteSpeed
[6] Fix | Delete
* @since 3.0
[7] Fix | Delete
*/
[8] Fix | Delete
[9] Fix | Delete
defined( 'WPINC' ) || exit();
[10] Fix | Delete
[11] Fix | Delete
use LiteSpeed\Debug2;
[12] Fix | Delete
use LiteSpeed\Cloud;
[13] Fix | Delete
use LiteSpeed\Conf;
[14] Fix | Delete
[15] Fix | Delete
/**
[16] Fix | Delete
* Check whether a DB table exists.
[17] Fix | Delete
*
[18] Fix | Delete
* @since 7.2
[19] Fix | Delete
*
[20] Fix | Delete
* @param string $table_name Fully-qualified table name.
[21] Fix | Delete
* @return bool
[22] Fix | Delete
*/
[23] Fix | Delete
function litespeed_table_exists( $table_name ) {
[24] Fix | Delete
global $wpdb;
[25] Fix | Delete
[26] Fix | Delete
$save_state = $wpdb->suppress_errors;
[27] Fix | Delete
$wpdb->suppress_errors( true );
[28] Fix | Delete
// phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder, WordPress.DB.DirectDatabaseQuery.DirectQuery
[29] Fix | Delete
$tb_exists = $wpdb->get_var( $wpdb->prepare( 'DESCRIBE `%1s`', $table_name ) );
[30] Fix | Delete
$wpdb->suppress_errors( $save_state );
[31] Fix | Delete
[32] Fix | Delete
return null !== $tb_exists;
[33] Fix | Delete
}
[34] Fix | Delete
[35] Fix | Delete
/**
[36] Fix | Delete
* Migrate v7.0- url_files URL from no trailing slash to trailing slash.
[37] Fix | Delete
*
[38] Fix | Delete
* @since 7.0.1
[39] Fix | Delete
* @return void
[40] Fix | Delete
*/
[41] Fix | Delete
function litespeed_update_7_0_1() {
[42] Fix | Delete
global $wpdb;
[43] Fix | Delete
[44] Fix | Delete
Debug2::debug( '[Data] v7.0.1 upgrade started' );
[45] Fix | Delete
[46] Fix | Delete
$tb_url = $wpdb->prefix . 'litespeed_url';
[47] Fix | Delete
if ( ! litespeed_table_exists( $tb_url ) ) {
[48] Fix | Delete
Debug2::debug( '[Data] Table `litespeed_url` not found, bypassed migration' );
[49] Fix | Delete
return;
[50] Fix | Delete
}
[51] Fix | Delete
[52] Fix | Delete
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
[53] Fix | Delete
$list = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$tb_url}` WHERE url LIKE %s", 'https://%/' ), ARRAY_A );
[54] Fix | Delete
$existing_urls = array();
[55] Fix | Delete
if ($list) {
[56] Fix | Delete
foreach ($list as $v) {
[57] Fix | Delete
$existing_urls[] = $v['url'];
[58] Fix | Delete
}
[59] Fix | Delete
}
[60] Fix | Delete
[61] Fix | Delete
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
[62] Fix | Delete
$list = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$tb_url}` WHERE url LIKE %s", 'https://%' ), ARRAY_A );
[63] Fix | Delete
if ( ! $list ) {
[64] Fix | Delete
return;
[65] Fix | Delete
}
[66] Fix | Delete
foreach ( $list as $v ) {
[67] Fix | Delete
if ( '/' === substr( $v['url'], -1 ) ) {
[68] Fix | Delete
continue;
[69] Fix | Delete
}
[70] Fix | Delete
$new_url = $v['url'] . '/';
[71] Fix | Delete
if ( in_array( $new_url, $existing_urls, true ) ) {
[72] Fix | Delete
continue;
[73] Fix | Delete
}
[74] Fix | Delete
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
[75] Fix | Delete
$wpdb->query( $wpdb->prepare( "UPDATE `{$tb_url}` SET url = %s WHERE id = %d", $new_url, $v['id'] ) );
[76] Fix | Delete
}
[77] Fix | Delete
}
[78] Fix | Delete
[79] Fix | Delete
/**
[80] Fix | Delete
* Migrate from domain key to pk/sk for QC
[81] Fix | Delete
*
[82] Fix | Delete
* @since 7.0
[83] Fix | Delete
*/
[84] Fix | Delete
function litespeed_update_7() {
[85] Fix | Delete
Debug2::debug('[Data] v7 upgrade started');
[86] Fix | Delete
[87] Fix | Delete
$__cloud = Cloud::cls();
[88] Fix | Delete
[89] Fix | Delete
$domain_key = $__cloud->conf('api_key');
[90] Fix | Delete
if (!$domain_key) {
[91] Fix | Delete
Debug2::debug('[Data] No domain key, bypassed migration');
[92] Fix | Delete
return;
[93] Fix | Delete
}
[94] Fix | Delete
[95] Fix | Delete
$new_prepared = $__cloud->init_qc_prepare();
[96] Fix | Delete
if (!$new_prepared && $__cloud->activated()) {
[97] Fix | Delete
Debug2::debug('[Data] QC previously activated in v7, bypassed migration');
[98] Fix | Delete
return;
[99] Fix | Delete
}
[100] Fix | Delete
$data = array(
[101] Fix | Delete
'domain_key' => $domain_key,
[102] Fix | Delete
);
[103] Fix | Delete
$resp = $__cloud->post(Cloud::SVC_D_V3UPGRADE, $data);
[104] Fix | Delete
if ( ! empty( $resp['qc_activated'] ) ) {
[105] Fix | Delete
if ( 'deleted' !== $resp['qc_activated'] ) {
[106] Fix | Delete
$cloud_summary_updates = array( 'qc_activated' => $resp['qc_activated'] );
[107] Fix | Delete
if (!empty($resp['main_domain'])) {
[108] Fix | Delete
$cloud_summary_updates['main_domain'] = $resp['main_domain'];
[109] Fix | Delete
}
[110] Fix | Delete
Cloud::save_summary($cloud_summary_updates);
[111] Fix | Delete
Debug2::debug('[Data] Updated QC activated status to ' . $resp['qc_activated']);
[112] Fix | Delete
}
[113] Fix | Delete
}
[114] Fix | Delete
}
[115] Fix | Delete
[116] Fix | Delete
/**
[117] Fix | Delete
* Drop deprecated guest_ips and guest_uas from DB options.
[118] Fix | Delete
* Migrate url table to make all links trailing slash for UCSS/CCSS.
[119] Fix | Delete
*
[120] Fix | Delete
* These values are now read from files instead.
[121] Fix | Delete
*
[122] Fix | Delete
* @since 7.7
[123] Fix | Delete
*/
[124] Fix | Delete
function litespeed_update_7_7() {
[125] Fix | Delete
global $wpdb;
[126] Fix | Delete
[127] Fix | Delete
Debug2::debug( '[Data] v7.7 upgrade: dropping guest_ips/guest_uas options' );
[128] Fix | Delete
[129] Fix | Delete
Conf::delete_option( 'conf.guest_ips' );
[130] Fix | Delete
Conf::delete_option( 'conf.guest_uas' );
[131] Fix | Delete
Conf::delete_site_option( 'conf.guest_ips' );
[132] Fix | Delete
Conf::delete_site_option( 'conf.guest_uas' );
[133] Fix | Delete
[134] Fix | Delete
// Normalize all URLs to have trailing slash to match UCSS/CCSS generation logic
[135] Fix | Delete
Debug2::debug( '[Data] v7.7 upgrade: normalizing URL trailing slashes' );
[136] Fix | Delete
[137] Fix | Delete
// Skip if plain permalink mode (no trailing slash)
[138] Fix | Delete
$permalink_structure = get_option( 'permalink_structure' );
[139] Fix | Delete
if ( empty( $permalink_structure ) ) {
[140] Fix | Delete
Debug2::debug( '[Data] Plain permalink mode, bypassed URL trailing slash migration' );
[141] Fix | Delete
return;
[142] Fix | Delete
}
[143] Fix | Delete
[144] Fix | Delete
$tb_url = $wpdb->prefix . 'litespeed_url';
[145] Fix | Delete
if ( ! litespeed_table_exists( $tb_url ) ) {
[146] Fix | Delete
Debug2::debug( '[Data] Table `litespeed_url` not found, bypassed URL migration' );
[147] Fix | Delete
return;
[148] Fix | Delete
}
[149] Fix | Delete
[150] Fix | Delete
// Check if there are URLs without trailing slash (exclude URLs with query string)
[151] Fix | Delete
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
[152] Fix | Delete
$count = $wpdb->get_var( "SELECT COUNT(*) FROM `{$tb_url}` WHERE url LIKE 'https://%' AND url NOT LIKE '%/' AND url NOT LIKE '%?%'" );
[153] Fix | Delete
if ( ! $count ) {
[154] Fix | Delete
Debug2::debug( '[Data] No URLs without trailing slash found, bypassed' );
[155] Fix | Delete
return;
[156] Fix | Delete
}
[157] Fix | Delete
[158] Fix | Delete
// Append trailing slash to all URLs that don't have one and don't have duplicate with slash (exclude URLs with query string)
[159] Fix | Delete
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
[160] Fix | Delete
$wpdb->query( "UPDATE `{$tb_url}` SET url = CONCAT(url, '/') WHERE url LIKE 'https://%' AND url NOT LIKE '%/' AND url NOT LIKE '%?%' AND CONCAT(url, '/') NOT IN (SELECT * FROM (SELECT url FROM `{$tb_url}` WHERE url LIKE '%/') AS tmp)" );
[161] Fix | Delete
}
[162] Fix | Delete
[163] Fix | Delete
/**
[164] Fix | Delete
* Append webp/mobile to url_file
[165] Fix | Delete
*
[166] Fix | Delete
* @since 5.3
[167] Fix | Delete
*/
[168] Fix | Delete
function litespeed_update_5_3() {
[169] Fix | Delete
global $wpdb;
[170] Fix | Delete
Debug2::debug('[Data] Upgrade url_file table');
[171] Fix | Delete
[172] Fix | Delete
$tb = $wpdb->prefix . 'litespeed_url_file';
[173] Fix | Delete
if ( litespeed_table_exists( $tb ) ) {
[174] Fix | Delete
$q = "ALTER TABLE `{$tb}`
[175] Fix | Delete
ADD COLUMN `mobile` tinyint(4) NOT NULL COMMENT 'mobile=1',
[176] Fix | Delete
ADD COLUMN `webp` tinyint(4) NOT NULL COMMENT 'webp=1'
[177] Fix | Delete
";
[178] Fix | Delete
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
[179] Fix | Delete
$wpdb->query( $q );
[180] Fix | Delete
}
[181] Fix | Delete
}
[182] Fix | Delete
[183] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function