]*', '[^\\?\\*:\\|\'"<>]', ), $mask ); return $regexp; } /** * Replaces folder placeholders. * * @param string $file Replacement value. * * @return string */ public static function replace_folder_placeholders( $file ) { static $content_dir, $plugin_dir, $upload_dir; if ( empty( $content_dir ) ) { $content_dir = str_replace( Util_Environment::document_root(), '', WP_CONTENT_DIR ); $content_dir = substr( $content_dir, strlen( Util_Environment::site_url_uri() ) ); $content_dir = trim( $content_dir, '/' ); if ( defined( 'WP_PLUGIN_DIR' ) ) { $plugin_dir = str_replace( Util_Environment::document_root(), '', WP_PLUGIN_DIR ); $plugin_dir = trim( $plugin_dir, '/' ); } else { $plugin_dir = str_replace( Util_Environment::document_root(), '', WP_CONTENT_DIR . '/plugins' ); $plugin_dir = trim( $plugin_dir, '/' ); } $upload_dir = Util_Environment::wp_upload_dir(); $upload_dir = str_replace( Util_Environment::document_root(), '', $upload_dir['basedir'] ); $upload_dir = trim( $upload_dir, '/' ); } $file = str_replace( '{wp_content_dir}', $content_dir, $file ); $file = str_replace( '{plugins_dir}', $plugin_dir, $file ); $file = str_replace( '{uploads_dir}', $upload_dir, $file ); return $file; } /** * Replaces folder placeholders URI. * * @param string $file Replacement value. * * @return string */ public static function replace_folder_placeholders_to_uri( $file ) { static $content_uri, $plugins_uri, $uploads_uri; if ( empty( $content_uri ) ) { $content_uri = Util_Environment::url_to_uri( content_url() ); $plugins_uri = Util_Environment::url_to_uri( plugins_url() ); $upload_dir = Util_Environment::wp_upload_dir(); if ( isset( $upload_dir['baseurl'] ) ) { $uploads_uri = Util_Environment::url_to_uri( $upload_dir['baseurl'] ); } else { $uploads_uri = ''; } } $file = str_replace( '{wp_content_dir}', $content_uri, $file ); $file = str_replace( '{plugins_dir}', $plugins_uri, $file ); $file = str_replace( '{uploads_dir}', $uploads_uri, $file ); return $file; } /** * Get the override default value for cdn.flush_manually to prevent excessive invalidation charges for S3 CF and CF2. * * @since 2.2.6 * * @param string $cdn_engine CDN engine value. * * @return boolean default value override; */ public static function get_flush_manually_default_override( $cdn_engine = null ) { $override_targets = array( 's3', 'cf', 'cf2' ); return in_array( $cdn_engine, $override_targets, true ); } }