re WordPress.PHP.NoSilencedErrors.Discouraged
wp_safe_redirect( $url, $status_code );
exit();
}
/**
* Fallback for wp_sfe_redirect().
*
* @static
*
* @param string $url URL.
* @return string
*/
public static function wp_safe_redirect_fallback( $url ) {
return home_url( '?w3tc_repeat=invalid' );
}
/**
* Detects post ID.
*
* @static
*
* @return int
*/
public static function detect_post_id() {
global $posts, $comment_post_ID, $post_ID; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
$p_val = Util_Request::get_integer( 'p' );
if ( $post_ID ) {
return $post_ID;
} elseif ( $comment_post_ID ) { // phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
return $comment_post_ID; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
} elseif ( ( is_single() || is_page() ) && is_array( $posts ) && isset( $posts[0]->ID ) ) {
return $posts[0]->ID;
} elseif ( isset( $posts->ID ) ) {
return $posts->ID;
} elseif ( ! empty( $p_val ) ) {
return $p_val;
}
return 0;
}
/**
* Get W3TC instance id.
*
* @static
*
* @return int
*/
public static function instance_id() {
if ( defined( 'W3TC_INSTANCE_ID' ) ) {
return W3TC_INSTANCE_ID;
}
static $instance_id;
if ( ! isset( $instance_id ) ) {
$config = Dispatcher::config();
$instance_id = $config->get_integer( 'common.instance_id', 0 );
}
return $instance_id;
}
/**
* Get W3TC edition.
*
* @static
*
* @param Config $config Config.
* @return string
*/
public static function w3tc_edition( $config = null ) {
if ( self::is_w3tc_pro( $config ) && self::is_w3tc_pro_dev() ) {
return 'pro development';
}
if ( self::is_w3tc_pro( $config ) ) {
return 'pro';
}
return 'community';
}
/**
* Is W3TC Pro.
*
* @static
*
* @param Config $config Config.
* @return bool
*/
public static function is_w3tc_pro( $config = null ) {
if ( defined( 'W3TC_PRO' ) && W3TC_PRO ) {
return true;
}
if ( defined( 'W3TC_ENTERPRISE' ) && W3TC_ENTERPRISE ) {
return true;
}
if ( is_object( $config ) ) {
$plugin_type = $config->get_string( 'plugin.type' );
if ( 'pro' === $plugin_type || 'pro_dev' === $plugin_type ) {
return true;
}
}
return false;
}
/**
* Enable Pro Dev mode support.
*
* @static
*
* @return bool
*/
public static function is_w3tc_pro_dev() {
return defined( 'W3TC_PRO_DEV_MODE' ) && W3TC_PRO_DEV_MODE;
}
/**
* Quotes regular expression string.
*
* @static
*
* @param string $string String.
* @param string $delimiter Delimeter.
* @return string
*/
public static function preg_quote( $string, $delimiter = '~' ) {
$string = preg_quote( $string, $delimiter );
$string = strtr(
$string,
array( ' ' => '\ ' )
);
return $string;
}
/**
* Returns true if zlib output compression is enabled otherwise false.
*
* @static
*
* @return bool
*/
public static function is_zlib_enabled() {
return self::to_boolean( ini_get( 'zlib.output_compression' ) );
}
/**
* Recursive strips slahes from the var.
*
* @static
*
* @param mixed $var Value.
* @return mixed
*/
public static function stripslashes( $var ) {
if ( is_string( $var ) ) {
return stripslashes( $var );
} elseif ( is_array( $var ) ) {
$var = array_map( array( '\W3TC\Util_Environment', 'stripslashes' ), $var );
}
return $var;
}
/**
* Checks if post should be flushed or not. Returns true if it should not be flushed.
*
* @static
*
* @param object $post Post object.
* @param string $module Which cache module to check against (pgcache, varnish, dbcache or objectcache).
* @param Config $config Config.
* @return bool
*/
public static function is_flushable_post( $post, $module, $config ) {
if ( is_numeric( $post ) ) {
$post = get_post( $post );
}
$post_status = array( 'publish' );
/**
* Dont flush when we have post "attachment"
* its child of the post and is flushed always when post is published, while not changed in fact.
*/
$post_type = array( 'revision', 'attachment' );
switch ( $module ) {
case 'pgcache':
case 'varnish':
case 'posts': // Means html content of post pages.
if ( ! $config->get_boolean( 'pgcache.reject.logged' ) ) {
$post_status[] = 'private';
}
break;
case 'dbcache':
if ( ! $config->get_boolean( 'dbcache.reject.logged' ) ) {
$post_status[] = 'private';
}
break;
}
$flushable = is_object( $post ) && ! in_array( $post->post_type, $post_type, true ) && in_array( $post->post_status, $post_status, true );
return apply_filters( 'w3tc_flushable_post', $flushable, $post, $module );
}
/**
* Checks if post belongs to a custom post type.
*
* @since 2.1.7
* @static
*
* @param object $post Post object.
* @return bool
*/
public static function is_custom_post_type( $post ) {
$post_type = get_post_type_object( $post->post_type );
// post type not found belongs to default post type(s).
if ( empty( $post_type ) ) {
return false;
}
// check if custom.
if ( false === $post_type->_builtin ) {
return true;
}
return false;
}
/**
* Converts value to boolean.
*
* @static
*
* @param mixed $value Value.
* @return bool
*/
public static function to_boolean( $value ) {
if ( is_string( $value ) ) {
switch ( strtolower( $value ) ) {
case '+':
case '1':
case 'y':
case 'on':
case 'yes':
case 'true':
case 'enabled':
return true;
case '-':
case '0':
case 'n':
case 'no':
case 'off':
case 'false':
case 'disabled':
return false;
}
}
return (boolean) $value;
}
/**
* Returns the apache, nginx version.
*
* @static
*
* @return string
*/
public static function get_server_version() {
$sig = explode(
'/',
isset( $_SERVER['SERVER_SOFTWARE'] ) ?
htmlspecialchars( stripslashes( $_SERVER['SERVER_SOFTWARE'] ) ) : '' // phpcs:ignore
);
$temp = isset( $sig[1] ) ? explode( ' ', $sig[1] ) : array( '0' );
$version = $temp[0];
return $version;
}
/**
* Checks if current request is REST REQUEST.
*
* @static
*/
public static function is_rest_request( $url ) {
if ( defined( 'REST_REQUEST' ) && REST_REQUEST )
return true;
// in case when called before constant is set
// wp filters are not available in that case
return preg_match( '~' . W3TC_WP_JSON_URI . '~', $url );
}
/**
* Reset microcache.
*
* @static
*/
public static function reset_microcache() {
global $w3_current_blog_id;
$w3_current_blog_id = null;
self::$is_using_master_config = null;
}
/**
* Removes blank lines, trim values, removes duplicates, and sorts array.
*
* @since 2.4.3
*
* @param array $values Array of values.
*
* @return array
*/
public static function clean_array( $values ) {
if ( ! empty( $values ) && is_array( $values ) ) {
$values = array_unique(
array_filter(
array_map(
'trim',
$values
),
'strlen'
)
);
sort( $values );
}
return $values;
}
/**
* Parses textarea setting value from string to array.
*
* @since 2.4.3
*
* @param string $value Value.
*
* @return array
*/
public static function textarea_to_array( $value ) {
$values_array = array();
if ( ! empty( $value ) ) {
$values_array = self::clean_array(
preg_split(
'/\R/',
$value,
0,
PREG_SPLIT_NO_EMPTY
)
);
}
return $values_array;
}
}
Fatal error: Uncaught Error: Class 'W3TC\Util_Environment' not found in /home/islamicf/public_html/wp-content/plugins/w3-total-cache/Config.php:118
Stack trace:
#0 /home/islamicf/public_html/wp-content/plugins/w3-total-cache/Dispatcher.php(16): W3TC\Config->__construct()
#1 /home/islamicf/public_html/wp-content/plugins/w3-total-cache/Dispatcher.php(26): W3TC\Dispatcher::component('Config')
#2 /home/islamicf/public_html/wp-content/plugins/w3-total-cache/Mobile_Redirect.php(16): W3TC\Dispatcher::config()
#3 /home/islamicf/public_html/wp-content/plugins/w3-total-cache/Dispatcher.php(16): W3TC\Mobile_Redirect->__construct()
#4 /home/islamicf/public_html/wp-content/advanced-cache.php(31): W3TC\Dispatcher::component('Mobile_Redirect')
#5 /home/islamicf/public_html/wp-settings.php(97): include('/home/islamicf/...')
#6 /home/islamicf/public_html/wp-config.php(99): require_once('/home/islamicf/...')
#7 /home/islamicf/public_html/wp-load.php(50): require_once('/home/islamicf/...')
#8 /home/islamicf/public_html/wp-blog-header.php(13 in /home/islamicf/public_html/wp-content/plugins/w3-total-cache/Config.php on line 118