File "files.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/wp-rocket/inc/functions/files.php
File
size: 24.12 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
use WP_Rocket\Logger\Logger;
use WP_Rocket\Engine\Cache\AdvancedCache;
defined('ABSPATH') || exit;
function rocket_generate_advanced_cache_file($advanced_cache = null)
{
if (!(bool) apply_filters('rocket_generate_advanced_cache_file', true)) {
return false;
}
static $done = false;
if (rocket_get_constant('WP_ROCKET_IS_TESTING', false)) {
$done = false;
}
if ($done) {
return false;
}
$done = true;
if (is_null($advanced_cache)) {
$container = apply_filters('rocket_container', null);
$advanced_cache = $container->get('advanced_cache');
}
return rocket_put_content(rocket_get_constant('WP_CONTENT_DIR') . '/advanced-cache.php', $advanced_cache->get_advanced_cache_content());
}
function get_rocket_config_file()
{
$options = get_option(WP_ROCKET_SLUG);
if (!$options) {
return [[], ''];
}
$buffer = "<?php\n";
$buffer .= "defined( 'ABSPATH' ) || exit;\n\n";
$buffer .= '$rocket_cookie_hash = \'' . COOKIEHASH . "';\n";
$buffer .= '$rocket_logged_in_cookie = \'' . LOGGED_IN_COOKIE . "';\n";
if (apply_filters('rocket_common_cache_logged_users', false)) {
$buffer .= '$rocket_common_cache_logged_users = 1;' . "\n";
}
if (!empty($options['cache_webp'])) {
$disable_webp_cache = apply_filters('rocket_disable_webp_cache', false);
if ($disable_webp_cache) {
$options['cache_webp'] = 0;
}
}
$buffer .= '$rocket_cache_mobile_files_tablet = \'' . apply_filters('rocket_cache_mobile_files_tablet', 'desktop') . "';\n";
foreach ($options as $option => $value) {
if ('cache_ssl' === $option) {
if (1 !== (int) $value) {
if (rocket_is_ssl_website()) {
update_rocket_option('cache_ssl', 1);
$value = 1;
}
}
$buffer .= '$rocket_' . $option . ' = ' . (int) $value . ";\n";
}
if ('cache_mobile' === $option || 'do_caching_mobile_files' === $option || 'cache_webp' === $option) {
$buffer .= '$rocket_' . $option . ' = ' . (int) $value . ";\n";
}
if ('secret_cache_key' === $option) {
$buffer .= '$rocket_' . $option . ' = \'' . $value . "';\n";
}
if ('cache_reject_uri' === $option) {
$buffer .= '$rocket_' . $option . ' = \'' . get_rocket_cache_reject_uri() . "';\n";
}
if ('cache_query_strings' === $option) {
$buffer .= '$rocket_' . $option . ' = ' . call_user_func('var_export', get_rocket_cache_query_string(), true) . ";\n";
}
if ('cache_reject_cookies' === $option) {
$cookies = get_rocket_cache_reject_cookies();
if ($cookies && get_rocket_option('cache_logged_user')) {
$logged_in_cookie = explode(COOKIEHASH, LOGGED_IN_COOKIE);
$logged_in_cookie = array_map('preg_quote', $logged_in_cookie);
$logged_in_cookie = implode('[^|]*', $logged_in_cookie);
$cookies = preg_replace('/\\|' . $logged_in_cookie . '\\|/', '|', '|' . $cookies . '|');
$cookies = trim($cookies, '|');
}
$buffer .= '$rocket_' . $option . ' = \'' . $cookies . "';\n";
}
if ('cache_reject_ua' === $option) {
$buffer .= '$rocket_' . $option . ' = \'' . get_rocket_cache_reject_ua() . "';\n";
}
}
$buffer .= '$rocket_cache_ignored_parameters = ' . call_user_func('var_export', rocket_get_ignored_parameters(), true) . ";\n";
$buffer .= '$rocket_cache_mandatory_cookies = ' . call_user_func('var_export', get_rocket_cache_mandatory_cookies(), true) . ";\n";
$buffer .= '$rocket_cache_dynamic_cookies = ' . call_user_func('var_export', get_rocket_cache_dynamic_cookies(), true) . ";\n";
if (apply_filters('rocket_url_no_dots', false)) {
$buffer .= '$rocket_url_no_dots = 1;';
}
$config_files_path = [];
$urls = [rocket_get_home_url()];
$subdomains = get_rocket_i18n_subdomains();
if ($subdomains) {
$urls = $subdomains;
}
foreach ($urls as $url) {
$file = get_rocket_parse_url(untrailingslashit($url));
$file['path'] = !empty($file['path']) ? str_replace('/', '.', untrailingslashit($file['path'])) : '';
$config_files_path[] = WP_ROCKET_CONFIG_PATH . strtolower($file['host']) . $file['path'] . '.php';
}
$config_files_path = apply_filters('rocket_config_files_path', $config_files_path);
$buffer = apply_filters('rocket_config_file', $buffer, $config_files_path);
$buffer = preg_replace('@array\\s+\\(@i', 'array(', $buffer);
$buffer = preg_replace('@array\\(\\s+\\)@i', 'array()', $buffer);
return [$config_files_path, $buffer];
}
function rocket_generate_config_file()
{
list($config_files_path, $buffer) = get_rocket_config_file();
if (count($config_files_path)) {
rocket_init_config_dir();
foreach ($config_files_path as $file) {
rocket_put_content($file, $buffer);
}
}
}
function rocket_delete_config_file()
{
list($config_files_path) = get_rocket_config_file();
foreach ($config_files_path as $config_file) {
rocket_direct_filesystem()->delete($config_file);
}
}
function rocket_init_cache_dir()
{
global $is_apache;
$filesystem = rocket_direct_filesystem();
if (!$filesystem->is_dir(WP_ROCKET_CACHE_PATH)) {
rocket_mkdir_p(WP_ROCKET_CACHE_PATH);
}
if (!$filesystem->is_file(WP_ROCKET_CACHE_PATH . 'index.html')) {
$filesystem->touch(WP_ROCKET_CACHE_PATH . 'index.html');
}
if ($is_apache) {
$htaccess_path = WP_ROCKET_CACHE_PATH . '.htaccess';
if (!$filesystem->is_file($htaccess_path)) {
$filesystem->touch($htaccess_path);
rocket_put_content($htaccess_path, "<IfModule mod_autoindex.c>\nOptions -Indexes\n</IfModule>");
}
}
if (!$filesystem->is_dir(WP_ROCKET_MINIFY_CACHE_PATH)) {
rocket_mkdir_p(WP_ROCKET_MINIFY_CACHE_PATH);
}
if (!$filesystem->is_file(WP_ROCKET_MINIFY_CACHE_PATH . 'index.html')) {
$filesystem->touch(WP_ROCKET_MINIFY_CACHE_PATH . 'index.html');
}
if (!$filesystem->is_dir(WP_ROCKET_CACHE_BUSTING_PATH)) {
rocket_mkdir_p(WP_ROCKET_CACHE_BUSTING_PATH);
}
if (!$filesystem->is_file(WP_ROCKET_CACHE_BUSTING_PATH . 'index.html')) {
$filesystem->touch(WP_ROCKET_CACHE_BUSTING_PATH . 'index.html');
}
if (!$filesystem->is_dir(WP_ROCKET_CRITICAL_CSS_PATH)) {
rocket_mkdir_p(WP_ROCKET_CRITICAL_CSS_PATH);
}
if (!$filesystem->is_file(WP_ROCKET_CRITICAL_CSS_PATH . 'index.html')) {
$filesystem->touch(WP_ROCKET_CRITICAL_CSS_PATH . 'index.html');
}
}
function rocket_init_config_dir()
{
$filesystem = rocket_direct_filesystem();
if (!$filesystem->is_dir(WP_ROCKET_CONFIG_PATH)) {
rocket_mkdir_p(WP_ROCKET_CONFIG_PATH);
}
if (!$filesystem->is_file(WP_ROCKET_CONFIG_PATH . 'index.html')) {
$filesystem->touch(WP_ROCKET_CONFIG_PATH . 'index.html');
}
}
function rocket_clean_minify($extensions = array('js', 'css'))
{
if (empty($extensions)) {
return;
}
if (is_string($extensions)) {
$extensions = (array) $extensions;
}
$min_cache_path = rocket_get_constant('WP_ROCKET_MINIFY_CACHE_PATH');
$min_path = $min_cache_path . get_current_blog_id() . '/';
$iterator = _rocket_get_cache_path_iterator($min_path);
if (false === $iterator) {
return;
}
$filesystem = rocket_direct_filesystem();
$min_path_regex = str_replace('/', '\\/', $min_path);
foreach ($extensions as $ext) {
do_action('before_rocket_clean_minify', $ext);
try {
$entries = new RegexIterator($iterator, "/{$min_path_regex}.*\\.{$ext}/");
} catch (Exception $e) {
return;
}
foreach ($entries as $entry) {
$filesystem->delete($entry->getPathname());
}
do_action('after_rocket_clean_minify', $ext);
}
foreach ($iterator as $item) {
if ($filesystem->is_dir($item)) {
$filesystem->delete($item);
}
}
try {
$files = new FilesystemIterator("{$min_cache_path}3rd-party");
foreach ($files as $file) {
if ($filesystem->is_file($file)) {
$filesystem->delete($file);
}
}
} catch (UnexpectedValueException $e) {
return;
}
}
function rocket_clean_cache_busting($extensions = array('js', 'css'))
{
$extensions = is_string($extensions) ? (array) $extensions : $extensions;
$cache_busting_path = WP_ROCKET_CACHE_BUSTING_PATH . get_current_blog_id();
if (!rocket_direct_filesystem()->is_dir($cache_busting_path)) {
rocket_mkdir_p($cache_busting_path);
Logger::debug('No Cache Busting folder found.', ['mkdir cache busting folder', 'cache_busting_path' => $cache_busting_path]);
return;
}
try {
$dir = new RecursiveDirectoryIterator($cache_busting_path, FilesystemIterator::SKIP_DOTS);
} catch (UnexpectedValueException $e) {
return;
}
try {
$iterator = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::CHILD_FIRST);
} catch (Exception $e) {
return;
}
foreach ($extensions as $ext) {
do_action('before_rocket_clean_busting', $ext);
try {
$files = new RegexIterator($iterator, '#.*\\.' . $ext . '#', RegexIterator::GET_MATCH);
foreach ($files as $file) {
rocket_direct_filesystem()->delete($file[0]);
}
} catch (InvalidArgumentException $e) {
return;
}
do_action('after_rocket_clean_cache_busting', $ext);
}
try {
foreach ($iterator as $item) {
if (rocket_direct_filesystem()->is_dir($item)) {
rocket_direct_filesystem()->delete($item);
}
}
} catch (UnexpectedValueException $e) {
Logger::debug('Cache Busting folder structure contains a directory we cannot recurse into.', ['Full error', 'UnexpectedValueException' => $e->getMessage()]);
}
}
function rocket_clean_files($urls, $filesystem = null)
{
$urls = (array) $urls;
if (empty($urls)) {
return;
}
$urls = array_filter($urls);
if (empty($urls)) {
return;
}
$url_no_dots = (bool) apply_filters('rocket_url_no_dots', false);
$cache_path = _rocket_get_wp_rocket_cache_path();
if (empty($filesystem)) {
$filesystem = rocket_direct_filesystem();
}
do_action('before_rocket_clean_files', $urls);
foreach ($urls as $url) {
do_action('before_rocket_clean_file', $url);
if ($url_no_dots) {
$url = str_replace('.', '_', $url);
}
$parsed_url = get_rocket_parse_url($url);
if (!empty($parsed_url['host'])) {
foreach (_rocket_get_cache_dirs($parsed_url['host'], $cache_path) as $dir) {
$entry = $dir . $parsed_url['path'];
if (!$filesystem->exists($entry)) {
continue;
}
if ($filesystem->is_dir($entry)) {
rocket_rrmdir($entry, [], $filesystem);
} else {
$filesystem->delete($entry);
}
}
}
do_action('after_rocket_clean_file', $url);
}
do_action('after_rocket_clean_files', $urls);
}
function rocket_clean_home($lang = '')
{
$parse_url = get_rocket_parse_url(get_rocket_i18n_home_url($lang));
if (apply_filters('rocket_url_no_dots', false)) {
$parse_url['host'] = str_replace('.', '_', $parse_url['host']);
}
$root = WP_ROCKET_CACHE_PATH . $parse_url['host'] . '*' . untrailingslashit($parse_url['path']);
$root = apply_filters('rocket_clean_home_root', $root, $parse_url['host'], $parse_url['path']);
do_action('before_rocket_clean_home', $root, $lang);
$files = glob($root . '/{index,index-*}.{html,html_gzip}', GLOB_BRACE | GLOB_NOSORT);
if ($files) {
foreach ($files as $file) {
rocket_direct_filesystem()->delete($file);
}
}
$dirs = glob($root . '*/' . $GLOBALS['wp_rewrite']->pagination_base, GLOB_NOSORT);
if ($dirs) {
foreach ($dirs as $dir) {
rocket_rrmdir($dir);
}
}
$nginx_mobile_detect_files = glob($root . '/.mobile-active', GLOB_BRACE | GLOB_NOSORT);
if ($nginx_mobile_detect_files) {
foreach ($nginx_mobile_detect_files as $nginx_mobile_detect_file) {
rocket_direct_filesystem()->delete($nginx_mobile_detect_file);
}
}
$nowebp_detect_files = glob($root . '/.no-webp', GLOB_BRACE | GLOB_NOSORT);
if ($nowebp_detect_files) {
foreach ($nowebp_detect_files as $nowebp_detect_file) {
rocket_direct_filesystem()->delete($nowebp_detect_file);
}
}
do_action('after_rocket_clean_home', $root, $lang);
}
function rocket_clean_home_feeds()
{
$urls = [];
$urls[] = get_feed_link();
$urls[] = get_feed_link('comments_');
$urls = apply_filters('rocket_clean_home_feeds', $urls);
do_action('before_rocket_clean_home_feeds', $urls);
rocket_clean_files($urls);
do_action('after_rocket_clean_home_feeds', $urls);
}
function rocket_clean_domain($lang = '', $filesystem = null)
{
$urls = !$lang || is_object($lang) || is_array($lang) || is_int($lang) ? (array) get_rocket_i18n_uri() : (array) get_rocket_i18n_home_url($lang);
$urls = (array) apply_filters('rocket_clean_domain_urls', $urls, $lang);
$urls = array_filter($urls);
if (empty($urls)) {
return false;
}
$url_no_dots = (bool) apply_filters('rocket_url_no_dots', false);
$cache_path = _rocket_get_wp_rocket_cache_path();
$dirs_to_preserve = get_rocket_i18n_to_preserve($lang, $cache_path);
if (empty($filesystem)) {
$filesystem = rocket_direct_filesystem();
}
foreach ($urls as $url) {
$parsed_url = get_rocket_parse_url($url);
if ($url_no_dots) {
$parsed_url['host'] = str_replace('.', '_', $parsed_url['host']);
}
$root = $cache_path . $parsed_url['host'] . $parsed_url['path'];
do_action('before_rocket_clean_domain', $root, $lang, $url);
foreach (_rocket_get_cache_dirs($parsed_url['host'], $cache_path) as $dir) {
$entry = $dir . $parsed_url['path'];
if (!$filesystem->exists($entry)) {
continue;
}
if ($filesystem->is_dir($entry)) {
rocket_rrmdir($entry, $dirs_to_preserve, $filesystem);
} else {
$filesystem->delete($entry);
}
}
do_action('after_rocket_clean_domain', $root, $lang, $url);
}
return true;
}
function rocket_clean_term($term_id, $taxonomy_slug)
{
$purge_urls = [];
$term = get_term_by('id', $term_id, $taxonomy_slug);
$i18n_plugin = rocket_has_i18n();
if ('wpml' === $i18n_plugin && !rocket_is_plugin_active('woocommerce-multilingual/wpml-woocommerce.php')) {
$lang = $GLOBALS['sitepress']->get_language_for_element($term_id, 'tax_' . $taxonomy_slug);
} elseif ('polylang' === $i18n_plugin) {
$lang = pll_get_term_language($term_id);
} else {
$lang = false;
}
$permalink = get_term_link($term, $taxonomy_slug);
if ('/' !== rocket_extract_url_component($permalink, PHP_URL_PATH)) {
array_push($purge_urls, $permalink);
}
do_action('before_rocket_clean_term', $term, $purge_urls, $lang);
$purge_urls = apply_filters('rocket_term_purge_urls', $purge_urls, $term);
rocket_clean_files($purge_urls);
rocket_clean_home($lang);
do_action('after_rocket_clean_term', $term, $purge_urls, $lang);
}
function rocket_clean_user($user_id, $lang = '')
{
$urls = !$lang || is_object($lang) ? get_rocket_i18n_uri() : get_rocket_i18n_home_url($lang);
$urls = (array) $urls;
$urls = apply_filters('rocket_clean_domain_urls', $urls, $lang);
$urls = array_filter($urls);
$user = get_user_by('id', $user_id);
if (!$user) {
return;
}
$user_key = $user->user_login . '-' . get_rocket_option('secret_cache_key');
foreach ($urls as $url) {
$parse_url = get_rocket_parse_url($url);
if (apply_filters('rocket_url_no_dots', false)) {
$parse_url['host'] = str_replace('.', '_', $parse_url['host']);
}
$root = rocket_get_constant('WP_ROCKET_CACHE_PATH') . $parse_url['host'] . '-' . $user_key . '*' . $parse_url['path'];
do_action('before_rocket_clean_user', $user_id, $lang);
$dirs = glob($root . '*', GLOB_NOSORT);
if ($dirs) {
foreach ($dirs as $dir) {
rocket_rrmdir($dir, get_rocket_i18n_to_preserve($lang));
}
}
do_action('after_rocket_clean_user', $user_id, $lang);
}
}
function rocket_clean_cache_dir()
{
do_action('before_rocket_clean_cache_dir');
$dirs = glob(WP_ROCKET_CACHE_PATH . '*', GLOB_NOSORT);
if ($dirs) {
foreach ($dirs as $dir) {
rocket_rrmdir($dir);
}
}
do_action('after_rocket_clean_cache_dir');
}
function rocket_rrmdir($dir, array $dirs_to_preserve = array(), $filesystem = null)
{
$dir = untrailingslashit($dir);
if (empty($filesystem)) {
$filesystem = rocket_direct_filesystem();
}
do_action('before_rocket_rrmdir', $dir, $dirs_to_preserve);
$nginx_mobile_detect_file = $dir . '/.mobile-active';
if ($filesystem->is_dir($dir) && $filesystem->exists($nginx_mobile_detect_file)) {
$filesystem->delete($nginx_mobile_detect_file);
}
$nowebp_detect_file = $dir . '/.no-webp';
if ($filesystem->is_dir($dir) && $filesystem->exists($nowebp_detect_file)) {
$filesystem->delete($nowebp_detect_file);
}
if (!$filesystem->is_dir($dir)) {
$filesystem->delete($dir);
return;
}
$entries = [];
try {
foreach (new FilesystemIterator($dir) as $entry) {
$entries[] = $entry->getPathname();
}
} catch (Exception $e) {
}
if (!empty($dirs_to_preserve) && !empty($entries)) {
$keys = [];
foreach ($dirs_to_preserve as $dir_to_preserve) {
$matches = preg_grep("#^{$dir_to_preserve}\$#", $entries);
$keys[] = reset($matches);
}
if (!empty($keys)) {
$keys = array_filter($keys);
if (!empty($keys)) {
$entries = array_diff($entries, $keys);
}
}
}
foreach ($entries as $entry) {
if (!$filesystem->is_dir($entry)) {
$filesystem->delete($entry);
} else {
rocket_rrmdir($entry, $dirs_to_preserve, $filesystem);
}
}
$filesystem->delete($dir);
do_action('after_rocket_rrmdir', $dir, $dirs_to_preserve);
}
function rocket_direct_filesystem()
{
require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php';
require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php';
return new WP_Filesystem_Direct(new StdClass());
}
function rocket_mkdir($dir)
{
$chmod = rocket_get_filesystem_perms('dir');
return rocket_direct_filesystem()->mkdir($dir, $chmod);
}
function rocket_mkdir_p($target)
{
$wrapper = null;
if (rocket_is_stream($target)) {
list($wrapper, $target) = explode('://', $target, 2);
}
$target = str_replace('//', '/', $target);
if (null !== $wrapper) {
$target = $wrapper . '://' . $target;
}
$target = rtrim($target, '/\\');
if (empty($target)) {
$target = '/';
}
if (rocket_direct_filesystem()->exists($target)) {
return rocket_direct_filesystem()->is_dir($target);
}
if (rocket_mkdir($target)) {
return true;
} elseif (rocket_direct_filesystem()->is_dir(dirname($target))) {
return false;
}
if ('/' !== $target && rocket_mkdir_p(dirname($target))) {
return rocket_mkdir_p($target);
}
return false;
}
function rocket_is_stream($path)
{
$scheme_separator = strpos($path, '://');
if (false === $scheme_separator) {
return false;
}
$stream = substr($path, 0, $scheme_separator);
return in_array($stream, stream_get_wrappers(), true);
}
function rocket_put_content($file, $content)
{
$chmod = rocket_get_filesystem_perms('file');
return rocket_direct_filesystem()->put_contents($file, $content, $chmod);
}
function rocket_get_filesystem_perms($type)
{
static $perms = array();
if (rocket_get_constant('WP_ROCKET_IS_TESTING', false)) {
$perms = [];
}
switch ($type) {
case 'dir':
case 'dirs':
case 'folder':
case 'folders':
$type = 'dir';
break;
case 'file':
case 'files':
$type = 'file';
break;
default:
return 0755;
}
if (isset($perms[$type])) {
return $perms[$type];
}
if ('dir' === $type) {
$fs_chmod_dir = (int) rocket_get_constant('FS_CHMOD_DIR', 0);
$perms[$type] = $fs_chmod_dir > 0 ? $fs_chmod_dir : fileperms(rocket_get_constant('ABSPATH')) & 0777 | 0755;
} else {
$fs_chmod_file = (int) rocket_get_constant('FS_CHMOD_FILE', 0);
$perms[$type] = $fs_chmod_file > 0 ? $fs_chmod_file : fileperms(rocket_get_constant('ABSPATH') . 'index.php') & 0777 | 0644;
}
return $perms[$type];
}
function _rocket_get_dir_files_by_regex($dir, $regex)
{
try {
$iterator = new IteratorIterator(new FilesystemIterator($dir));
return new RegexIterator($iterator, $regex);
} catch (Exception $e) {
return [];
}
}
function _rocket_get_cache_path_iterator($cache_path)
{
try {
return new RecursiveIteratorIterator(new RecursiveDirectoryIterator($cache_path), RecursiveIteratorIterator::SELF_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD);
} catch (Exception $e) {
return false;
}
}
function _rocket_get_cache_dirs($url_host, $cache_path = '', $hard_reset = false)
{
static $domain_dirs = array();
if (true === $hard_reset) {
$domain_dirs = [];
return;
}
if (isset($domain_dirs[$url_host])) {
return $domain_dirs[$url_host];
}
if (empty($cache_path)) {
$cache_path = _rocket_get_wp_rocket_cache_path();
}
try {
$iterator = new IteratorIterator(new FilesystemIterator($cache_path));
} catch (Exception $e) {
return [];
}
$regex = sprintf('/%1$s%2$s(.*)/i', _rocket_normalize_path($cache_path, true), $url_host);
try {
$entries = new RegexIterator($iterator, $regex);
} catch (Exception $e) {
return [];
}
$domain_dirs[$url_host] = [];
foreach ($entries as $entry) {
$domain_dirs[$url_host][] = $entry->getPathname();
}
return $domain_dirs[$url_host];
}
function _rocket_normalize_path($path, $escape = false, $force = false)
{
if (_rocket_is_windows_fs($path)) {
$path = str_replace('/', '\\', $path);
return $escape ? str_replace('\\', '\\\\', $path) : $path;
}
if ($escape) {
return str_replace('/', '\\/', $path);
}
if (!$force) {
return $path;
}
return wp_normalize_path($path);
}
function _rocket_is_windows_fs($hard_reset = false)
{
static $is_windows = null;
if ($hard_reset) {
$is_windows = null;
}
if (is_null($is_windows)) {
$is_windows = DIRECTORY_SEPARATOR === '\\' && !rocket_get_constant('WP_ROCKET_RUNNING_VFS', false);
}
return $is_windows;
}
function _rocket_get_wp_rocket_cache_path()
{
return _rocket_normalize_path(rocket_get_constant('WP_ROCKET_CACHE_PATH'));
}
function _rocket_get_php_files_in_dir($dir_path)
{
try {
$config_dir = new FilesystemIterator((string) $dir_path);
} catch (Exception $e) {
return [];
}
$files = [];
foreach ($config_dir as $file) {
if ($file->isFile() && 'php' === $file->getExtension()) {
$files[] = $file;
}
}
return $files;
}
function _rocket_get_recursive_dir_files_by_regex($regex)
{
try {
$cache_path = _rocket_get_wp_rocket_cache_path();
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($cache_path, FilesystemIterator::SKIP_DOTS));
return new RegexIterator($iterator, $regex, RecursiveRegexIterator::MATCH);
} catch (Exception $e) {
return [];
}
}