Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/litespee.../src
File: data.cls.php
$q = "INSERT INTO `$tb_url` SET url=%s";
[500] Fix | Delete
$wpdb->query($wpdb->prepare($q, $request_url));
[501] Fix | Delete
$url_id = $wpdb->insert_id;
[502] Fix | Delete
} else {
[503] Fix | Delete
$url_id = $url_row['id'];
[504] Fix | Delete
}
[505] Fix | Delete
[506] Fix | Delete
$q = "SELECT * FROM `$tb_url_file` WHERE url_id=%d AND vary=%s AND type=%d AND expired=0";
[507] Fix | Delete
$file_row = $wpdb->get_row($wpdb->prepare($q, array($url_id, $vary, $type)), ARRAY_A);
[508] Fix | Delete
[509] Fix | Delete
// Check if has previous file or not
[510] Fix | Delete
if ($file_row && $file_row['filename'] == $filecon_md5) {
[511] Fix | Delete
return;
[512] Fix | Delete
}
[513] Fix | Delete
[514] Fix | Delete
// If the new $filecon_md5 is marked as expired by previous records, clear those records
[515] Fix | Delete
$q = "DELETE FROM `$tb_url_file` WHERE filename = %s AND expired > 0";
[516] Fix | Delete
$wpdb->query($wpdb->prepare($q, $filecon_md5));
[517] Fix | Delete
[518] Fix | Delete
// Check if there is any other record used the same filename or not
[519] Fix | Delete
$q = "SELECT id FROM `$tb_url_file` WHERE filename = %s AND expired = 0 AND id != %d LIMIT 1";
[520] Fix | Delete
if ($file_row && $wpdb->get_var($wpdb->prepare($q, array($file_row['filename'], $file_row['id'])))) {
[521] Fix | Delete
$q = "UPDATE `$tb_url_file` SET filename=%s WHERE id=%d";
[522] Fix | Delete
$wpdb->query($wpdb->prepare($q, array($filecon_md5, $file_row['id'])));
[523] Fix | Delete
return;
[524] Fix | Delete
}
[525] Fix | Delete
[526] Fix | Delete
// New record needed
[527] Fix | Delete
$q = "INSERT INTO `$tb_url_file` SET url_id=%d, vary=%s, filename=%s, type=%d, mobile=%d, webp=%d, expired=0";
[528] Fix | Delete
$wpdb->query($wpdb->prepare($q, array($url_id, $vary, $filecon_md5, $type, $mobile ? 1 : 0, $webp ? 1 : 0)));
[529] Fix | Delete
[530] Fix | Delete
// Mark existing rows as expired
[531] Fix | Delete
if ($file_row) {
[532] Fix | Delete
$q = "UPDATE `$tb_url_file` SET expired=%d WHERE id=%d";
[533] Fix | Delete
$expired = time() + 86400 * apply_filters('litespeed_url_file_expired_days', 20);
[534] Fix | Delete
$wpdb->query($wpdb->prepare($q, array($expired, $file_row['id'])));
[535] Fix | Delete
[536] Fix | Delete
// Also check if has other files expired already to be deleted
[537] Fix | Delete
$q = "SELECT * FROM `$tb_url_file` WHERE url_id = %d AND expired BETWEEN 1 AND %d";
[538] Fix | Delete
$q = $wpdb->prepare($q, array($url_id, time()));
[539] Fix | Delete
$list = $wpdb->get_results($q, ARRAY_A);
[540] Fix | Delete
if ($list) {
[541] Fix | Delete
foreach ($list as $v) {
[542] Fix | Delete
$file_to_del = $path . '/' . $v['filename'] . '.' . ($file_type == 'js' ? 'js' : 'css');
[543] Fix | Delete
if (file_exists($file_to_del)) {
[544] Fix | Delete
// Safe to delete
[545] Fix | Delete
Debug2::debug('[Data] Delete expired unused file: ' . $file_to_del);
[546] Fix | Delete
[547] Fix | Delete
// Clear related lscache first to avoid cache copy of same URL w/ diff QS
[548] Fix | Delete
// Purge::add( Tag::TYPE_MIN . '.' . $file_row[ 'filename' ] . '.' . $file_type );
[549] Fix | Delete
[550] Fix | Delete
unlink($file_to_del);
[551] Fix | Delete
}
[552] Fix | Delete
}
[553] Fix | Delete
$q = "DELETE FROM `$tb_url_file` WHERE url_id = %d AND expired BETWEEN 1 AND %d";
[554] Fix | Delete
$wpdb->query($wpdb->prepare($q, array($url_id, time())));
[555] Fix | Delete
}
[556] Fix | Delete
}
[557] Fix | Delete
[558] Fix | Delete
// Purge this URL to avoid cache copy of same URL w/ diff QS
[559] Fix | Delete
// $this->cls( 'Purge' )->purge_url( Utility::make_relative( $request_url ) ?: '/', true, true );
[560] Fix | Delete
}
[561] Fix | Delete
[562] Fix | Delete
/**
[563] Fix | Delete
* Load CCSS related file
[564] Fix | Delete
* @since 4.0
[565] Fix | Delete
*/
[566] Fix | Delete
public function load_url_file($request_url, $vary, $file_type)
[567] Fix | Delete
{
[568] Fix | Delete
global $wpdb;
[569] Fix | Delete
[570] Fix | Delete
if (strlen($vary) > 32) {
[571] Fix | Delete
$vary = md5($vary);
[572] Fix | Delete
}
[573] Fix | Delete
[574] Fix | Delete
$type = $this->_url_file_types[$file_type];
[575] Fix | Delete
[576] Fix | Delete
self::debug2('load url file: ' . $request_url);
[577] Fix | Delete
[578] Fix | Delete
$tb_url = $this->tb('url');
[579] Fix | Delete
$q = "SELECT * FROM `$tb_url` WHERE url=%s";
[580] Fix | Delete
$url_row = $wpdb->get_row($wpdb->prepare($q, $request_url), ARRAY_A);
[581] Fix | Delete
if (!$url_row) {
[582] Fix | Delete
return false;
[583] Fix | Delete
}
[584] Fix | Delete
[585] Fix | Delete
$url_id = $url_row['id'];
[586] Fix | Delete
[587] Fix | Delete
$tb_url_file = $this->tb('url_file');
[588] Fix | Delete
$q = "SELECT * FROM `$tb_url_file` WHERE url_id=%d AND vary=%s AND type=%d AND expired=0";
[589] Fix | Delete
$file_row = $wpdb->get_row($wpdb->prepare($q, array($url_id, $vary, $type)), ARRAY_A);
[590] Fix | Delete
if (!$file_row) {
[591] Fix | Delete
return false;
[592] Fix | Delete
}
[593] Fix | Delete
[594] Fix | Delete
return $file_row['filename'];
[595] Fix | Delete
}
[596] Fix | Delete
[597] Fix | Delete
/**
[598] Fix | Delete
* Mark all entries of one URL to expired
[599] Fix | Delete
* @since 4.5
[600] Fix | Delete
*/
[601] Fix | Delete
public function mark_as_expired($request_url, $auto_q = false)
[602] Fix | Delete
{
[603] Fix | Delete
global $wpdb;
[604] Fix | Delete
$tb_url = $this->tb('url');
[605] Fix | Delete
[606] Fix | Delete
Debug2::debug('[Data] Try to mark as expired: ' . $request_url);
[607] Fix | Delete
$q = "SELECT * FROM `$tb_url` WHERE url=%s";
[608] Fix | Delete
$url_row = $wpdb->get_row($wpdb->prepare($q, $request_url), ARRAY_A);
[609] Fix | Delete
if (!$url_row) {
[610] Fix | Delete
return;
[611] Fix | Delete
}
[612] Fix | Delete
[613] Fix | Delete
Debug2::debug('[Data] Mark url_id=' . $url_row['id'] . ' as expired');
[614] Fix | Delete
[615] Fix | Delete
$tb_url_file = $this->tb('url_file');
[616] Fix | Delete
[617] Fix | Delete
$existing_url_files = array();
[618] Fix | Delete
if ($auto_q) {
[619] Fix | Delete
$q = "SELECT a.*, b.url FROM `$tb_url_file` a LEFT JOIN `$tb_url` b ON b.id=a.url_id WHERE a.url_id=%d AND a.type=4 AND a.expired=0";
[620] Fix | Delete
$q = $wpdb->prepare($q, $url_row['id']);
[621] Fix | Delete
$existing_url_files = $wpdb->get_results($q, ARRAY_A);
[622] Fix | Delete
}
[623] Fix | Delete
$q = "UPDATE `$tb_url_file` SET expired=%d WHERE url_id=%d AND type=4 AND expired=0";
[624] Fix | Delete
$expired = time() + 86400 * apply_filters('litespeed_url_file_expired_days', 20);
[625] Fix | Delete
$wpdb->query($wpdb->prepare($q, array($expired, $url_row['id'])));
[626] Fix | Delete
[627] Fix | Delete
return $existing_url_files;
[628] Fix | Delete
}
[629] Fix | Delete
[630] Fix | Delete
/**
[631] Fix | Delete
* Get list from `data/css_excludes.txt`
[632] Fix | Delete
*
[633] Fix | Delete
* @since 3.6
[634] Fix | Delete
*/
[635] Fix | Delete
public function load_css_exc($list)
[636] Fix | Delete
{
[637] Fix | Delete
$data = $this->_load_per_line('css_excludes.txt');
[638] Fix | Delete
if ($data) {
[639] Fix | Delete
$list = array_unique(array_filter(array_merge($list, $data)));
[640] Fix | Delete
}
[641] Fix | Delete
[642] Fix | Delete
return $list;
[643] Fix | Delete
}
[644] Fix | Delete
[645] Fix | Delete
/**
[646] Fix | Delete
* Get list from `data/ucss_whitelist.txt`
[647] Fix | Delete
*
[648] Fix | Delete
* @since 4.0
[649] Fix | Delete
*/
[650] Fix | Delete
public function load_ucss_whitelist($list)
[651] Fix | Delete
{
[652] Fix | Delete
$data = $this->_load_per_line('ucss_whitelist.txt');
[653] Fix | Delete
if ($data) {
[654] Fix | Delete
$list = array_unique(array_filter(array_merge($list, $data)));
[655] Fix | Delete
}
[656] Fix | Delete
[657] Fix | Delete
return $list;
[658] Fix | Delete
}
[659] Fix | Delete
[660] Fix | Delete
/**
[661] Fix | Delete
* Get list from `data/js_excludes.txt`
[662] Fix | Delete
*
[663] Fix | Delete
* @since 3.5
[664] Fix | Delete
*/
[665] Fix | Delete
public function load_js_exc($list)
[666] Fix | Delete
{
[667] Fix | Delete
$data = $this->_load_per_line('js_excludes.txt');
[668] Fix | Delete
if ($data) {
[669] Fix | Delete
$list = array_unique(array_filter(array_merge($list, $data)));
[670] Fix | Delete
}
[671] Fix | Delete
[672] Fix | Delete
return $list;
[673] Fix | Delete
}
[674] Fix | Delete
[675] Fix | Delete
/**
[676] Fix | Delete
* Get list from `data/js_defer_excludes.txt`
[677] Fix | Delete
*
[678] Fix | Delete
* @since 3.6
[679] Fix | Delete
*/
[680] Fix | Delete
public function load_js_defer_exc($list)
[681] Fix | Delete
{
[682] Fix | Delete
$data = $this->_load_per_line('js_defer_excludes.txt');
[683] Fix | Delete
if ($data) {
[684] Fix | Delete
$list = array_unique(array_filter(array_merge($list, $data)));
[685] Fix | Delete
}
[686] Fix | Delete
[687] Fix | Delete
return $list;
[688] Fix | Delete
}
[689] Fix | Delete
[690] Fix | Delete
/**
[691] Fix | Delete
* Get list from `data/optm_uri_exc.txt`
[692] Fix | Delete
*
[693] Fix | Delete
* @since 5.4
[694] Fix | Delete
*/
[695] Fix | Delete
public function load_optm_uri_exc($list)
[696] Fix | Delete
{
[697] Fix | Delete
$data = $this->_load_per_line('optm_uri_exc.txt');
[698] Fix | Delete
if ($data) {
[699] Fix | Delete
$list = array_unique(array_filter(array_merge($list, $data)));
[700] Fix | Delete
}
[701] Fix | Delete
[702] Fix | Delete
return $list;
[703] Fix | Delete
}
[704] Fix | Delete
[705] Fix | Delete
/**
[706] Fix | Delete
* Get list from `data/esi.nonces.txt`
[707] Fix | Delete
*
[708] Fix | Delete
* @since 3.5
[709] Fix | Delete
*/
[710] Fix | Delete
public function load_esi_nonces($list)
[711] Fix | Delete
{
[712] Fix | Delete
$data = $this->_load_per_line('esi.nonces.txt');
[713] Fix | Delete
if ($data) {
[714] Fix | Delete
$list = array_unique(array_filter(array_merge($list, $data)));
[715] Fix | Delete
}
[716] Fix | Delete
[717] Fix | Delete
return $list;
[718] Fix | Delete
}
[719] Fix | Delete
[720] Fix | Delete
/**
[721] Fix | Delete
* Get list from `data/cache_nocacheable.txt`
[722] Fix | Delete
*
[723] Fix | Delete
* @since 6.3.0.1
[724] Fix | Delete
*/
[725] Fix | Delete
public function load_cache_nocacheable($list)
[726] Fix | Delete
{
[727] Fix | Delete
$data = $this->_load_per_line('cache_nocacheable.txt');
[728] Fix | Delete
if ($data) {
[729] Fix | Delete
$list = array_unique(array_filter(array_merge($list, $data)));
[730] Fix | Delete
}
[731] Fix | Delete
[732] Fix | Delete
return $list;
[733] Fix | Delete
}
[734] Fix | Delete
[735] Fix | Delete
/**
[736] Fix | Delete
* Load file per line
[737] Fix | Delete
*
[738] Fix | Delete
* Support two kinds of comments:
[739] Fix | Delete
* 1. `# this is comment`
[740] Fix | Delete
* 2. `##this is comment`
[741] Fix | Delete
*
[742] Fix | Delete
* @since 3.5
[743] Fix | Delete
*/
[744] Fix | Delete
private function _load_per_line($file)
[745] Fix | Delete
{
[746] Fix | Delete
$data = File::read(LSCWP_DIR . 'data/' . $file);
[747] Fix | Delete
$data = explode(PHP_EOL, $data);
[748] Fix | Delete
$list = array();
[749] Fix | Delete
foreach ($data as $v) {
[750] Fix | Delete
// Drop two kinds of comments
[751] Fix | Delete
if (strpos($v, '##') !== false) {
[752] Fix | Delete
$v = trim(substr($v, 0, strpos($v, '##')));
[753] Fix | Delete
}
[754] Fix | Delete
if (strpos($v, '# ') !== false) {
[755] Fix | Delete
$v = trim(substr($v, 0, strpos($v, '# ')));
[756] Fix | Delete
}
[757] Fix | Delete
[758] Fix | Delete
if (!$v) {
[759] Fix | Delete
continue;
[760] Fix | Delete
}
[761] Fix | Delete
[762] Fix | Delete
$list[] = $v;
[763] Fix | Delete
}
[764] Fix | Delete
[765] Fix | Delete
return $list;
[766] Fix | Delete
}
[767] Fix | Delete
}
[768] Fix | Delete
[769] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function