Your IP : 3.133.147.193
<?php
/**
* The admin-panel specific functionality of the plugin.
*
*
* @since 1.0.0
* @package LiteSpeed_Cache
* @subpackage LiteSpeed_Cache/admin
* @author LiteSpeed Technologies <info@litespeedtech.com>
*/
namespace LiteSpeed;
defined('WPINC') || exit();
class Admin extends Root
{
const LOG_TAG = '👮';
const PAGE_EDIT_HTACCESS = 'litespeed-edit-htaccess';
/**
* Initialize the class and set its properties.
* Run in hook `after_setup_theme` when is_admin()
*
* @since 1.0.0
*/
public function __construct()
{
// Define LSCWP_MU_PLUGIN if is mu-plugins
if (defined('WPMU_PLUGIN_DIR') && dirname(LSCWP_DIR) == WPMU_PLUGIN_DIR) {
define('LSCWP_MU_PLUGIN', true);
}
self::debug('No cache due to Admin page');
defined('DONOTCACHEPAGE') || define('DONOTCACHEPAGE', true);
// Additional litespeed assets on admin display
// Also register menu
$this->cls('Admin_Display');
// initialize admin actions
add_action('admin_init', array($this, 'admin_init'));
// add link to plugin list page
add_filter('plugin_action_links_' . LSCWP_BASENAME, array($this->cls('Admin_Display'), 'add_plugin_links'));
}
/**
* Callback that initializes the admin options for LiteSpeed Cache.
*
* @since 1.0.0
* @access public
*/
public function admin_init()
{
// Hook attachment upload
if ($this->conf(Base::O_IMG_OPTM_AUTO)) {
add_filter('wp_update_attachment_metadata', array($this, 'wp_update_attachment_metadata'), 9999, 2);
}
$this->_proceed_admin_action();
// Terminate if user doesn't have the access to settings
if (is_network_admin()) {
$capability = 'manage_network_options';
} else {
$capability = 'manage_options';
}
if (!current_user_can($capability)) {
return;
}
// Save setting from admin settings page
// NOTE: cli will call `validate_plugin_settings` manually. Cron activation doesn't need to validate
// Add privacy policy
// @since 2.2.6
if (function_exists('wp_add_privacy_policy_content')) {
wp_add_privacy_policy_content(Core::NAME, Doc::privacy_policy());
}
$this->cls('Media')->after_admin_init();
do_action('litspeed_after_admin_init');
if ($this->cls('Router')->esi_enabled()) {
add_action('in_widget_form', array($this->cls('Admin_Display'), 'show_widget_edit'), 100, 3);
add_filter('widget_update_callback', __NAMESPACE__ . '\Admin_Settings::validate_widget_save', 10, 4);
}
}
/**
* Handle attachment update
* @since 4.0
*/
public function wp_update_attachment_metadata($data, $post_id)
{
$this->cls('Img_Optm')->wp_update_attachment_metadata($data, $post_id);
return $data;
}
/**
* Run litespeed admin actions
*
* @since 1.1.0
*/
private function _proceed_admin_action()
{
// handle actions
switch (Router::get_action()) {
case Router::ACTION_SAVE_SETTINGS:
$this->cls('Admin_Settings')->save($_POST);
break;
// Save network settings
case Router::ACTION_SAVE_SETTINGS_NETWORK:
$this->cls('Admin_Settings')->network_save($_POST);
break;
default:
break;
}
}
/**
* Clean up the input string of any extra slashes/spaces.
*
* @since 1.0.4
* @access public
* @param string $input The input string to clean.
* @return string The cleaned up input.
*/
public static function cleanup_text($input)
{
if (is_array($input)) {
return array_map(__CLASS__ . '::cleanup_text', $input);
}
return stripslashes(trim($input));
}
/**
* After a LSCWP_CTRL action, need to redirect back to the same page
* without the nonce and action in the query string.
*
* If the redirect url cannot be determined, redirects to the homepage.
*
* @since 1.0.12
* @access public
* @global string $pagenow
*/
public static function redirect($url = false)
{
global $pagenow;
if (!empty($_GET['_litespeed_ori'])) {
wp_safe_redirect(wp_get_referer() ?: get_home_url());
exit();
}
$qs = '';
if (!$url) {
if (!empty($_GET)) {
if (isset($_GET[Router::ACTION])) {
unset($_GET[Router::ACTION]);
}
if (isset($_GET[Router::NONCE])) {
unset($_GET[Router::NONCE]);
}
if (isset($_GET[Router::TYPE])) {
unset($_GET[Router::TYPE]);
}
if (isset($_GET['litespeed_i'])) {
unset($_GET['litespeed_i']);
}
if (!empty($_GET)) {
$qs = '?' . http_build_query($_GET);
}
}
if (is_network_admin()) {
$url = network_admin_url($pagenow . $qs);
} else {
$url = admin_url($pagenow . $qs);
}
}
wp_redirect($url);
exit();
}
}