%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/1857783/root/var/www/cwg/wp-content/plugins/wp-grid-builder/admin/
Upload File :
Create Path :
Current File : //proc/1857783/root/var/www/cwg/wp-content/plugins/wp-grid-builder/admin/class-async.php

<?php
/**
 * Async
 *
 * @package   WP Grid Builder
 * @author    Loïc Blascos
 * @copyright 2019-2021 Loïc Blascos
 */

namespace WP_Grid_Builder\Admin;

use WP_Grid_Builder\Includes\Helpers;

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

/**
 * Handle asynchronous requests.
 *
 * @class WP_Grid_Builder\Admin\Async
 * @since 1.0.0
 */
abstract class Async {

	/**
	 * Action name
	 *
	 * @since 1.0.0
	 * @var string
	 */
	protected $action = WPGB_SLUG . '_async';

	/**
	 * Holds post
	 *
	 * @since 1.0.0
	 * @var array
	 */
	protected $post = [];

	/**
	 * Constructor
	 *
	 * @since 1.0.0
	 * @access public
	 */
	public function __construct() {

		add_action( 'wp_ajax_' . $this->action, [ $this, 'maybe_handle' ] );

	}

	/**
	 * Check ajax request method
	 *
	 * @since 1.0.0
	 * @access public
	 */
	public function maybe_handle() {

		$this->capability();
		$this->referer();
		$this->handle();

		// If no methods sent response.
		wp_die();

	}

	/**
	 * Check capability
	 *
	 * @since 1.0.0
	 * @access protected
	 */
	protected function capability() {

		if ( ! Helpers::current_user_can() ) {

			$this->send_response(
				false,
				__( 'You are not allowed to perform this action. Please contact site administrator for further information.', 'wp-grid-builder' )
			);

		}

	}

	/**
	 * Check referer
	 *
	 * @since 1.0.0
	 * @access protected
	 */
	protected function referer() {

		// Get unique nonce token from current action and method (action is prefixed by plugin slug).
		// Symbol is usually an object type ID but can be anything to improve security.
		$action = isset( $_POST['action'] ) ? sanitize_key( $_POST['action'] ) : '';
		$object = isset( $_POST['object'] ) ? sanitize_key( $_POST['object'] ) : '';
		$symbol = isset( $_POST['symbol'] ) ? sanitize_key( $_POST['symbol'] ) : '';
		$token  = $action . '_' . $object . ( $symbol ? '_' . $symbol : '' );

		if ( check_ajax_referer( $token, 'nonce', false ) === false ) {

			$this->send_response(
				false,
				__( 'An error occurred. Please try to refresh the page or logout and login again.', 'wp-grid-builder' )
			);

		}

		$this->post = wp_unslash( $_POST );

	}

	/**
	 * Handle unknown errors
	 *
	 * @since 1.0.0
	 * @access protected
	 */
	protected function unknown_error() {

		$this->send_response(
			false,
			__( 'Sorry, an unknown error occurred.', 'wp-grid-builder' )
		);

	}

	/**
	 * Send response
	 *
	 * @since 1.0.0
	 * @access protected
	 *
	 * @param boolean $success Success state.
	 * @param string  $message Holds message for backend.
	 * @param string  $content Holds content for backend.
	 */
	protected function send_response( $success = true, $message = '', $content = '' ) {

		wp_send_json(
			[
				'success' => (bool) $success,
				'message' => wp_strip_all_tags( $message ),
				// Content is already escaped in methods & templates.
				'content' => $content,
			]
		);

	}

	/**
	 * Helper to get var from $post
	 *
	 * @since 1.0.0
	 * @access protected
	 *
	 * @param  string  $key Key name to get from $post array.
	 * @param  boolean $throw Throw error.
	 * @return mixed
	 */
	protected function get_var( $key = '', $throw = true ) {

		if ( empty( $key ) ) {
			return;
		}

		if ( ! isset( $this->post[ $key ] ) ) {

			if ( $throw ) {
				$this->unknown_error();
			}

			return;

		}

		return $this->post[ $key ];

	}


	/**
	 * Handle method to trigger.
	 *
	 * @since 1.0.0
	 * @access protected
	 */
	protected function handle() {

		$method = $this->get_var( 'method' );

		if ( ! method_exists( $this, $method ) ) {
			$this->unknown_error();
		}

		call_user_func( [ $this, $method ] );

	}
}

Zerion Mini Shell 1.0