File manager - Edit - /home/vblioqus/unfreezetiktok.com/wp-content/plugins/hummingbird-performance/core/class-core.php
Back
<?php /** * Core class. * * @package Hummingbird\Core */ namespace Hummingbird\Core; use Hummingbird\Core\Modules\Minify; use WP_Admin_Bar; if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Class Core */ class Core { /** * API * * @var Api\API */ public $api; /** * Hummingbird logs * * @since 1.9.2 * @var Logger */ public $logger; /** * Saves the modules object instances * * @var array */ public $modules = array(); /** * Core constructor. */ public function __construct() { $this->init(); $this->init_integrations(); $this->load_modules(); SafeMode::instance()->init_safe_mode_box(); // Return is user has no proper permissions. if ( ! current_user_can( Utils::get_admin_capability() ) ) { return; } $this->add_menu_bar_actions(); } /** * Initialize core modules. * * @since 1.7.2 */ private function init() { // Register private policy text. add_action( 'admin_init', array( $this, 'privacy_policy_content' ) ); add_filter( 'wpmudev_notices_is_disabled', array( $this, 'wpmudev_remove_email_from_disabled_list' ), 10, 3 ); Hub_Connector::get_instance(); // Init the API. $this->api = new Api\API(); // Init logger. $this->logger = Logger::get_instance(); // Load the cross sell module. add_action( 'init', array( $this, 'load_cross_sell_module' ), 9 ); } /** * Init integration modules. * * @since 2.1.0 */ private function init_integrations() { new Integration\Builders(); new Integration\Divi(); new Integration\Gutenberg(); new Integration\WPH(); new Integration\SiteGround(); Integration\Opcache::get_instance(); Integration\Weglot::get_instance(); new Integration\Wpengine(); new Integration\WPMUDev(); new Integration\Defender(); new Integration\Avada(); new Integration\OxygenBuilder(); new Integration\Google_Site_Kit(); new Integration\WooCommerce(); new Integration\WCML(); new Integration\Gtranslate(); new Integration\Elementor(); new Integration\The_Events_Calendar(); new Integration\Forminator(); new Integration\Breakdance(); } /** * Load WP Hummingbird modules */ private function load_modules() { /** * Filters the modules slugs list */ $modules = apply_filters( 'wp_hummingbird_modules', array( 'minify', 'gzip', 'caching', 'performance', 'uptime', 'cloudflare', 'gravatar', 'page_cache', 'advanced', 'rss', 'redis', 'delayjs', 'critical_css', 'mixpanel_analytics', 'exclusions', 'background_processing' ) ); array_walk( $modules, array( $this, 'load_module' ) ); } /** * Add menu bar actions. */ private function add_menu_bar_actions() { if ( ! current_user_can( Utils::get_admin_capability() ) ) { return; } add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 100 ); add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_global' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_global' ) ); // Defer the loading of the global js. add_filter( 'script_loader_tag', array( $this, 'add_defer_attribute' ), 10, 2 ); } /** * Load a single module * * @param string $module Module slug. */ public function load_module( $module ) { $parts = explode( '_', $module ); $parts = array_map( 'ucfirst', $parts ); $class = implode( '_', $parts ); $class_name = 'Hummingbird\\Core\\Modules\\' . ucfirst( $class ); /** * Module. * * @var Module $module_obj */ $module_obj = new $class_name( $module ); if ( $module_obj instanceof $class_name ) { if ( $module_obj->is_active() ) { $module_obj->run(); } $this->modules[ $module ] = $module_obj; $this->logger->register_module( $module ); } } /** * Add HB menu to the admin bar * * @param WP_Admin_Bar $admin_bar Admin bar. */ public function admin_bar_menu( $admin_bar ) { $menu = array(); $active_modules = Utils::get_active_cache_modules(); if ( empty( $active_modules ) ) { return; // No active caching modules - exit. } $minify = Settings::get_setting( 'enabled', 'minify' ); $pc_module = Settings::get_setting( 'enabled', 'page_cache' ); $is_cache_enabled = true === (bool) $pc_module || Utils::get_api()->hosting->has_fast_cgi_header(); // Do not strict compare $pc_module to true, because it can also be 'blog-admins'. if ( ! is_multisite() || ( ( 'super-admins' === $minify && is_super_admin() ) || true === $minify || $is_cache_enabled ) ) { $cache_control = Settings::get_setting( 'control', 'settings' ); if ( true === $cache_control ) { $menu['wphb-clear-all-cache'] = array( 'title' => __( 'Clear all cache', 'wphb' ) ); } elseif ( is_array( $cache_control ) ) { foreach ( $active_modules as $module => $name ) { if ( ! in_array( $module, $cache_control, true ) ) { continue; } if ( 'cloudflare' === $module ) { if ( Utils::get_module( 'cloudflare' )->is_connected() && Utils::get_module( 'cloudflare' )->is_zone_selected() ) { $menu['wphb-clear-cloudflare'] = array( 'title' => __( 'Clear Cloudflare cache', 'wphb' ) ); } continue; } $menu[ 'wphb-clear-cache-' . $module ] = array( 'title' => __( 'Clear', 'wphb' ) . ' ' . strtolower( $name ), 'meta' => array( 'onclick' => "WPHBGlobal.clearCache(\"$module\");", ), ); } } } if ( is_multisite() && is_network_admin() && $is_cache_enabled && ! empty( $cache_control ) ) { if ( true === $cache_control || ( is_array( $cache_control ) && in_array( 'page_cache', $cache_control, true ) ) ) { $menu['wphb-clear-cache-network-wide'] = array( 'title' => __( 'Clear page cache on all subsites', 'wphb' ) ); } } if ( ! is_admin() ) { if ( Utils::get_module( 'minify' )->is_active() ) { $avoid_minify = filter_input( INPUT_GET, 'avoid-minify', FILTER_VALIDATE_BOOLEAN ); $menu['wphb-page-minify'] = array( 'title' => $avoid_minify ? __( 'See this page minified', 'wphb' ) : __( 'See this page unminified', 'wphb' ), 'href' => $avoid_minify ? remove_query_arg( 'avoid-minify' ) : add_query_arg( 'avoid-minify', 'true' ), ); } } if ( empty( $menu ) ) { return; } $menu_args = array( 'id' => 'wphb', 'title' => __( 'Hummingbird', 'wphb' ), 'href' => admin_url( 'admin.php?page=wphb' ), ); if ( is_multisite() && is_main_site() ) { $menu_args['href'] = network_admin_url( 'admin.php?page=wphb' ); } elseif ( is_multisite() && ! is_main_site() ) { unset( $menu_args['href'] ); } $admin_bar->add_node( $menu_args ); foreach ( $menu as $id => $tab ) { $admin_bar->add_node( array( 'id' => $id, 'parent' => $menu_args['id'], 'title' => $tab['title'], 'href' => isset( $tab['href'] ) ? $tab['href'] : '#', 'meta' => isset( $tab['meta'] ) ? $tab['meta'] : '', ) ); } } /** * Enqueue global scripts. * * @since 1.9.3 */ public function enqueue_global() { wp_enqueue_script( 'wphb-global', WPHB_DIR_URL . 'admin/assets/js/wphb-global.min.js', array( 'underscore', 'jquery' ), WPHB_VERSION, true ); $is_hb_page = is_admin() && preg_match( '/^(toplevel|hummingbird)(-pro)*_page_wphb/', get_current_screen()->id ); wp_localize_script( 'wphb-global', 'wphbGlobal', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'wphb-fetch' ), 'minify_url' => admin_url( 'admin.php?page=wphb-minification' ), 'is_hb_page' => $is_hb_page, 'copyText' => esc_html__( 'Link copied', 'wphb' ), 'previewLink' => SafeMode::instance()->get_safe_mode_preview_url(), 'hb_dashboard_url' => admin_url( 'admin.php?page=wphb' ), 'publishing' => esc_html__( 'Publishing...', 'wphb' ), ) ); global $pagenow; if ( is_admin() && ! $is_hb_page && 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) { $args = array( 'nonces' => array( 'HBFetchNonce' => wp_create_nonce( 'wphb-fetch' ), ), ); $args = array_merge_recursive( $args, Utils::get_tracking_data() ); wp_localize_script( 'wphb-global', 'wphb', $args ); } } /** * Defer global scripts. * * @since 1.9.3 * * @param string $tag HTML element tag. * @param string $handle Script handle. * * @return string */ public function add_defer_attribute( $tag, $handle ) { if ( 'wphb-global' !== $handle ) { return $tag; } return str_replace( ' src', ' defer="defer" src', $tag ); } /** * Register private policy text. */ public function privacy_policy_content() { if ( ! function_exists( 'wp_add_privacy_policy_content' ) ) { return; } $content = sprintf( /* translators: %1$s - Text, %2$s - Link to privacy policy page */ '<h3>%1$s</h3><p>%2$s</p>', __( 'Third parties', 'wphb' ), sprintf( /* translators: %1$s - opening a tag, %2$s - closing a tag */ __( 'Hummingbird uses the Stackpath Content Delivery Network (CDN). Stackpath may store web log information of site visitors, including IPs, UA, referrer, Location and ISP info of site visitors for 7 days. Files and images served by the CDN may be stored and served from countries other than your own. Stackpath’s privacy policy can be found %1$shere%2$s.', 'wphb' ), '<a href="https://www.stackpath.com/legal/privacy-statement/" target="_blank">', '</a>' ) ); wp_add_privacy_policy_content( __( 'Hummingbird', 'wphb' ), wp_kses_post( wpautop( $content, false ) ) ); } /** * Removed the email prompt notice form disabled list and adding the giveaway to the disabled list. * * @param bool $is_disabled Is notice disabled. * @param string $type Notice type. * @param string $plugin Plugin ID. * * @return bool */ public function wpmudev_remove_email_from_disabled_list( $is_disabled, $type, $plugin ) { if ( 'hummingbird' === $plugin && 'email' === $type ) { return false; } if ( 'rate' === $type && 'yes' !== get_option( 'wphb-notice-free-rated-show' ) ) { return true; } return $is_disabled; } /** * Load cross sell module. * * @return bool */ public function load_cross_sell_module() { if ( Utils::is_member() ) { return; } $cross_sell_plugin_file = WPHB_DIR_PATH . 'core/externals/plugins-cross-sell-page/plugin-cross-sell.php'; if ( ! file_exists( $cross_sell_plugin_file ) ) { return; } static $cross_sell_handler = null; if ( ! is_null( $cross_sell_handler ) ) { return; } if ( ! class_exists( '\WPMUDEV\Modules\Plugin_Cross_Sell' ) ) { require_once $cross_sell_plugin_file; } $submenu_params = array( 'slug' => 'hummingbird-performance', 'parent_slug' => 'wphb', 'menu_slug' => 'wphb-cross-sell', 'position' => 8, 'translation_dir' => WPHB_DIR_PATH . 'languages', ); $cross_sell_handler = new \WPMUDEV\Modules\Plugin_Cross_Sell( $submenu_params ); } }
| ver. 1.4 |
Github
|
.
| PHP 8.2.30 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings