HEX
Server: Apache/2.4.59 (Debian)
System: Linux emory.shared.1984.is 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) x86_64
User: u11574 (1020)
PHP: 7.4.33
Disabled: exec,system,passthru,shell_exec,popen,show_source,shell,symlink,proc_open,pcntl_exec,pcntl_fork,pcntl_wait,pcntl_alarm,pcntl_signal,pcntl_signal_dispatch,pcntl_getpriority,proc_get_status,expect_popen,dl,putenv,mail
Upload Files
File: /var/www/virtual/mariaellingsen.com/htdocs/wp-content/plugins/soliloquy/includes/admin/export.php
<?php
/**
 * Export class.
 *
 * @since 1.0.0
 *
 * @package Soliloquy
 * @author SoliloquyWP Team <support@soliloquywp.com>
 */

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class Soliloquy_Export {

	/**
	 * Holds the class object.
	 *
	 * @since 1.0.0
	 *
	 * @var object
	 */
	public static $instance;

	/**
	 * Path to the file.
	 *
	 * @since 1.0.0
	 *
	 * @var string
	 */
	public $file = __FILE__;

	/**
	 * Holds the base class object.
	 *
	 * @since 1.0.0
	 *
	 * @var object
	 */
	public $base;

	/**
	 * Primary class constructor.
	 *
	 * @since 1.0.0
	 */
	public function __construct() {

		// Load the base class object.
		$this->base = Soliloquy::get_instance();

		// Export a slider.
		$this->export_slider();
	}

	/**
	 * Exports a Soliloquy slider.
	 *
	 * @since 1.0.0
	 *
	 * @return null Return early if failing proper checks to export the slider.
	 */
	public function export_slider() {

		if ( ! $this->has_exported_slider() ) {
			return;
		}

		if ( ! $this->verify_exported_slider() ) {
			return;
		}

		if ( ! $this->can_export_slider() ) {
			return;
		}

		// Ignore the user aborting the action.
		ignore_user_abort( true );

		// Grab the proper data.
		$post_id = absint( $_POST['soliloquy_post_id'] );
		$data    = get_post_meta( $post_id, '_sol_slider_data', true );

		// Append the in_slider data checker to the data array.
		$data['in_slider'] = get_post_meta( $post_id, '_sol_in_slider', true );

		// Set the proper headers.
		nocache_headers();
		header( 'Content-Type: application/json; charset=utf-8' );
		header( 'Content-Disposition: attachment; filename=soliloquy-' . $post_id . '-' . date( 'm-d-Y' ) . '.json' );
		header( 'Expires: 0' );

		// Make the settings downloadable to a JSON file and die.
		die( json_encode( $data ) );
	}

	/**
	 * Helper method to determine if a slider export is available.
	 *
	 * @since 1.0.0
	 *
	 * @return bool True if an exported slider is available, false otherwise.
	 */
	public function has_exported_slider() {

		return ! empty( $_POST['soliloquy_export'] );
	}

	/**
	 * Helper method to determine if a slider export nonce is valid and verified.
	 *
	 * @since 1.0.0
	 *
	 * @return bool True if the nonce is valid, false otherwise.
	 */
	public function verify_exported_slider() {

		return isset( $_POST['soliloquy-export'] ) && wp_verify_nonce( $_POST['soliloquy-export'], 'soliloquy-export' );
	}

	/**
	 * Helper method to determine if the user can actually export the slider.
	 *
	 * @since 1.0.0
	 *
	 * @return bool True if the user can export the slider, false otherwise.
	 */
	public function can_export_slider() {

		return apply_filters( 'soliloquy_export_cap', current_user_can( 'manage_options' ) );
	}

	/**
	 * Returns the singleton instance of the class.
	 *
	 * @since 1.0.0
	 *
	 * @return object The Soliloquy_Export object.
	 */
	public static function get_instance() {

		if ( ! isset( self::$instance ) && ! ( self::$instance instanceof Soliloquy_Export ) ) {
			self::$instance = new Soliloquy_Export();
		}

		return self::$instance;
	}
}

// Load the export class.
$soliloquy_export = Soliloquy_Export::get_instance();