PHP 8.2.30
Preview: metabox.cls.php Size: 4.26 KB
/usr/src/litespeed-wp-plugin/7.2/litespeed-cache/src/metabox.cls.php

<?php
/**
 * The class to operate post editor metabox settings
 *
 * @since       4.7
 * @package     Core
 * @subpackage  Core/inc
 * @author      LiteSpeed Technologies <info@litespeedtech.com>
 */
namespace LiteSpeed;

defined('WPINC') || exit();

class Metabox extends Root {

	const LOG_TAG = '📦';

	const POST_NONCE_ACTION = 'post_nonce_action';

	private $_postmeta_settings;

	/**
	 * Get the setting list
	 *
	 * @since 4.7
	 */
	public function __construct() {
		// Append meta box
		$this->_postmeta_settings = array(
			'litespeed_no_cache' => __('Disable Cache', 'litespeed-cache'),
			'litespeed_no_image_lazy' => __('Disable Image Lazyload', 'litespeed-cache'),
			'litespeed_no_vpi' => __('Disable VPI', 'litespeed-cache'),
			'litespeed_vpi_list' => __('Viewport Images', 'litespeed-cache'),
			'litespeed_vpi_list_mobile' => __('Viewport Images', 'litespeed-cache') . ' - ' . __('Mobile', 'litespeed-cache'),
		);
	}

	/**
	 * Register post edit settings
	 *
	 * @since 4.7
	 */
	public function register_settings() {
		add_action('add_meta_boxes', array( $this, 'add_meta_boxes' ));
		add_action('save_post', array( $this, 'save_meta_box_settings' ), 15, 2);
		add_action('attachment_updated', array( $this, 'save_meta_box_settings' ), 15, 2);
	}

	/**
	 * Register meta box
	 *
	 * @since 4.7
	 */
	public function add_meta_boxes( $post_type ) {
		if (apply_filters('litespeed_bypass_metabox', false, $post_type)) {
			return;
		}
		$post_type_obj = get_post_type_object($post_type);
		if (!empty($post_type_obj) && !$post_type_obj->public) {
			self::debug('post type public=false, bypass add_meta_boxes');
			return;
		}
		add_meta_box('litespeed_meta_boxes', __('LiteSpeed Options', 'litespeed-cache'), array( $this, 'meta_box_options' ), $post_type, 'side', 'core');
	}

	/**
	 * Show meta box content
	 *
	 * @since 4.7
	 */
	public function meta_box_options() {
		require_once LSCWP_DIR . 'tpl/inc/metabox.php';
	}

	/**
	 * Save settings
	 *
	 * @since 4.7
	 */
	public function save_meta_box_settings( $post_id, $post ) {
		global $pagenow;

		self::debug('Maybe save post2 [post_id] ' . $post_id);

		if ($pagenow != 'post.php' || !$post || !is_object($post)) {
			return;
		}

		if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
			return;
		}

		if (!$this->cls('Router')->verify_nonce(self::POST_NONCE_ACTION)) {
			return;
		}

		self::debug('Saving post [post_id] ' . $post_id);

		foreach ($this->_postmeta_settings as $k => $v) {
			$val = isset($_POST[$k]) ? $_POST[$k] : false;
			$this->save($post_id, $k, $val);
		}
	}

	/**
	 * Load setting per post
	 *
	 * @since 4.7
	 */
	public function setting( $conf, $post_id = false ) {
		// Check if has metabox non-cacheable setting or not
		if (!$post_id) {
			$home_id = get_option('page_for_posts');
			if (is_singular()) {
				$post_id = get_the_ID();
			} elseif ($home_id > 0 && is_home()) {
				$post_id = $home_id;
			}
		}

		if ($post_id && ($val = get_post_meta($post_id, $conf, true))) {
			return $val;
		}

		return null;
	}

	/**
	 * Save a metabox value
	 *
	 * @since 4.7
	 */
	public function save( $post_id, $name, $val, $is_append = false ) {
		if (strpos($name, 'litespeed_vpi_list') !== false) {
			$val = Utility::sanitize_lines($val, 'basename,drop_webp');
		}

		// Load existing data if has set
		if ($is_append) {
			$existing_data = $this->setting($name, $post_id);
			if ($existing_data) {
				$existing_data = Utility::sanitize_lines($existing_data, 'basename');
				$val           = array_unique(array_merge($val, $existing_data));
			}
		}

		if ($val) {
			update_post_meta($post_id, $name, $val);
		} else {
			delete_post_meta($post_id, $name);
		}
	}

	/**
	 * Load exclude images per post
	 *
	 * @since 4.7
	 */
	public function lazy_img_excludes( $list ) {
		$is_mobile = $this->_separate_mobile();
		$excludes  = $this->setting($is_mobile ? 'litespeed_vpi_list_mobile' : 'litespeed_vpi_list');
		if ($excludes !== null) {
			$excludes = Utility::sanitize_lines($excludes, 'basename');
			if ($excludes) {
				// Check if contains `data:` (invalid result, need to clear existing result) or not
				if (Utility::str_hit_array('data:', $excludes)) {
					$this->cls('VPI')->add_to_queue();
				} else {
					return array_merge($list, $excludes);
				}
			}

			return $list;
		}

		$this->cls('VPI')->add_to_queue();

		return $list;
	}
}

Directory Contents

Dirs: 2 × Files: 51

Name Size Perms Modified Actions
cdn DIR
- drwxr-xr-x 2025-06-18 22:15:22
Edit Download
- drwxr-xr-x 2025-06-18 22:15:22
Edit Download
15.06 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
35.74 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
10.95 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
4.47 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
11.52 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
6.12 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
32.76 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
13.22 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
54.29 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
17.39 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
21.25 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
20.16 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
14.89 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
41.71 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
15.25 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
17.98 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
23.38 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
10.16 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
13.17 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
4.73 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
7.49 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
27.17 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
10.53 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
27.78 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
2.90 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
24.13 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
65.27 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
4.18 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
5.48 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
14.91 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
3.42 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
33.18 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
4.26 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
16.49 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
34.13 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
37.19 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
9.49 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
14.26 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
30.85 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
6.19 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
7.52 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
12.84 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
19.94 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
2.45 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
9.27 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
6.14 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
3.41 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
14.31 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
20.82 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
20.17 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download
7.26 KB lrw-r--r-- 2025-06-18 22:15:22
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).