Overview

Namespaces

  • None
  • VSP
    • Core
      • Abstracts
      • Interfaces
      • Traits
        • WC_Compatibility
    • Deprecation
    • Helper
    • Modules
      • Addons
      • Logger

Classes

  • VSP\Ajax
  • VSP\Ajaxer
  • VSP\Base
  • VSP\Cache
  • VSP\Core\Abstracts\Addon
  • VSP\Core\Abstracts\Log_Handler
  • VSP\Core\Abstracts\Plugin_Settings
  • VSP\Core\Instance_Handler
  • VSP\Deprecation\Actions
  • VSP\Deprecation\Filters
  • VSP\Error
  • VSP\Framework
  • VSP\Framework_Admin
  • VSP\Framework_Base
  • VSP\Framework_Modules
  • VSP\Helper
  • VSP\Helper\Price_Calculation
  • VSP\Modules\Addons
  • VSP\Modules\Addons\Admin
  • VSP\Modules\Addons\Core
  • VSP\Modules\Logger
  • VSP\Modules\Logger\File_Handler
  • VSP\Modules\Logger\Levels
  • VSP\Modules\Shortcode
  • VSP\Modules\System_Logs
  • VSP\Modules\System_Tools
  • VSP\Modules\WPOnion
  • VSP\Setup
  • VSP\WC_Compatibility
  • VSP_Framework_Loader

Interfaces

  • VSP\Core\Interfaces\Log_Handler
  • VSP\Core\Interfaces\Logger

Traits

  • VSP\Core\Traits\Array_Helper
  • VSP\Core\Traits\Framework
  • VSP\Core\Traits\String_Helper
  • VSP\Core\Traits\URL
  • VSP\Core\Traits\WC_Compatibility\Product
  • VSP\Core\Traits\WC_Compatibility\Version
  • VSP\Core\Traits\WC_Helper
  • VSP\Core\Traits\WP

Functions

  • vsp_add_wc_required_notice
  • vsp_ajax_action
  • vsp_current_screen
  • vsp_date_format
  • vsp_delete_cache
  • vsp_doing_it_wrong
  • vsp_force_load
  • vsp_force_load_vendors
  • vsp_get_cache
  • vsp_get_cache_defaults
  • vsp_get_file_paths
  • vsp_get_logger
  • vsp_get_time_in_seconds
  • vsp_is_admin
  • vsp_is_ajax
  • vsp_is_cron
  • vsp_is_error
  • vsp_is_frontend
  • vsp_is_heartbeat
  • vsp_is_json
  • vsp_is_request
  • vsp_is_screen
  • vsp_json_last_error
  • vsp_list_files
  • vsp_list_log_files
  • vsp_load_core_assets
  • vsp_load_file
  • vsp_log_msg
  • vsp_logger
  • vsp_make_log_list_tree
  • vsp_maybe_load
  • vsp_placeholder_img
  • vsp_print_log_files_ui
  • vsp_register_assets
  • vsp_register_plugin
  • vsp_send_callback_error
  • vsp_send_callback_success
  • vsp_send_json_callback
  • vsp_set_cache
  • vsp_set_time_limit
  • vsp_slashit
  • vsp_time_format
  • vsp_unslashit
  • vsp_url
  • vsp_validate_required_plugin
  • Overview
  • Namespace
  • Class
 1:  2:  3:  4:  5:  6:  7:  8:  9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 
<?php

namespace VSP;

defined( 'ABSPATH' ) || exit;

use Varunsridharan\WordPress\Ajaxer;

/**
 * Class VSP_Core_Ajax
 *
 * @author Varun Sridharan <varunsridharan23@gmail.com>
 */
final class Ajax extends Ajaxer {
    /**
     * Ajax Action Prefix
     *
     * @var string
     */
    protected $action_prefix = 'vsp';

    /**
     * Ajax actions
     *
     * @var array
     */
    protected $actions = array(
        'addon_action' => false,
        'download_log' => true,
    );

    /**
     * Handles Ajax Request
     */
    public function addon_action() {
        if ( $this->has_request( 'hook_slug' ) ) {
            $this->validate_request( 'addon_action', esc_html__( 'Addon Action Not Provided', 'vsp-framework' ) );
            $this->validate_request( 'addon', esc_html__( 'Unable To Process Your Request', 'vsp-framework' ) );
            do_action( $_REQUEST['hook_slug'] . '/addon/ajax/handle/request', $this );
        }
        $this->json_error();
    }

    /**
     * Handles Log Download.
     */
    public function download_log() {
        if ( ! isset( $_REQUEST['_wpnonce'] ) ) {
            $this->error( esc_html__( 'Invalid Nonce', 'vsp-framework' ) );
        }

        if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'download_log' ) ) {
            $this->error( esc_html__( 'Nonce Expired', 'vsp-framework' ) );
        }

        if ( isset( $_REQUEST['handle'] ) && ! empty( $_REQUEST['handle'] ) ) {
            $file     = $_REQUEST['handle'];
            $ff_regx  = '/\.([^.]+)$/';
            $ff_types = array( 'log', 'txt' );
            if ( preg_match( $ff_regx, $file, $m ) && in_array( $m[1], $ff_types, true ) ) {
                $files = vsp_list_log_files();
                foreach ( $files as $f ) {
                    if ( preg_match( $ff_regx, $f, $m2 ) && in_array( $m2[1], $ff_types, true ) ) {
                        if ( $f === $file && file_exists( VSP_LOG_DIR . $f ) ) {
                            header( 'Cache-Control: private' );
                            header( 'Content-Type: application/stream' );
                            $size = filesize( VSP_LOG_DIR . $f );
                            header( "Content-Disposition: attachment; filename=$f" );
                            header( 'Content-Length: ' . $size );
                            readfile( VSP_LOG_DIR . $f );
                            wp_die();
                        }
                    }
                }
                $this->error( esc_html__( 'Log File Not Found !', 'vsp-framework' ) );
            } else {
                $this->error( esc_html__( 'Invalid Log File Extension', 'vsp-framework' ) );
            }
        } else {
            $this->error( esc_html__( 'Invalid Log File', 'vsp-framework' ) );
        }
        wp_die();
    }
}

return new Ajax();
API documentation generated by ApiGen