File "Compatibility.php"
Full Path: /home/timepamn/dailynetworth.org/wp-content/plugins/hide-my-wp/models/Compatibility.php
File size: 40.83 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Compatibility Model
* Handles the compatibility with the rest of the plugins and themes
*
* @file The Compatibility file
* @package HMWP/Compatibility
* @since 6.0.0
*/
defined( 'ABSPATH' ) || die( 'Cheatin\' uh?' );
class HMWP_Models_Compatibility {
/**
* Set the compatibility needed on plugin activation
* Called on plugin activation
*/
public function install() {
if ( HMWP_Classes_Tools::isPluginActive( 'worker/init.php' ) ) {
$this->addMUPlugin();
}
}
/**
* Delete the compatibility with other plugins
* Called on plugin deactivation
*/
public function uninstall() {
$this->deleteMUPlugin();
}
/**
* Checks compatibility with various plugins and initializes the corresponding compatibility classes.
*
* @return void
* @throws Exception
*/
public function checkCompatibility() {
$compatibilities = array(
'really-simple-ssl/rlrsssl-really-simple-ssl.php' => 'HMWP_Models_Compatibility_ReallySimpleSsl',
'nitropack/main.php' => 'HMWP_Models_Compatibility_Nitropack',
'hummingbird-performance/wp-hummingbird.php' => 'HMWP_Models_Compatibility_Hummingbird',
'wp-rocket/wp-rocket.php' => 'HMWP_Models_Compatibility_WpRocket',
'wp-fastest-cache/wpFastestCache.php' => 'HMWP_Models_Compatibility_FastestCache',
'woocommerce/woocommerce.php' => 'HMWP_Models_Compatibility_Woocommerce',
'memberpress/memberpress.php' => 'HMWP_Models_Compatibility_MemberPress',
'autoptimize/autoptimize.php' => 'HMWP_Models_Compatibility_Autoptimize',
'confirm-email/confirm-email.php' => 'HMWP_Models_Compatibility_ConfirmEmail',
'breeze/breeze.php' => 'HMWP_Models_Compatibility_Breeze',
'w3-total-cache/w3-total-cache.php' => 'HMWP_Models_Compatibility_W3Total',
'jch-optimize/jch-optimize.php' => 'HMWP_Models_Compatibility_JsOptimize',
'minimal-coming-soon-maintenance-mode/minimal-coming-soon-maintenance-mode.php' => 'HMWP_Models_Compatibility_MMaintenance',
'all-in-one-wp-security-and-firewall/wp-security.php' => 'HMWP_Models_Compatibility_AioSecurity',
'powered-cache/powered-cache.php' => 'HMWP_Models_Compatibility_PowerCache',
'squirrly-seo/squirrly.php' => 'HMWP_Models_Compatibility_Squirrly',
'siteguard/siteguard.php' => 'HMWP_Models_Compatibility_SiteGuard',
'sg-cachepress/sg-cachepress.php' => 'HMWP_Models_Compatibility_SiteGuard',
'wordfence/wordfence.php' => 'HMWP_Models_Compatibility_Wordfence',
'sitepress-multilingual-cms/sitepress.php' => 'HMWP_Models_Compatibility_Wpml',
'ithemes-security-pro/ithemes-security-pro.php' => 'HMWP_Models_Compatibility_iThemes',
'better-wp-security/better-wp-security.php' => 'HMWP_Models_Compatibility_iThemes',
'ultimate-member/ultimate-member.php' => 'HMWP_Models_Compatibility_UltimateMember',
'wp-user-manager/wp-user-manager.php' => 'HMWP_Models_Compatibility_Wpum',
'wp-defender/wp-defender.php' => 'HMWP_Models_Compatibility_WpDefender',
'cmp-coming-soon-maintenance/niteo-cmp.php' => 'HMWP_Models_Compatibility_Cmp',
'display-admin-page-on-frontend-premium/index.php' => 'HMWP_Models_Compatibility_WPFrontendAdmin',
'flying-press/flying-press.php' => 'HMWP_Models_Compatibility_FlyingPress',
'two-factor/two-factor.php' => 'HMWP_Models_Compatibility_TwoFactor',
'hcaptcha-for-forms-and-more/hcaptcha.php' => 'HMWP_Models_Compatibility_hCaptcha',
'mainwp-child/mainwp-child.php' => 'HMWP_Models_Compatibility_MainWP',
'userswp/userswp.php' => 'HMWP_Models_Compatibility_UsersWP',
'litespeed-cache/litespeed-cache.php' => 'HMWP_Models_Compatibility_LiteSpeed',
);
try {
foreach ( $compatibilities as $plugin => $class ) {
if ( HMWP_Classes_Tools::isPluginActive( $plugin ) && apply_filters( 'hmwp_support/' . $plugin, true ) ) {
HMWP_Classes_ObjController::getClass( $class );
}
}
} catch ( Exception $e ) {
}
//Refresh rewrites when a new website or new term is created on Litespeed server
if ( HMWP_Classes_Tools::isLitespeed() ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Compatibility_LiteSpeed' );
}
//Compatibility with More plugin
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Compatibility_Others' );
}
/**
* Checks the compatibility with various page builders and prevents the plugin from loading
* under certain conditions while the user is editing with one of the supported builders.
*
* @return void
*/
public function checkBuildersCompatibility() {
// Check the compatibility with builders
// Don't load when on builder editor
// Compatibility with Oxygen Plugin, Elementor, Thrive and more, Yellow Pencil, Wp Bakery
if ( function_exists( 'is_user_logged_in' ) && is_user_logged_in() ) {
$builder_paramas = array(
'fl_builder', //Beaver Builder
'fb-edit', //Fusion Builder
'builder', //Fusion Builder
'vc_action', //WP Bakery
'vc_editable', //WP Bakery
'vcv-action', //WP Bakery
'et_fb', //Divi
'ct_builder', //Oxygen
'tve', //Thrive
'tb-preview', //Themify
'preview', //Blockeditor & Gutenberg
'elementor-preview', //Elementor
'uxb_iframe',
'wyp_page_type', //Yellowpencil plugin
'wyp_mode',//Yellowpencil plugin
'brizy-edit-iframe',//Brizy plugin
'bricks',//Bricks plugin
'zionbuilder-preview',//Zion Builder plugin
'customize_theme',//WordPress Customize
'breakdance',//Breakdance plugin
'breakdance_iframe',//Breakdance plugin
'np_new',//Nicepage plugin
'np_edit',//Nicepage plugin
);
foreach ( $builder_paramas as $param ) {
if ( HMWP_Classes_Tools::getIsset( $param ) ) {
//Stop the plugin from loading while on editor
add_filter( 'hmwp_start_buffer', '__return_false' );
add_filter( 'hmwp_process_buffer', '__return_false' );
add_filter( 'hmwp_process_hide_disable', '__return_false' );
add_filter( 'hmwp_process_find_replace', '__return_false' );
return;
}
}
}
}
/**
* Check if the cache plugins are loaded and have cached files
*
* @throws Exception
*/
public function checkCacheFiles() {
$changed = false;
// Initialize WordPress Filesystem
$wp_filesystem = HMWP_Classes_ObjController::initFilesystem();
$content_dir = $wp_filesystem->wp_content_dir();
// Change the paths in the elementor cached css
if ( ! HMWP_Classes_Tools::getOption( 'hmwp_mapping_file' ) ) {
if ( HMWP_Classes_Tools::isPluginActive( 'elementor/elementor.php' ) ) {
if ( HMWP_Classes_Tools::isMultisites() ) {
global $wpdb;
$this->paths = array();
if ( $blogs = $wpdb->get_results( "SELECT blog_id FROM " . $wpdb->blogs . " where blog_id > 1" ) ) {
foreach ( $blogs as $blog ) {
// Set the cache directory for this plugin
$path = $content_dir . HMWP_Classes_Tools::$default['hmwp_upload_url'] . '/sites/' . $blog->blog_id . '/elementor/css/';
if ( $wp_filesystem->is_dir( $path ) ) {
// Set the cache directory for this plugin
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Mark as cache changed
$changed = true;
}
}
}
} else {
// Set the cache directory for this plugin
$path = $content_dir . HMWP_Classes_Tools::$default['hmwp_upload_url'] . '/elementor/css/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Mark as cache changed
$changed = true;
}
}
}
}
// Change the paths in the cached css
if ( HMWP_Classes_Tools::isPluginActive( 'fusion-builder/fusion-builder.php' ) ) {
// Set the cache directory for this plugin
$path = $content_dir . HMWP_Classes_Tools::$default['hmwp_upload_url'] . '/fusion-styles/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Mark as cache changed
$changed = true;
}
}
// Change the paths in the cached css
if ( HMWP_Classes_Tools::isPluginActive( 'beaver-builder-lite-version/fl-builder.php' ) || HMWP_Classes_Tools::isPluginActive( 'beaver-builder/fl-builder.php' ) ) {
// Set the cache directory for this plugin
$path = $content_dir . HMWP_Classes_Tools::$default['hmwp_upload_url'] . '/bb-plugin/cache/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
// Change the paths in the cached css
if ( HMWP_Classes_Tools::isPluginActive( 'wp-super-cache/wp-cache.php' ) ) {
// Initialize WordPress Filesystem
$wp_filesystem = HMWP_Classes_ObjController::initFilesystem();
$wp_cache_config_file = $content_dir . 'wp-cache-config.php';
if ( $wp_filesystem->exists( $wp_cache_config_file ) ) {
include $wp_cache_config_file;
}
// Set the cache directory for this plugin
if ( isset( $cache_path ) ) {
$path = $cache_path;
} else {
$path = $content_dir . 'cache';
}
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
// Change the paths in the cached css
if ( HMWP_Classes_Tools::isPluginActive( 'litespeed-cache/litespeed-cache.php' ) ) {
//Set the cache directory for this plugin
$path = $content_dir . 'litespeed/';
//if set by the plugin, them select the defined folder
if( defined('LITESPEED_DATA_FOLDER') && LITESPEED_DATA_FOLDER <> ''){
$path = $content_dir . LITESPEED_DATA_FOLDER . '/';
}
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
// Change the paths in the cached css
if ( HMWP_Classes_Tools::isPluginActive( 'comet-cache/comet-cache.php' ) ) {
// Set the cache directory for this plugin
$path = false;
if ( $options = get_option( 'comet_cache_options' ) ) {
if ( isset( $options['base_dir'] ) ) {
$path = $content_dir . trim( $options['base_dir'], '/' ) . '/';
}
}
if ( ! $path ) {
$path = $content_dir . 'cache/';
}
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
if ( HMWP_Classes_Tools::isPluginActive( 'hummingbird-performance/wp-hummingbird.php' ) ) {
// Set the cache directory for this plugin
$path = $content_dir . 'wphb-cache/';
if ( $options = get_option( 'wphb_settings' ) ) {
if ( isset( $options['minify']['file_path'] ) ) {
$path = $wp_filesystem->abspath() . trim( $options['minify']['file_path'], '/' ) . '/';
}
}
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
if ( HMWP_Classes_Tools::isPluginActive( 'hyper-cache/plugin.php' ) ) {
// Set the cache directory for this plugin
if ( defined( 'HYPER_CACHE_FOLDER' ) ) {
$path = HYPER_CACHE_FOLDER;
} else {
$path = $content_dir . 'cache/';
}
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Change the paths in html
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInHTML();
// Mark as cache changed
$changed = true;
}
}
//For WP-Rocket
if ( HMWP_Classes_Tools::isPluginActive( 'wp-rocket/wp-rocket.php' ) ) {
if ( function_exists( 'get_rocket_option' ) ) {
if ( get_rocket_option( 'minify_concatenate_css' ) && defined( 'WP_ROCKET_MINIFY_CACHE_PATH' ) ) {
if ( HMWP_Classes_Tools::isMultisites() ) {
// Get all blogs
global $wpdb;
$this->paths = array();
if ( $blogs = $wpdb->get_results( "SELECT blog_id FROM " . $wpdb->blogs . " where blog_id > 1" ) ) {
foreach ( $blogs as $blog ) {
//Set the cache directory for this plugin
$path = WP_ROCKET_MINIFY_CACHE_PATH . $blog->blog_id . '/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
}
}
// Set the cache directory for this plugin
$path = WP_ROCKET_MINIFY_CACHE_PATH . get_current_blog_id() . '/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
}
}
//For Autoptimizer
if ( HMWP_Classes_Tools::isPluginActive( 'autoptimize/autoptimize.php' ) ) {
//Set the cache directory for this plugin
$path = $content_dir . 'cache/autoptimize/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
// For bb-plugin
if ( HMWP_Classes_Tools::isPluginActive( 'beaver-builder-lite-version/fl-builder.php' ) ) {
// Set the cache directory for this plugin
$path = $content_dir . 'uploads/bb-plugin/cache/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in css
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
// For WP Fastest Cache
if ( HMWP_Classes_Tools::isPluginActive( 'wp-fastest-cache/wpFastestCache.php' ) ) {
// Set the cache directory for this plugin
$path = $content_dir . 'cache/wpfc-minified/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in cache
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths inn js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Change the paths in html
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInHTML();
}
$path = $content_dir . 'cache/all/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in cache
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInHTML();
// Mark as cache changed
$changed = true;
}
}
// For Siteground Cache
if ( HMWP_Classes_Tools::isPluginActive( 'sg-cachepress/sg-cachepress.php' ) ) {
if ( HMWP_Classes_Tools::isMultisites() ) {
// Get all blogs
global $wpdb;
$this->paths = array();
if ( $blogs = $wpdb->get_results( "SELECT blog_id FROM " . $wpdb->blogs . " where blog_id > 1" ) ) {
foreach ( $blogs as $blog ) {
//Set the cache directory for this plugin
$path = $content_dir . HMWP_Classes_Tools::getDefault( 'hmwp_upload_url' ) . '/sites/' . $blog->blog_id . '/siteground-optimizer-assets/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in cache
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
}
} else {
//Set the cache directory for this plugin
$path = $content_dir . HMWP_Classes_Tools::getDefault( 'hmwp_upload_url' ) . '/siteground-optimizer-assets/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in cache
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
// Set the cache directory for this plugin
$path = $content_dir . 'cache/sgo-cache/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in cache
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInHTML();
// Mark as cache changed
$changed = true;
}
}
//For JCH Optimize Cache
if ( HMWP_Classes_Tools::isPluginActive( 'jch-optimize/jch-optimize.php' ) ) {
//Change the paths in css
$path = $content_dir . 'cache/jch-optimize/css/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in CSS
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
//Mark as cache changed
$changed = true;
}
//change the paths in js
$path = $content_dir . 'cache/jch-optimize/js/';
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// Change the paths in CSS
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
// IF none of these plugins are installed. Search whole directory.
if ( ! $changed || HMWP_Classes_Tools::getOption( 'hmwp_change_in_cache_directory' ) <> '' ) {
// Set the cache directory for this plugin
if ( HMWP_Classes_Tools::getOption( 'hmwp_change_in_cache_directory' ) <> '' ) {
$path = $content_dir . trim( HMWP_Classes_Tools::getOption( 'hmwp_change_in_cache_directory' ), '/' ) . '/';
} else {
$path = $content_dir . 'cache/';
}
if ( $wp_filesystem->is_dir( $path ) ) {
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->setCachePath( $path );
// If other cache plugins are installed
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInCss();
// Change the paths in js
HMWP_Classes_ObjController::getClass( 'HMWP_Models_Cache' )->changePathsInJs();
// Mark as cache changed
$changed = true;
}
}
if ( $changed && isset( $path ) ) {
// For debugging
do_action( 'hmwp_debug_cache', date( 'Y-m-d H:i:s' ) . PHP_EOL . $path );
}
}
/**
* Get all alert messages
*
* @throws Exception
*/
public static function getAlerts() {
// First thing you need to do
$page = HMWP_Classes_Tools::getValue( 'page' );
if ( HMWP_Classes_Tools::getOption( 'hmwp_mode' ) == 'default' && $page <> 'hmwp_permalinks' ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( 'First, you need to activate the %sLite Mode%s in %s', 'hide-my-wp' ), '<a href="' . HMWP_Classes_Tools::getSettingsUrl( 'hmwp_permalinks' ) . '"><strong>', '</strong></a>', '<strong>' . HMWP_Classes_Tools::getOption( 'hmwp_plugin_name' ) . '</strong>' ) );
}
// Announce the plugin name change
if( HMWP_Classes_Tools::getOption('hmwp_plugin_name') == 'Hide My WP Ghost' && $page == 'hmwp_settings' ){
$link = '<a href="' . esc_url(add_query_arg( array( 'hmwp_nonce' => wp_create_nonce( 'hmwp_update_product_name' ), 'action' => 'hmwp_update_product_name' ) )) . '" class="btn btn-default btn-small py-1 ml-2" style="font-size: 14px;" />' . esc_html__( "Update Now", 'hide-my-wp' ) . '</a>';
HMWP_Classes_Error::setNotification( sprintf( esc_html( '%s Good News! %s You can now update the plugin name from %s Hide My WP Ghost %s to %s WP Ghost %s on your website! %s' ), '<strong>', '</strong>', '<strong>', '</strong>', '<strong>', '</strong>', $link ));
}
// Is CDN plugin installed
if ( is_admin() || is_network_admin() ) {
if ( HMWP_Classes_Tools::isPluginActive( 'cdn-enabler/cdn-enabler.php' ) ) {
if ( HMWP_Classes_Tools::getOption( 'hmwp_mode' ) <> 'default' ) {
if ( $cdn_enabler = get_option( 'cdn_enabler' ) ) {
if ( isset( $cdn_enabler['dirs'] ) ) {
$dirs = explode( ',', $cdn_enabler['dirs'] );
if ( ! empty( $dirs ) && ! in_array( HMWP_Classes_Tools::getOption( 'hmwp_wp-content_url' ), $dirs ) && ! in_array( HMWP_Classes_Tools::getOption( 'hmwp_wp-includes_url' ), $dirs ) ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( 'CDN Enabled detected. Please include %s and %s paths in CDN Enabler Settings', 'hide-my-wp' ), '<strong>' . HMWP_Classes_Tools::getOption( 'hmwp_wp-content_url' ) . '</strong>', '<strong>' . HMWP_Classes_Tools::getOption( 'hmwp_wp-includes_url' ) . '</strong>' ) );
}
}
}
}
if ( isset( $_SERVER['REQUEST_URI'] ) && admin_url( 'options-general.php?page=cdn_enabler', 'relative' ) == $_SERVER['REQUEST_URI'] ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( "CDN Enabler detected! Learn how to configure it with %s %sClick here%s", 'hide-my-wp' ), HMWP_Classes_Tools::getOption( 'hmwp_plugin_name' ), '<a href="' . esc_url( HMWP_Classes_Tools::getOption('hmwp_plugin_website') . '/kb/hide-my-wp-and-cdn-enabler/' ) . '" target="_blank">', '</a>' ) );
}
}
// Compatibility with WP Cache plugin for CDN list
if ( HMWP_Classes_Tools::isPluginActive( 'wp-super-cache/wp-cache.php' ) ) {
if ( get_option( 'ossdl_off_cdn_url' ) <> '' && get_option( 'ossdl_off_cdn_url' ) <> home_url() ) {
$dirs = explode( ',', get_option( 'ossdl_off_include_dirs' ) );
if ( ! empty( $dirs ) && ! in_array( HMWP_Classes_Tools::getOption( 'hmwp_wp-content_url' ), $dirs ) && ! in_array( HMWP_Classes_Tools::getOption( 'hmwp_wp-includes_url' ), $dirs ) ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( 'WP Super Cache CDN detected. Please include %s and %s paths in WP Super Cache > CDN > Include directories', 'hide-my-wp' ), '<strong>' . HMWP_Classes_Tools::getOption( 'hmwp_wp-content_url' ) . '</strong>', '<strong>' . HMWP_Classes_Tools::getOption( 'hmwp_wp-includes_url' ) . '</strong>' ) );
}
}
}
// Admin Ajax alert for Affiliate Pro plugin
// Indeed-membership-pro%2Findeed-membership-pro
if ( HMWP_Classes_Tools::isPluginActive( 'indeed-affiliate-pro/indeed-affiliate-pro.php' ) ) {
if ( HMWP_Classes_Tools::getOption( 'hmwp_admin-ajax_url' ) <> HMWP_Classes_Tools::$default['hmwp_admin-ajax_url'] ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( "Ultimate Affiliate Pro detected. The plugin doesn't support custom %s paths as it doesn't use WordPress functions to call the Ajax URL", 'hide-my-wp' ), '<strong>admin-ajax.php</strong>' ) );
}
}
if ( HMWP_Classes_Tools::isPluginActive( 'indeed-membership-pro/indeed-membership-pro.php' ) ) {
if ( HMWP_Classes_Tools::getOption( 'hmwp_admin-ajax_url' ) <> HMWP_Classes_Tools::$default['hmwp_admin-ajax_url'] ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( "Indeed Ultimate Membership Pro detected. The plugin doesn't support custom %s paths as it doesn't use WordPress functions to call the Ajax URL", 'hide-my-wp' ), '<strong>admin-ajax.php</strong>' ) );
}
}
// Mode Rewrite is not installed
if ( HMWP_Classes_Tools::isApache() && ! HMWP_Classes_Tools::isModeRewrite() ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( '%s does not work without mode_rewrite. Please activate the rewrite module in Apache. %sMore details%s', 'hide-my-wp' ), HMWP_Classes_Tools::getOption( 'hmwp_plugin_name' ), '<a href="https://tecadmin.net/enable-apache-mod-rewrite-module-in-ubuntu-linuxmint/" target="_blank">', '</a>' ) );
}
// IIS server and no Rewrite Permalinks installed
if ( HMWP_Classes_Tools::isIIS() && HMWP_Classes_Tools::isPHPPermalink() ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( 'You need to activate the URL Rewrite for IIS to be able to change the permalink structure to friendly URL (without index.php). %sMore details%s', 'hide-my-wp' ), '<a href="https://www.iis.net/downloads/microsoft/url-rewrite" target="_blank">', '</a>' ) );
} elseif ( HMWP_Classes_Tools::isPHPPermalink() ) {
HMWP_Classes_Error::setNotification( esc_html__( 'You need to set the permalink structure to friendly URL (without index.php).', 'hide-my-wp' ) );
}
// Inmotion server detected
if ( HMWP_Classes_Tools::isInmotion() ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( 'Inmotion detected. %sPlease read how to make the plugin compatible with Inmotion Nginx Cache%s', 'hide-my-wp' ), '<a href="' . esc_url( HMWP_Classes_Tools::getOption('hmwp_plugin_website') . '/kb/hide-my-wp-pro-compatible-with-inmotion-wordpress-hosting/' ) . '" target="_blank">', '</a>' ) );
}
// Bitnami server detected
if ( HMWP_Classes_Tools::isAWS() ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( 'Bitnami detected. %sPlease read how to make the plugin compatible with AWS hosting%s', 'hide-my-wp' ), '<a href="' . esc_url( HMWP_Classes_Tools::getOption('hmwp_plugin_website') . '/kb/how-to-set-hide-my-wp-for-bitnami-servers/' ) . '" target="_blank">', '</a>' ) );
}
// The login path is changed by other plugins and may affect the functionality
if ( HMWP_Classes_Tools::$default['hmwp_login_url'] == HMWP_Classes_Tools::getOption( 'hmwp_login_url' ) ) {
if ( strpos( site_url( 'wp-login.php' ), HMWP_Classes_Tools::$default['hmwp_login_url'] ) === false ) {
defined( 'HMWP_DEFAULT_LOGIN' ) || define( 'HMWP_DEFAULT_LOGIN', site_url( 'wp-login.php' ) );
}
}
// Avada theme detected
if ( HMWP_Classes_Tools::isThemeActive( 'Avada' ) ) {
if ( ( HMWP_Classes_Tools::getOption( 'hmwp_mode' ) <> 'default' ) ) {
if ( HMWP_Classes_Tools::getOption( 'hmwp_themes_url' ) <> HMWP_Classes_Tools::getDefault( 'hmwp_themes_url' ) ) {
$avada_path = $fusion_url = false;
$themes = HMWP_Classes_Tools::getOption( 'hmwp_themes' );
foreach ( $themes['from'] as $index => $theme ) {
if ( strpos( $theme, 'Avada' ) !== false ) {
$avada_path = trim( $themes['to'][ $index ], '/' );
}
}
if ( $avada_path && $avada_path <> 'Avada' ) {
$fusion_url = site_url( HMWP_Classes_Tools::getOption( 'hmwp_themes_url' ) ) . '/' . $avada_path . '/includes/lib';
}
if ( $fusion_url ) {
if ( defined( 'FUSION_LIBRARY_URL' ) && stripos( FUSION_LIBRARY_URL, $fusion_url ) === false ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( 'To hide the Avada library, please add the Avada FUSION_LIBRARY_URL in wp-config.php file after $table_prefix line: %s', 'hide-my-wp' ), '<br /><strong>define(\'FUSION_LIBRARY_URL\',\'' . site_url( HMWP_Classes_Tools::getOption( 'hmwp_themes_url' ) ) . '/' . $avada_path . '/includes/lib\');</strong>' ) );
}
}
}
}
}
// The admin URL is already changed by other plugins and may affect the functionality
if ( ! HMW_RULES_IN_CONFIG ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( '%s rules are not saved in the config file and this may affect the website loading speed.', 'hide-my-wp' ), HMWP_Classes_Tools::getOption( 'hmwp_plugin_name' ) ) );
defined( 'HMWP_DEFAULT_ADMIN' ) || define( 'HMWP_DEFAULT_ADMIN', HMWP_Classes_Tools::$default['hmwp_admin_url'] );
} elseif ( HMWP_Classes_Tools::$default['hmwp_admin_url'] == HMWP_Classes_Tools::getOption( 'hmwp_admin_url' ) ) {
if ( strpos( admin_url(), HMWP_Classes_Tools::$default['hmwp_admin_url'] ) === false ) {
defined( 'HMWP_DEFAULT_ADMIN' ) || define( 'HMWP_DEFAULT_ADMIN', admin_url() );
}
}
// Godaddy server detected
if ( HMWP_Classes_Tools::isGodaddy() ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( "Godaddy detected! To avoid CSS errors, make sure you switch off the CDN from %s", 'hide-my-wp' ), '<strong>' . '<a href="' . esc_url( HMWP_Classes_Tools::getOption('hmwp_plugin_website') . '/kb/how-to-use-hide-my-wp-with-godaddy/' ) . '" target="_blank"> Godaddy > Managed WordPress > Overview</a>' . '</strong>' ) );
}
// BulletProof plugin detected
if ( HMWP_Classes_Tools::isPluginActive( 'bulletproof-security/bulletproof-security.php' ) ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( "BulletProof plugin! Make sure you save the settings in %s after activating Root Folder BulletProof Mode in BulletProof plugin.", 'hide-my-wp' ), HMWP_Classes_Tools::getOption( 'hmwp_plugin_name' ) ) );
}
// ManageWP plugin detected
if ( HMWP_Classes_Tools::isPluginActive( 'worker/init.php' ) && ! HMWP_Classes_Tools::getOption( 'hmwp_firstload' ) ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( "Activate 'Must Use Plugin Loading' from 'Plugin Loading Hook' to be able to connect to your dashboard directly from managewp.com. %s click here %s", 'hide-my-wp' ), '<a href="' . HMWP_Classes_Tools::getSettingsUrl( 'hmwp_advanced#tab=compatibility', true ) . '" >', '</a>' ) );
}
// Check if the rules are working as expected
$mappings = HMWP_Classes_Tools::getOption( 'file_mappings' );
if ( ! empty( $mappings ) ) {
$restoreLink = '<br /><a href="' . esc_url( add_query_arg( array( 'hmwp_nonce' => wp_create_nonce( 'hmwp_ignore_errors' ), 'action' => 'hmwp_ignore_errors' ) ) ) . '" class="btn btn-default btn-sm mt-3" />' . esc_html__( "Close Error", 'hide-my-wp' ) . '</a>';
HMWP_Classes_Error::setNotification( sprintf( esc_html__( 'Attention! Some URLs passed through the config file rules and were loaded through WordPress rewrite which may slow down your website. %s Please follow this tutorial to fix the issue: %s', 'hide-my-wp' ), '<br /><br />' . join( '<br />', $mappings ) . '<br /><br />', '<a href="' . esc_url( HMWP_Classes_Tools::getOption('hmwp_plugin_website') . '/kb/theme-not-loading-correctly-website-loads-slower/' ) . '" target="_blank" class="text-warning">' . esc_url( HMWP_Classes_Tools::getOption('hmwp_plugin_website') . '/kb/theme-not-loading-correctly-website-loads-slower/' ) . '</a> ' . $restoreLink ), 'text-white bg-danger' );
}
if ( HMWP_Classes_Tools::isPluginActive( 'ultimate-member/ultimate-member.php' ) && HMWP_Classes_Tools::getOption( 'hmwp_bruteforce' ) && HMWP_Classes_Tools::getOption( 'brute_use_captcha_v3' ) ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( "Google reCaptcha V3 is not working with the current login form of %s .", 'hide-my-wp' ), 'Ultimate Member plugin' ) );
}
if ( HMWP_Classes_Tools::isPluginActive( 'wp-user-manager/wp-user-manager.php' ) && HMWP_Classes_Tools::getOption( 'hmwp_bruteforce' ) && HMWP_Classes_Tools::getOption( 'brute_use_captcha_v3' ) ) {
HMWP_Classes_Error::setNotification( sprintf( esc_html__( "Google reCaptcha V3 is not working with the current login form of %s .", 'hide-my-wp' ), 'Ultimate Member plugin' ) );
}
}
}
/**
* Include CDNs if found
*
* @return array|false
*/
public function findCDNServers() {
$cdn_urls = array();
//If WP_CONTENT_URL is set as a different domain
if ( defined( 'WP_CONTENT_URL' ) && WP_CONTENT_URL <> '' ) {
$cdn = wp_parse_url( WP_CONTENT_URL, PHP_URL_HOST );
$domain = wp_parse_url( home_url(), PHP_URL_HOST );
if ( $cdn <> '' && $domain <> '' && $cdn <> $domain ) {
$cdn_urls[] = WP_CONTENT_URL;
}
}
//WP Rocket CDN Integration
if ( HMWP_Classes_Tools::isPluginActive( 'wp-rocket/wp-rocket.php' ) && function_exists( 'get_rocket_option' ) ) {
$cnames = get_rocket_option( 'cdn_cnames', array() );
foreach ( $cnames as $_urls ) {
$_urls = explode( ',', $_urls );
$_urls = array_map( 'trim', $_urls );
foreach ( $_urls as $url ) {
$cdn_urls[] = $url;
}
}
}
//CDN Enabler Integration
if ( HMWP_Classes_Tools::isPluginActive( 'cdn-enabler/cdn-enabler.php' ) ) {
if ( $cdn_enabler = get_option( 'cdn_enabler' ) ) {
if ( isset( $cdn_enabler['url'] ) ) {
$url = $cdn_enabler['url'];
$cdn_urls[] = $url;
}
}
}
//Power Cache CDN integration
if ( HMWP_Classes_Tools::isPluginActive( 'powered-cache/powered-cache.php' ) ) {
global $powered_cache_options;
if ( isset( $powered_cache_options['cdn_hostname'] ) ) {
$hostnames = $powered_cache_options['cdn_hostname'];
if ( ! empty( $hostnames ) ) {
foreach ( $hostnames as $host ) {
if ( ! empty( $host ) ) {
$cdn_urls[] = $host;
}
}
}
}
}
//Wp Cache CDN integration
if ( HMWP_Classes_Tools::isPluginActive( 'wp-super-cache/wp-cache.php' ) ) {
if ( get_option( 'ossdl_off_cdn_url' ) <> '' && get_option( 'ossdl_off_cdn_url' ) <> home_url() ) {
$url = get_option( 'ossdl_off_cdn_url' );
$cdn_urls[] = $url;
}
}
//Ewww plugin CDN
if ( HMWP_Classes_Tools::isPluginActive( 'ewww-image-optimizer/ewww-image-optimizer.php' ) ) {
$domain = get_option( 'ewww_image_optimizer_exactdn_domain', false );
if ( $domain ) {
$cdn_urls[] = $domain;
}
}
//JCH Optimize CDN integration
if ( HMWP_Classes_Tools::isPluginActive( 'jch-optimize/jch-optimize.php' ) ) {
if ( $jch = get_option( 'jch_options' ) ) {
if ( is_array( $jch ) ) {
if ( isset( $jch['cookielessdomain_enable'] ) && $jch['cookielessdomain_enable'] && isset( $jch['cookielessdomain'] ) && $jch['cookielessdomain'] <> '' ) {
$cdn_urls[] = $jch['cookielessdomain'];
}
}
}
}
//Hyper Cache CDN integration
if ( HMWP_Classes_Tools::isPluginActive( 'hyper-cache/plugin.php' ) ) {
if ( $cdn = get_option( 'hyper-cache' ) ) {
if ( isset( $cdn['cdn_enabled'] ) && $cdn['cdn_enabled'] && isset( $cdn['cdn_url'] ) && $cdn['cdn_url'] ) {
$url = $cdn['cdn_url'];
$cdn_urls[] = $url;
}
}
}
//Bunny CDN integration
if ( HMWP_Classes_Tools::isPluginActive( 'bunnycdn/bunnycdn.php' ) ) {
if ( $bunnycdn = get_option( 'bunnycdn' ) ) {
if ( isset( $bunnycdn['cdn_domain_name'] ) && $bunnycdn['cdn_domain_name'] ) {
$cdn_urls[] = $bunnycdn['cdn_domain_name'];
}
}
}
//get plugin DB CDN list
$hmwp_cdn_urls = json_decode( HMWP_Classes_Tools::getOption( 'hmwp_cdn_urls' ), true );
if ( ! empty( $hmwp_cdn_urls ) ) {
foreach ( $hmwp_cdn_urls as $url ) {
$cdn_urls[] = $url;
}
}
if ( ! empty( $cdn_urls ) ) {
return array_unique( $cdn_urls );
}
return false;
}
/************************************************************
*
* Must Use Plugin (needed for Manage WP and other cache plugins)
*/
/**
* Add the Must-Use plugin to make sure is loading for the custom wp-admin path every time
*/
public function addMUPlugin() {
try {
$this->registerMUPlugin( '0-hidemywp.php', $this->buildLoaderContent( 'hide-my-wp/index.php' ) );
} catch ( Exception $e ) {
}
}
/**
* Remove the Must-Use plugin on deactivation
*/
public function deleteMUPlugin() {
try {
$this->deregisterMUPlugin( '0-hidemywp.php' );
} catch ( Exception $e ) {
}
}
/**
* The MU plugin content
*
* @param $pluginBasename
*
* @return string
*/
public function buildLoaderContent( $pluginBasename ) {
return "<?php
/*
Plugin Name: HMWP Ghost Loader
Description: This is automatically generated by the HMWP plugin to increase performance and reliability. It is automatically disabled when disabling the main plugin.
*/
if (function_exists('untrailingslashit') && defined('WP_PLUGIN_DIR') && @file_exists(untrailingslashit(WP_PLUGIN_DIR).'/$pluginBasename')) {
if (in_array('$pluginBasename', (array) get_option('active_plugins')) ) {
include_once untrailingslashit(WP_PLUGIN_DIR).'/$pluginBasename';
}
}";
}
/**
* Registers a Must-Use (MU) plugin in the WordPress environment.
*
* This method initializes the WordPress filesystem, checks if the plugin loader file
* exists and whether its content has changed. If the content differs or the file
* does not exist, it creates the necessary directory and writes the provided content
* to the loader file.
*
* @param string $loaderName The name of the loader file.
* @param string $loaderContent The content for the loader file.
*
* @return void
*/
public function registerMUPlugin( $loaderName, $loaderContent ) {
//Initialize WordPress Filesystem
$wp_filesystem = HMWP_Classes_ObjController::initFilesystem();
$mustUsePluginDir = rtrim( WPMU_PLUGIN_DIR, '/' );
$loaderPath = $mustUsePluginDir . '/' . $loaderName;
if ( $wp_filesystem->exists( $loaderPath ) && md5( $loaderContent ) === md5_file( $loaderPath ) ) {
return;
}
if ( ! $wp_filesystem->is_dir( $mustUsePluginDir ) ) {
$wp_filesystem->mkdir( $mustUsePluginDir );
}
if ( $wp_filesystem->is_writable( $mustUsePluginDir ) ) {
$wp_filesystem->put_contents( $loaderPath, $loaderContent );
}
}
/**
* Deregister a must-use plugin by deleting its loader file.
*
* @param string $loaderName The name of the loader file for the must-use plugin.
*
* @return void
*/
public function deregisterMUPlugin( $loaderName ) {
//Initialize WordPress Filesystem
$wp_filesystem = HMWP_Classes_ObjController::initFilesystem();
$mustUsePluginDir = rtrim( WPMU_PLUGIN_DIR, '/' );
$loaderPath = $mustUsePluginDir . '/' . $loaderName;
if ( ! $wp_filesystem->exists( $loaderPath ) ) {
return;
}
$wp_filesystem->delete( $loaderPath );
}
}