HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/hcv/wp-content/plugins/w3-total-cache/Generic_AdminActions_Test.php
<?php
namespace W3TC;



class Generic_AdminActions_Test {

	private $_config = null;

	/**
	 * Current page
	 *
	 * @var null|string
	 */
	private $_page = null;

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

		$this->_page = Util_Admin::get_current_page();
	}


	/**
	 * Test memcached
	 *
	 * @return void
	 */
	function w3tc_test_memcached() {
		$servers = Util_Request::get_array( 'servers' );

		$this->respond_test_result( $this->is_memcache_available( $servers ) );
	}

	/**
	 * Test memcached
	 *
	 * @return void
	 */
	function w3tc_test_redis() {
		$servers = Util_Request::get_array( 'servers' );
		$password   = Util_Request::get_string('password', '');
		$dbid       = Util_Request::get_integer( 'dbid', 0 );

		if ( count( $servers ) <= 0 )
			$success = false;
		else {
			$success = true;

			foreach ( $servers as $server ) {
				@$cache = Cache::instance( 'redis', array(
						'servers' => $server,
						'persistent' => false,
						'password' => $password,
						'dbid' => $dbid
					) );
				if ( is_null( $cache ) )
					$success = false;

				$test_string = sprintf( 'test_' . md5( time() ) );
				$test_value = array( 'content' => $test_string );
				$cache->set( $test_string, $test_value, 60 );
				$test_value = $cache->get( $test_string );
				if ( $test_value['content'] != $test_string )
					$success = false;
			}
		}

		$this->respond_test_result( $success );
	}

	private function respond_test_result( $success ) {
		if ( $success ) {
			$response = array(
				'result' => true,
				'error' => __( 'Test passed.', 'w3-total-cache' )
			);
		} else {
			$response = array(
				'result' => false,
				'error' => __( 'Test failed.', 'w3-total-cache' )
			);
		}

		echo json_encode( $response );
		exit();
	}

	/**
	 * Test minifier action
	 *
	 * @return void
	 */
	function w3tc_test_minifier() {
		$engine = Util_Request::get_string( 'engine' );
		$path_java = Util_Request::get_string( 'path_java' );
		$path_jar = Util_Request::get_string( 'path_jar' );

		$result = false;
		$error = '';

		if ( $engine != 'googleccjs' ) {
			if ( !$path_java )
				$error = __( 'Empty JAVA executable path.', 'w3-total-cache' );
			elseif ( !$path_jar )
				$error = __( 'Empty JAR file path.', 'w3-total-cache' );
		}

		if ( empty( $error ) ) {
			switch ( $engine ) {
			case 'yuijs':
				\W3TCL\Minify\Minify_YUICompressor::$tempDir = Util_File::create_tmp_dir();
				\W3TCL\Minify\Minify_YUICompressor::$javaExecutable = $path_java;
				\W3TCL\Minify\Minify_YUICompressor::$jarFile = $path_jar;

				$result = \W3TCL\Minify\Minify_YUICompressor::testJs( $error );
				break;

			case 'yuicss':
				\W3TCL\Minify\Minify_YUICompressor::$tempDir = Util_File::create_tmp_dir();
				\W3TCL\Minify\Minify_YUICompressor::$javaExecutable = $path_java;
				\W3TCL\Minify\Minify_YUICompressor::$jarFile = $path_jar;

				$result = \W3TCL\Minify\Minify_YUICompressor::testCss( $error );
				break;

			case 'ccjs':
				\W3TCL\Minify\Minify_ClosureCompiler::$tempDir = Util_File::create_tmp_dir();
				\W3TCL\Minify\Minify_ClosureCompiler::$javaExecutable = $path_java;
				\W3TCL\Minify\Minify_ClosureCompiler::$jarFile = $path_jar;

				$result = \W3TCL\Minify\Minify_ClosureCompiler::test( $error );
				break;

			case 'googleccjs':

				$result = \W3TCL\Minify\Minify_JS_ClosureCompiler::test( $error );
				break;

			default:
				$error = __( 'Invalid engine.', 'w3-total-cache' );
				break;
			}
		}

		$response = array(
			'result' => $result,
			'error' => $error
		);

		echo json_encode( $response );
	}

	/**
	 * Check if memcache is available
	 *
	 * @param array   $servers
	 * @return boolean
	 */
	private function is_memcache_available( $servers ) {
		if ( count( $servers ) <= 0 )
			return false;

		foreach ( $servers as $server ) {
			@$memcached = Cache::instance( 'memcached', array(
					'servers' => $server,
					'persistent' => false
				) );
			if ( is_null( $memcached ) )
				return false;

			$test_string = sprintf( 'test_' . md5( time() ) );
			$test_value = array( 'content' => $test_string );
			$memcached->set( $test_string, $test_value, 60 );
			$test_value = $memcached->get( $test_string );
			if ( $test_value['content'] != $test_string )
				return false;
		}

		return true;
	}

	/**
	 * Self test action
	 */
	function w3tc_test_self() {
		include W3TC_INC_LIGHTBOX_DIR . '/self_test.php';
	}

	/**
	 * Minify recommendations action
	 *
	 * @return void
	 */
	function w3tc_test_minify_recommendations() {
		$options_minify = new Minify_Page();
		$options_minify->recommendations();
	}


	/**
	 * Page Speed results action
	 *
	 * @return void
	 */
	function w3tc_test_pagespeed_results() {
		$title = 'Google Page Speed';

		$config = Dispatcher::config();
		$key = $config->get_string( 'widget.pagespeed.key' );
		$ref = $config->get_string( 'widget.pagespeed.key.restrict.referrer' );

 		$w3_pagespeed = new PageSpeed_Api( $key, $ref );

		$results = $w3_pagespeed->analyze( get_home_url() );
		include W3TC_INC_POPUP_DIR . '/pagespeed_results.php';
	}
}