123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <?php
- if ( ! defined( 'ABSPATH' ) ) {
- exit;
- }
- if ( ! class_exists( 'ACF_Ajax' ) ) :
- class ACF_Ajax {
-
- var $action = '';
-
- var $request;
-
- var $public = false;
-
- function __construct() {
- $this->initialize();
- $this->add_actions();
- }
-
- function has( $key = '' ) {
- return isset( $this->request[ $key ] );
- }
-
- function get( $key = '' ) {
- return isset( $this->request[ $key ] ) ? $this->request[ $key ] : null;
- }
-
- function set( $key = '', $value = null ) {
- $this->request[ $key ] = $value;
- return $this;
- }
-
- function initialize() {
-
- }
-
- function add_actions() {
-
- add_action( "wp_ajax_{$this->action}", array( $this, 'request' ) );
-
- if ( $this->public ) {
- add_action( "wp_ajax_nopriv_{$this->action}", array( $this, 'request' ) );
- }
- }
-
- function request() {
-
- $this->request = wp_unslash( $_REQUEST );
-
- $error = $this->verify_request( $this->request );
- if ( is_wp_error( $error ) ) {
- $this->send( $error );
- }
-
- $this->send( $this->get_response( $this->request ) );
- }
-
- function verify_request( $request ) {
-
- if ( ! acf_verify_ajax() ) {
- return new WP_Error( 'acf_invalid_nonce', __( 'Invalid nonce.', 'acf' ), array( 'status' => 404 ) );
- }
- return true;
- }
-
- function get_response( $request ) {
- return true;
- }
-
- function send( $response ) {
-
- if ( is_wp_error( $response ) ) {
- $this->send_error( $response );
-
- } else {
- wp_send_json( $response );
- }
- }
-
- function send_error( $error ) {
-
- $error_data = $error->get_error_data();
- if ( is_array( $error_data ) && isset( $error_data['status'] ) ) {
- $status_code = $error_data['status'];
- } else {
- $status_code = 500;
- }
- wp_send_json(
- array(
- 'code' => $error->get_error_code(),
- 'message' => $error->get_error_message(),
- 'data' => $error->get_error_data(),
- ),
- $status_code
- );
- }
- }
- endif;
|