PHP 8.2.30
Preview: import.cls.php Size: 4.29 KB
/home/byroehnu/kingslandgroupofschools.com.ng/wp-content/plugins/litespeed-cache/src/import.cls.php

<?php
// phpcs:ignoreFile

/**
 * The import/export class.
 *
 * @since       1.8.2
 */

namespace LiteSpeed;

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

class Import extends Base {

	protected $_summary;

	const TYPE_IMPORT = 'import';
	const TYPE_EXPORT = 'export';
	const TYPE_RESET  = 'reset';

	/**
	 * Init
	 *
	 * @since  1.8.2
	 */
	public function __construct() {
		Debug2::debug('Import init');

		$this->_summary = self::get_summary();
	}

	/**
	 * Export settings to file
	 *
	 * @since 1.8.2
	 * @since 7.3 added download content type
	 * @access public
	 */
	public function export( $only_data_return = false ) {
		$raw_data = $this->get_options(true);

		$data = array();
		foreach ($raw_data as $k => $v) {
			$data[] = \json_encode(array( $k, $v ));
		}

		$data = implode("\n\n", $data);

		if ($only_data_return) {
			return $data;
		}

		$filename = $this->_generate_filename();

		// Update log
		$this->_summary['export_file'] = $filename;
		$this->_summary['export_time'] = time();
		self::save_summary();

		Debug2::debug('Import: Saved to ' . $filename);

		@header('Content-Type: application/octet-stream');
		@header('Content-Disposition: attachment; filename=' . $filename);
		echo $data;

		exit();
	}

	/**
	 * Import settings from file
	 *
	 * @since  1.8.2
	 * @access public
	 */
	public function import( $file = false ) {
		if (!$file) {
			if (empty($_FILES['ls_file']['name']) || substr($_FILES['ls_file']['name'], -5) != '.data' || empty($_FILES['ls_file']['tmp_name'])) {
				Debug2::debug('Import: Failed to import, wrong ls_file');

				$msg = __('Import failed due to file error.', 'litespeed-cache');
				Admin_Display::error($msg);

				return false;
			}

			$this->_summary['import_file'] = $_FILES['ls_file']['name'];

			$data = file_get_contents($_FILES['ls_file']['tmp_name']);
		} else {
			$this->_summary['import_file'] = $file;

			$data = file_get_contents($file);
		}

		// Update log
		$this->_summary['import_time'] = time();
		self::save_summary();

		$ori_data = array();
		try {
			// Check if the data is v4+ or not
			if (strpos($data, '["_version",') === 0) {
				Debug2::debug('[Import] Data version: v4+');
				$data = explode("\n", $data);
				foreach ($data as $v) {
					$v = trim($v);
					if (!$v) {
						continue;
					}
					list($k, $v)  = \json_decode($v, true);
					$ori_data[$k] = $v;
				}
			} else {
				$ori_data = \json_decode(base64_decode($data), true);
			}
		} catch (\Exception $ex) {
			Debug2::debug('[Import] ❌ Failed to parse serialized data');
			return false;
		}

		if (!$ori_data) {
			Debug2::debug('[Import] ❌ Failed to import, no data');
			return false;
		} else {
			Debug2::debug('[Import] Importing data', $ori_data);
		}

		$this->cls('Conf')->update_confs($ori_data);

		if (!$file) {
			Debug2::debug('Import: Imported ' . $_FILES['ls_file']['name']);

			$msg = sprintf(__('Imported setting file %s successfully.', 'litespeed-cache'), $_FILES['ls_file']['name']);
			Admin_Display::success($msg);
		} else {
			Debug2::debug('Import: Imported ' . $file);
		}

		return true;
	}

	/**
	 * Reset all configs to default values.
	 *
	 * @since  2.6.3
	 * @access public
	 */
	public function reset() {
		$options = $this->cls('Conf')->load_default_vals();

		$this->cls('Conf')->update_confs($options);

		Debug2::debug('[Import] Reset successfully.');

		$msg = __('Reset successfully.', 'litespeed-cache');
		Admin_Display::success($msg);
	}

	/**
	 * Generate the filename to export
	 *
	 * @since  1.8.2
	 * @access private
	 */
	private function _generate_filename() {
		// Generate filename
		$parsed_home = parse_url(get_home_url());
		$filename    = 'LSCWP_cfg-';
		if (!empty($parsed_home['host'])) {
			$filename .= $parsed_home['host'] . '_';
		}

		if (!empty($parsed_home['path'])) {
			$filename .= $parsed_home['path'] . '_';
		}

		$filename = str_replace('/', '_', $filename);

		$filename .= '-' . date('Ymd_His') . '.data';

		return $filename;
	}

	/**
	 * Handle all request actions from main cls
	 *
	 * @since  1.8.2
	 * @access public
	 */
	public function handler() {
		$type = Router::verify_type();

		switch ($type) {
			case self::TYPE_IMPORT:
            $this->import();
				break;

			case self::TYPE_EXPORT:
            $this->export();
				break;

			case self::TYPE_RESET:
            $this->reset();
				break;

			default:
				break;
		}

		Admin::redirect();
	}
}

Directory Contents

Dirs: 2 × Files: 62

Name Size Perms Modified Actions
cdn DIR
- drwxr-xr-x 2026-03-27 13:27:27
Edit Download
- drwxr-xr-x 2026-03-27 13:27:27
Edit Download
17.31 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
48.47 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
11.12 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
6.13 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
10.36 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
8.65 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
37.66 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
15.92 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
10.43 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
4.33 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
9.38 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
10.32 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
5.95 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
19.68 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
7.32 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
19.53 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
24.35 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
20.97 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
19.41 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
44.72 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
17.77 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
22.21 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
5.72 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
15.35 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
18.40 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
5.45 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
7.35 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
27.18 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
10.57 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
2.75 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
36.57 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
2.83 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
29.81 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
30.85 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
22.10 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
21.90 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
5.26 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
4.29 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
5.50 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
17.02 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
4.03 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
44.08 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
5.29 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
18.82 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
20.95 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
14.16 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
38.64 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
10.50 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
17.93 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
34.41 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
6.12 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
9.08 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
14.29 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
20.76 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
3.08 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
9.26 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
7.05 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
4.17 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
16.35 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
26.01 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
21.33 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download
9.38 KB lrw-r--r-- 2026-03-27 13:27:27
Edit Download

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