shell bypass 403
<?php
namespace Happy_Addons\Elementor\Classes;
use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
defined('ABSPATH') || die();
class Library_Manager {
protected static $source = null;
public static function print_template_views() {
include_once HAPPY_ADDONS_DIR_PATH . 'templates/template-library/templates.php';
}
public static function enqueue_assets() {
wp_enqueue_style(
'happy-addons-templates-library',
HAPPY_ADDONS_ASSETS . 'admin/css/template-library.min.css',
[
'elementor-editor',
],
HAPPY_ADDONS_VERSION
);
wp_enqueue_script(
'happy-addons-templates-library',
HAPPY_ADDONS_ASSETS . 'admin/js/template-library.min.js',
[
'happy-elementor-addons-editor',
'jquery-hover-intent',
],
HAPPY_ADDONS_VERSION,
true
);
}
/**
* Undocumented function
*
* @return Library_Source
*/
public static function get_source() {
if ( is_null( self::$source ) ) {
self::$source = new Library_Source();
}
return self::$source;
}
public static function register_ajax_actions( Ajax $ajax ) {
$ajax->register_ajax_action( 'get_ha_library_data', function( $data ) {
if ( ! current_user_can( 'edit_posts' ) ) {
throw new \Exception( 'Access Denied' );
}
if ( ! empty( $data['editor_post_id'] ) ) {
$editor_post_id = absint( $data['editor_post_id'] );
if ( ! get_post( $editor_post_id ) ) {
throw new \Exception( __( 'Post not found.', 'happy-elementor-addons' ) );
}
ha_elementor()->db->switch_to_post( $editor_post_id );
}
$result = self::get_library_data( $data );
return $result;
} );
$ajax->register_ajax_action( 'get_ha_template_data', function( $data ) {
if ( ! current_user_can( 'edit_posts' ) ) {
throw new \Exception( 'Access Denied' );
}
if ( ! empty( $data['editor_post_id'] ) ) {
$editor_post_id = absint( $data['editor_post_id'] );
if ( ! get_post( $editor_post_id ) ) {
throw new \Exception( __( 'Post not found', 'happy-elementor-addons' ) );
}
ha_elementor()->db->switch_to_post( $editor_post_id );
}
if ( empty( $data['template_id'] ) ) {
throw new \Exception( __( 'Template id missing', 'happy-elementor-addons' ) );
}
$result = self::get_template_data( $data );
return $result;
} );
}
public static function get_template_data( array $args ) {
$source = self::get_source();
$data = $source->get_data( $args );
return $data;
}
/**
* Get library data from cache or remote
*
* type_tags has been added in version 2.15.0
*
* @param array $args
*
* @return array
*/
public static function get_library_data( array $args ) {
$source = self::get_source();
if ( ! empty( $args['sync'] ) ) {
Library_Source::get_library_data( true );
}
return [
'templates' => $source->get_items(),
'tags' => $source->get_tags(),
'type_tags' => $source->get_type_tags(),
];
}
}