oont-contents/plugins/jetpack-boost/app/lib/minify/class-config.php
2025-04-06 08:34:48 +02:00

146 lines
3.6 KiB
PHP

<?php
namespace Automattic\Jetpack_Boost\Lib\Minify;
/**
* Configuration management for the minification system.
*/
class Config {
/**
* Get the directory path for storing static cache files.
*/
public static function get_static_cache_dir_path() {
return WP_CONTENT_DIR . '/boost-cache/static';
}
/**
* Get the directory path for storing cache files.
*/
public static function get_legacy_cache_dir_path() {
if ( defined( 'PAGE_OPTIMIZE_CACHE_DIR' ) ) {
if ( empty( \PAGE_OPTIMIZE_CACHE_DIR ) ) {
return false;
}
return \PAGE_OPTIMIZE_CACHE_DIR;
}
return WP_CONTENT_DIR . '/cache/page_optimize';
}
/**
* Get WordPress ABSPATH, with support for custom configuration.
*/
public static function get_abspath() {
return defined( 'PAGE_OPTIMIZE_ABSPATH' ) ? \PAGE_OPTIMIZE_ABSPATH : \ABSPATH;
}
/**
* Check if static cache can be used.
*/
public static function can_use_static_cache() {
$cache_dir = static::get_static_cache_dir_path();
if ( ! static::ensure_dir_exists( $cache_dir ) ) {
static::log_error(
sprintf(
/* translators: a filesystem path to a directory */
__( "Disabling concatenate static cache. Unable to create cache directory '%s'.", 'jetpack-boost' ),
$cache_dir
)
);
return false;
}
if ( ! static::is_dir_writable( $cache_dir ) ) {
static::log_error(
sprintf(
/* translators: a filesystem path to a directory */
__( "Disabling concatenate static cache. Unable to write to cache directory '%s'.", 'jetpack-boost' ),
$cache_dir
)
);
return false;
}
return true;
}
/**
* Check if cache can be used.
*/
public static function can_use_cache() {
$cache_dir = static::get_legacy_cache_dir_path();
if ( empty( $cache_dir ) ) {
static::log_error( __( 'Disabling page-optimize cache. Cache directory not defined.', 'jetpack-boost' ) );
return false;
}
if ( ! static::ensure_dir_exists( $cache_dir ) ) {
static::log_error(
sprintf(
/* translators: a filesystem path to a directory */
__( "Disabling page-optimize cache. Unable to create cache directory '%s'.", 'jetpack-boost' ),
$cache_dir
)
);
return false;
}
if ( ! static::is_dir_writable( $cache_dir ) ) {
static::log_error(
sprintf(
/* translators: a filesystem path to a directory */
__( "Disabling page-optimize cache. Unable to write to cache directory '%s'.", 'jetpack-boost' ),
$cache_dir
)
);
return false;
}
return true;
}
/**
* Ensure a directory exists.
*
* @param string $dir The directory to check.
* @return bool True if the directory exists, false otherwise.
*/
private static function ensure_dir_exists( $dir ) {
// phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_mkdir
if ( ! is_dir( $dir ) && ! mkdir( $dir, 0775, true ) ) {
return false;
}
return true;
}
/**
* Ensure a directory is writable.
*
* @param string $dir The directory to check.
* @return bool True if the directory is writable, false otherwise.
*/
private static function is_dir_writable( $dir ) {
// phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_is_writable
if ( ! is_dir( $dir ) || ! is_writable( $dir ) || ! is_executable( $dir ) ) {
return false;
}
return true;
}
/**
* Log an error message if WP_DEBUG is enabled.
*
* @param string $message The error message to log.
*/
private static function log_error( $message ) {
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
error_log( $message );
}
}
}