bibhamrokhanpin/wp-content/__plugins/wp-optimize/minify/class-wp-optimize-minify-admin.php
2024-04-10 17:46:06 +05:45

294 lines
9.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if (!defined('ABSPATH')) die('No direct access allowed');
class WP_Optimize_Minify_Admin {
private $wp_version_required = '4.5';
/**
* Initialize, add actions and filters
*
* @return void
*/
public function __construct() {
if (WPO_MINIFY_PHP_VERSION_MET) {
// exclude processing for editors and administrators (fix editors)
add_action('wp_optimize_admin_page_wpo_minify_status', array($this, 'check_permissions_admin_notices'));
}
add_action('wp_optimize_admin_page_wpo_minify_status', array($this, 'admin_notices_activation_errors'));
add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
// This function runs when WordPress updates or installs/remove something. Forces new cache
add_action('upgrader_process_complete', array('WP_Optimize_Minify_Cache_Functions', 'cache_increment'));
// This function runs when an active theme or plugin is updated
add_action('wpo_active_plugin_or_theme_updated', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
add_action('upgrader_overwrote_package', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
add_action('after_switch_theme', array('WP_Optimize_Minify_Cache_Functions', 'cache_increment'));
add_action('updraftcentral_version_updated', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
add_action('elementor/editor/after_save', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
add_action('fusion_cache_reset_after', array('WP_Optimize_Minify_Cache_Functions', 'reset'));
// Output asset preload placeholder, replaced by premium
add_action('wpo_minify_settings_tabs', array($this, 'output_assets_preload_placeholder'), 10, 1);
add_action('wp_optimize_register_admin_content', array($this, 'register_content'));
}
/**
* Register the content
*
* @return void
*/
public function register_content() {
add_action('wp_optimize_admin_page_wpo_minify_status', array($this, 'output_status'), 20);
add_action('wp_optimize_admin_page_wpo_minify_settings', array($this, 'output_settings'), 20);
add_action('wp_optimize_admin_page_wpo_minify_advanced', array($this, 'output_advanced'), 20);
add_action('wp_optimize_admin_page_wpo_minify_font', array($this, 'output_font_settings'), 20);
add_action('wp_optimize_admin_page_wpo_minify_css', array($this, 'output_css_settings'), 20);
add_action('wp_optimize_admin_page_wpo_minify_js', array($this, 'output_js_settings'), 20);
add_action('wp_optimize_admin_page_wpo_minify_preload', array($this, 'output_preload_settings'), 20);
}
/**
* Load scripts for controlling the admin pages
*
* @param string $hook
* @return void
*/
public function admin_enqueue_scripts($hook) {
$enqueue_version = (defined('WP_DEBUG') && WP_DEBUG) ? WPO_VERSION.'.'.time() : WPO_VERSION;
$min_or_not_internal = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '-'. str_replace('.', '-', WPO_VERSION). '.min';
if (preg_match('/wp\-optimize/i', $hook)) {
wp_enqueue_script('wp-optimize-min-js', WPO_PLUGIN_URL.'js/minify' . $min_or_not_internal . '.js', array('jquery', 'wp-optimize-admin-js'), $enqueue_version);
}
}
/**
* Conditionally runs upon the WP action admin_notices to display errors
*
* @return void
*/
public function admin_notices_activation_errors() {
global $wp_version;
include ABSPATH . WPINC . '/version.php';
$errors = array();
if (!WPO_MINIFY_PHP_VERSION_MET) {
$errors[] = sprintf(__('WP-Optimize Minify requires PHP 5.4 or higher. Youre using version %s.', 'wp-optimize'), PHP_VERSION);
}
if (!extension_loaded('mbstring')) {
$errors[] = __('WP-Optimize Minify requires the PHP mbstring module to be installed on the server; please ask your web hosting company for advice on how to enable it on your server.', 'wp-optimize');
}
if (version_compare($wp_version, $this->wp_version_required, '<')) {
$errors[] = sprintf(__('WP-Optimize Minify requires WordPress version %s or higher. Youre using version %s.', 'wp-optimize'), $this->wp_version_required, $wp_version);
}
foreach ($errors as $error) {
?>
<div class="notice notice-error wpo-warning">
<p><?php echo $error; ?></p>
</div>
<?php
}
}
/**
* Display an admin notice if the user has inadequate filesystem permissions
*
* @return void
*/
public function check_permissions_admin_notices() {
// get cache path
$cache_path = WP_Optimize_Minify_Cache_Functions::cache_path();
$cache_dir = $cache_path['cachedir'];
if (is_dir($cache_dir) && !is_writable($cache_dir)) {
$chmod = substr(sprintf('%o', fileperms($cache_dir)), -4);
?>
<div class="notice notice-error wpo-warning">
<p>
<?php printf(__('WP-Optimize Minify needs write permissions on the folder %s.', 'wp-optimize'), "<strong>".htmlspecialchars($cache_dir)."</strpmg>"); ?>
</p>
</div>
<div class="notice notice-error wpo-warning">
<p>
<?php printf(__('The current permissions for WP-Optimize Minify are chmod %s.', 'wp-optimize'), "<strong>$chmod</strong>"); ?>
</p>
</div>
<div class="notice notice-error wpo-warning">
<p>
<?php
printf(__('If you need something more than %s for it to work, then your server is probably misconfigured.', 'wp-optimize'), '<strong>775</strong>');
echo " ";
_e('Please contact your hosting provider.', 'wp-optimize');
?>
</p>
</div>
<?php
}
}
/**
* Minify - Outputs the status tab
*
* @return void
*/
public function output_status() {
if (!class_exists('WP_Optimize_Detect_Minify_Plugins')) {
require_once(WP_OPTIMIZE_MINIFY_DIR.'/class-wp-optimize-detect-minify-plugins.php');
}
$this->found_incompatible_plugins = WP_Optimize_Detect_Minify_Plugins::get_instance()->get_active_minify_plugins();
$wpo_minify_options = wp_optimize_minify_config()->get();
$cache_path = WP_Optimize_Minify_Cache_Functions::cache_path();
WP_Optimize()->include_template(
'minify/status-tab.php',
false,
array(
'wpo_minify_options' => $wpo_minify_options,
'show_information_notice' => !get_user_meta(get_current_user_id(), 'wpo-hide-minify-information-notice', true),
'cache_dir' => $cache_path['cachedir'],
'can_purge_the_cache' => WP_Optimize()->can_purge_the_cache(),
'active_minify_plugins' => apply_filters('wpo_minify_found_incompatible_plugins', $this->found_incompatible_plugins),
)
);
}
/**
* Minify - Outputs the font settings tab
*
* @return void
*/
public function output_font_settings() {
$wpo_minify_options = wp_optimize_minify_config()->get();
WP_Optimize()->include_template(
'minify/font-settings-tab.php',
false,
array(
'wpo_minify_options' => $wpo_minify_options
)
);
}
/**
* Minify - Outputs the CSS settings tab
*
* @return void
*/
public function output_css_settings() {
$wpo_minify_options = wp_optimize_minify_config()->get();
WP_Optimize()->include_template(
'minify/css-settings-tab.php',
false,
array(
'wpo_minify_options' => $wpo_minify_options
)
);
}
/**
* Minify - Outputs the JS settings tab
*
* @return void
*/
public function output_js_settings() {
$wpo_minify_options = wp_optimize_minify_config()->get();
WP_Optimize()->include_template(
'minify/js-settings-tab.php',
false,
array(
'wpo_minify_options' => $wpo_minify_options
)
);
}
/**
* Minify - Outputs the settings tab
*
* @return void
*/
public function output_settings() {
$wpo_minify_options = wp_optimize_minify_config()->get();
$url = parse_url(get_home_url());
WP_Optimize()->include_template(
'minify/settings-tab.php',
false,
array(
'wpo_minify_options' => $wpo_minify_options,
'default_protocol' => $url['scheme']
)
);
}
/**
* Minify - Outputs the settings tab
*
* @return void
*/
public function output_assets_preload_placeholder($wpo_minify_options) {
WP_Optimize()->include_template(
'minify/asset-preload.php',
false,
array(
'wpo_minify_options' => $wpo_minify_options
)
);
}
/**
* Minify - Outputs the preload tab
*
* @return void
*/
public function output_preload_settings() {
$wpo_minify_preloader = WP_Optimize_Minify_Preloader::instance();
$is_running = $wpo_minify_preloader->is_running();
$status = $wpo_minify_preloader->get_status_info();
if (!class_exists('WPO_Cache_Config')) require_once(WPO_PLUGIN_MAIN_PATH . '/cache/class-wpo-cache-config.php');
$cache_config = WPO_Cache_Config::instance();
WP_Optimize()->include_template(
'minify/preload-tab.php',
false,
array(
'is_cache_enabled' => $cache_config->get_option('enable_page_caching'),
'is_running' => $is_running,
'status_message' => isset($status['message']) ? $status['message'] : '',
)
);
}
/**
* Minify - Outputs the advanced tab
*
* @return void
*/
public function output_advanced() {
$wpo_minify_options = wp_optimize_minify_config()->get();
$files = false;
if (apply_filters('wpo_minify_status_show_files_on_load', true) && WPO_MINIFY_PHP_VERSION_MET) {
$files = WP_Optimize_Minify_Cache_Functions::get_cached_files();
}
// WP_Optimize_Minify_Functions is only loaded when Minify is active
if (class_exists('WP_Optimize_Minify_Functions')) {
$default_ignore = WP_Optimize_Minify_Functions::get_default_ignore();
$default_ie_blacklist = WP_Optimize_Minify_Functions::get_default_ie_blacklist();
} else {
$default_ignore = array();
$default_ie_blacklist = array();
}
WP_Optimize()->include_template(
'minify/advanced-tab.php',
false,
array(
'wpo_minify_options' => $wpo_minify_options,
'files' => $files,
'default_ignore' => $default_ignore,
'default_ie_blacklist' => $default_ie_blacklist
)
);
}
}