Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/litespee.../src
File: css.cls.php
[500] Fix | Delete
if ( empty( $attrs['rel'] ) ) {
[501] Fix | Delete
continue;
[502] Fix | Delete
}
[503] Fix | Delete
[504] Fix | Delete
if ( 'stylesheet' !== $attrs['rel'] ) {
[505] Fix | Delete
if ( 'preload' !== $attrs['rel'] || empty( $attrs['as'] ) || 'style' !== $attrs['as'] ) {
[506] Fix | Delete
continue;
[507] Fix | Delete
}
[508] Fix | Delete
}
[509] Fix | Delete
[510] Fix | Delete
if ( ! empty( $attrs['media'] ) && false !== strpos( $attrs['media'], 'print' ) ) {
[511] Fix | Delete
continue;
[512] Fix | Delete
}
[513] Fix | Delete
[514] Fix | Delete
if ( empty( $attrs['href'] ) ) {
[515] Fix | Delete
continue;
[516] Fix | Delete
}
[517] Fix | Delete
[518] Fix | Delete
// Check Google fonts hit
[519] Fix | Delete
if ( false !== strpos( $attrs['href'], 'fonts.googleapis.com' ) ) {
[520] Fix | Delete
$html = str_replace( $match[0], '', $html );
[521] Fix | Delete
continue;
[522] Fix | Delete
}
[523] Fix | Delete
[524] Fix | Delete
$debug_info = $attrs['href'];
[525] Fix | Delete
[526] Fix | Delete
// Load CSS content
[527] Fix | Delete
if ( ! $dryrun ) {
[528] Fix | Delete
// Dryrun will not load CSS but just drop them
[529] Fix | Delete
$con = $this->cls( 'Optimizer' )->load_file( $attrs['href'] );
[530] Fix | Delete
if ( ! $con ) {
[531] Fix | Delete
continue;
[532] Fix | Delete
}
[533] Fix | Delete
} else {
[534] Fix | Delete
$con = '';
[535] Fix | Delete
}
[536] Fix | Delete
} else {
[537] Fix | Delete
// Inline style
[538] Fix | Delete
$attrs = Utility::parse_attr( $match[2] );
[539] Fix | Delete
[540] Fix | Delete
if ( ! empty( $attrs['media'] ) && false !== strpos( $attrs['media'], 'print' ) ) {
[541] Fix | Delete
continue;
[542] Fix | Delete
}
[543] Fix | Delete
[544] Fix | Delete
Debug2::debug2( '[CSS] Load inline CSS ' . substr( $match[3], 0, 100 ) . '...', $attrs );
[545] Fix | Delete
$con = $match[3];
[546] Fix | Delete
[547] Fix | Delete
$debug_info = '__INLINE__';
[548] Fix | Delete
}
[549] Fix | Delete
[550] Fix | Delete
$con = Optimizer::minify_css( $con );
[551] Fix | Delete
if ( $is_webp && $this->cls( 'Media' )->webp_support() ) {
[552] Fix | Delete
$con = $this->cls( 'Media' )->replace_background_webp( $con );
[553] Fix | Delete
}
[554] Fix | Delete
[555] Fix | Delete
if ( ! empty( $attrs['media'] ) && 'all' !== $attrs['media'] ) {
[556] Fix | Delete
$con = '@media ' . $attrs['media'] . '{' . $con . "}\n";
[557] Fix | Delete
} else {
[558] Fix | Delete
$con = $con . "\n";
[559] Fix | Delete
}
[560] Fix | Delete
[561] Fix | Delete
$con = '/* ' . $debug_info . ' */' . $con;
[562] Fix | Delete
$css .= $con;
[563] Fix | Delete
[564] Fix | Delete
$html = str_replace( $match[0], '', $html );
[565] Fix | Delete
}
[566] Fix | Delete
[567] Fix | Delete
return [ $css, $html ];
[568] Fix | Delete
}
[569] Fix | Delete
[570] Fix | Delete
/**
[571] Fix | Delete
* Filter the comment content, add quotes to selector from whitelist. Return the json.
[572] Fix | Delete
*
[573] Fix | Delete
* @since 7.1
[574] Fix | Delete
* @return array
[575] Fix | Delete
*/
[576] Fix | Delete
private function _filter_whitelist() {
[577] Fix | Delete
$whitelist = [];
[578] Fix | Delete
$list = apply_filters( 'litespeed_ccss_whitelist', $this->conf( self::O_OPTM_CCSS_SELECTOR_WHITELIST ) );
[579] Fix | Delete
foreach ( $list as $v ) {
[580] Fix | Delete
if ( substr( $v, 0, 2 ) === '//' ) {
[581] Fix | Delete
continue;
[582] Fix | Delete
}
[583] Fix | Delete
$whitelist[] = $v;
[584] Fix | Delete
}
[585] Fix | Delete
[586] Fix | Delete
return $whitelist;
[587] Fix | Delete
}
[588] Fix | Delete
[589] Fix | Delete
/**
[590] Fix | Delete
* Notify finished from server.
[591] Fix | Delete
*
[592] Fix | Delete
* @since 7.1
[593] Fix | Delete
* @return array
[594] Fix | Delete
*/
[595] Fix | Delete
public function notify() {
[596] Fix | Delete
// phpcs:ignore WordPress.Security.NonceVerification.Missing
[597] Fix | Delete
$post_data = \json_decode( file_get_contents( 'php://input' ), true );
[598] Fix | Delete
if ( is_null( $post_data ) ) {
[599] Fix | Delete
// Fallback for form-encoded payloads
[600] Fix | Delete
// phpcs:ignore WordPress.Security.NonceVerification.Missing
[601] Fix | Delete
$post_data = $_POST;
[602] Fix | Delete
}
[603] Fix | Delete
self::debug( 'notify() data', $post_data );
[604] Fix | Delete
[605] Fix | Delete
$this->_queue = $this->load_queue( 'ccss' );
[606] Fix | Delete
[607] Fix | Delete
list( $post_data ) = $this->cls( 'Cloud' )->extract_msg( $post_data, 'ccss' );
[608] Fix | Delete
[609] Fix | Delete
$notified_data = $post_data['data'];
[610] Fix | Delete
if ( empty( $notified_data ) || ! is_array( $notified_data ) ) {
[611] Fix | Delete
self::debug( '❌ notify exit: no notified data' );
[612] Fix | Delete
return Cloud::err( 'no notified data' );
[613] Fix | Delete
}
[614] Fix | Delete
[615] Fix | Delete
// Check if its in queue or not
[616] Fix | Delete
$valid_i = 0;
[617] Fix | Delete
foreach ( $notified_data as $v ) {
[618] Fix | Delete
if ( empty( $v['request_url'] ) ) {
[619] Fix | Delete
self::debug( '❌ notify bypass: no request_url', $v );
[620] Fix | Delete
continue;
[621] Fix | Delete
}
[622] Fix | Delete
if ( empty( $v['queue_k'] ) ) {
[623] Fix | Delete
self::debug( '❌ notify bypass: no queue_k', $v );
[624] Fix | Delete
continue;
[625] Fix | Delete
}
[626] Fix | Delete
[627] Fix | Delete
if ( empty( $this->_queue[ $v['queue_k'] ] ) ) {
[628] Fix | Delete
self::debug( '❌ notify bypass: no this queue [q_k]' . $v['queue_k'] );
[629] Fix | Delete
continue;
[630] Fix | Delete
}
[631] Fix | Delete
[632] Fix | Delete
// Save data
[633] Fix | Delete
if ( ! empty( $v['data_ccss'] ) ) {
[634] Fix | Delete
$is_mobile = $this->_queue[ $v['queue_k'] ]['is_mobile'];
[635] Fix | Delete
$is_webp = $this->_queue[ $v['queue_k'] ]['is_webp'];
[636] Fix | Delete
$this->_save_con( 'ccss', $v['data_ccss'], $v['queue_k'], $is_mobile, $is_webp );
[637] Fix | Delete
[638] Fix | Delete
++$valid_i;
[639] Fix | Delete
}
[640] Fix | Delete
[641] Fix | Delete
unset( $this->_queue[ $v['queue_k'] ] );
[642] Fix | Delete
self::debug( 'notify data handled, unset queue [q_k] ' . $v['queue_k'] );
[643] Fix | Delete
}
[644] Fix | Delete
$this->save_queue( 'ccss', $this->_queue );
[645] Fix | Delete
[646] Fix | Delete
self::debug( 'notified' );
[647] Fix | Delete
[648] Fix | Delete
return Cloud::ok( [ 'count' => $valid_i ] );
[649] Fix | Delete
}
[650] Fix | Delete
[651] Fix | Delete
/**
[652] Fix | Delete
* Handle all request actions from main cls.
[653] Fix | Delete
*
[654] Fix | Delete
* @since 2.3
[655] Fix | Delete
* @access public
[656] Fix | Delete
* @return void
[657] Fix | Delete
*/
[658] Fix | Delete
public function handler() {
[659] Fix | Delete
$type = Router::verify_type();
[660] Fix | Delete
[661] Fix | Delete
switch ( $type ) {
[662] Fix | Delete
case self::TYPE_GEN_CCSS:
[663] Fix | Delete
self::cron_ccss( true );
[664] Fix | Delete
break;
[665] Fix | Delete
[666] Fix | Delete
case self::TYPE_CLEAR_Q_CCSS:
[667] Fix | Delete
$this->clear_q( 'ccss' );
[668] Fix | Delete
break;
[669] Fix | Delete
[670] Fix | Delete
default:
[671] Fix | Delete
break;
[672] Fix | Delete
}
[673] Fix | Delete
[674] Fix | Delete
Admin::redirect();
[675] Fix | Delete
}
[676] Fix | Delete
}
[677] Fix | Delete
[678] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function