File "WP_Async_Request.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/packages/action-scheduler/lib/WP_Async_Request.php
File size: 1.96 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

if (!class_exists('WP_Async_Request')) {
    abstract class WP_Async_Request
    {
        protected $prefix = 'wp';
        protected $action = 'async_request';
        protected $identifier;
        protected $data = array();
        public function __construct()
        {
            $this->identifier = $this->prefix . '_' . $this->action;
            add_action('wp_ajax_' . $this->identifier, array($this, 'maybe_handle'));
            add_action('wp_ajax_nopriv_' . $this->identifier, array($this, 'maybe_handle'));
        }
        public function data($data)
        {
            $this->data = $data;
            return $this;
        }
        public function dispatch()
        {
            $url = add_query_arg($this->get_query_args(), $this->get_query_url());
            $args = $this->get_post_args();
            return wp_remote_post(esc_url_raw($url), $args);
        }
        protected function get_query_args()
        {
            if (property_exists($this, 'query_args')) {
                return $this->query_args;
            }
            return array('action' => $this->identifier, 'nonce' => wp_create_nonce($this->identifier));
        }
        protected function get_query_url()
        {
            if (property_exists($this, 'query_url')) {
                return $this->query_url;
            }
            return admin_url('admin-ajax.php');
        }
        protected function get_post_args()
        {
            if (property_exists($this, 'post_args')) {
                return $this->post_args;
            }
            return array('timeout' => 0.01, 'blocking' => false, 'body' => $this->data, 'cookies' => $_COOKIE, 'sslverify' => apply_filters('https_local_ssl_verify', false));
        }
        public function maybe_handle()
        {
            session_write_close();
            check_ajax_referer($this->identifier, 'nonce');
            $this->handle();
            wp_die();
        }
        protected abstract function handle();
    }
}