shell bypass 403
<?php
/**
* Setting up theme settings.
*
* @package Page Builder Framework
*/
use Mapsteps\Wpbf\Customizer\Controls\Typography\FontsUtil;
defined( 'ABSPATH' ) || die( "Can't access directly" );
/**
* Admin body class.
*
* @param string $classes The class names.
*/
function wpbf_theme_settings_admin_body_class( $classes ) {
$screen = get_current_screen();
if ( $screen->id !== 'appearance_page_wpbf-premium' ) {
return $classes;
}
$classes .= ' heatbox-admin has-header';
return $classes;
}
add_action( 'admin_body_class', 'wpbf_theme_settings_admin_body_class' );
/**
* Add theme settings.
*/
function wpbf_theme_settings_page() {
// Stop here if Premium Add-On is active.
if ( wpbf_is_premium() ) {
return;
}
add_theme_page( __( 'Theme Settings', 'page-builder-framework' ), __( 'Theme Settings', 'page-builder-framework' ), 'manage_options', 'wpbf-premium', 'wpbf_theme_settings_callback' );
}
add_action( 'admin_menu', 'wpbf_theme_settings_page' );
/**
* Theme settings callback.
*/
function wpbf_theme_settings_callback() {
require __DIR__ . '/settings/settings-page.php';
}
/**
* Save activation notice dismissal.
*/
function wpbf_activation_notice_dismissal() {
$nonce = isset( $_POST['nonce'] ) ? $_POST['nonce'] : 0;
$dismiss = isset( $_POST['dismiss'] ) ? absint( $_POST['dismiss'] ) : 0;
if ( empty( $dismiss ) ) {
wp_send_json_error( 'Invalid Request' );
}
if ( ! wp_verify_nonce( $nonce, 'WPBF_Dismiss_Activation_Notice' ) ) {
wp_send_json_error( 'Invalid Token' );
}
update_option( 'wpbf_activation_notice_dismissed', 1 );
wp_send_json_success( 'Activation notice has been dismissed.' );
}
add_action( 'wp_ajax_wpbf_activation_notice_dismissal', 'wpbf_activation_notice_dismissal' );
/**
* Save BFCM notice dismissal.
*/
function wpbf_bfcm_notice_dismissal() {
$nonce = isset( $_POST['nonce'] ) ? $_POST['nonce'] : 0;
$dismiss = isset( $_POST['dismiss'] ) ? absint( $_POST['dismiss'] ) : 0;
if ( empty( $dismiss ) ) {
wp_send_json_error( 'Invalid Request' );
}
if ( ! wp_verify_nonce( $nonce, 'WPBF_Dismiss_Bfcm_Notice' ) ) {
wp_send_json_error( 'Invalid Token' );
}
update_option( 'wpbf_bfcm_notice_dismissed_2025', 1 );
wp_send_json_success( 'BFCM notice has been dismissed.' );
}
add_action( 'wp_ajax_wpbf_bfcm_notice_dismissal', 'wpbf_bfcm_notice_dismissal' );
/**
* Display activation notice.
*/
function wpbf_show_activation_notice() {
// Stop here if Premium Add-On is active.
if ( wpbf_is_premium() ) {
return;
}
// Stop here if notice has been dismissed.
if ( ! empty( get_option( 'wpbf_activation_notice_dismissed', 0 ) ) ) {
return;
}
// Stop here if current user can't manage options.
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
require __DIR__ . '/settings/activation-notice.php';
}
add_action( 'admin_notices', 'wpbf_show_activation_notice' );
/**
* Display BFCM notice.
*/
function wpbf_show_bfcm_notice() {
// Stop here if Premium Add-On is active.
if ( wpbf_is_premium() ) {
return;
}
// Stop here if current user is not an admin.
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
$start = strtotime( 'november 24th, 2025' );
$end = strtotime( 'december 1st, 2025' );
$now = time();
// Stop here if we are not in the sales period.
if ( $now < $start || $now > $end ) {
return;
}
// Stop here if notice has been dismissed.
if ( ! empty( get_option( 'wpbf_bfcm_notice_dismissed_2025', 0 ) ) ) {
return;
}
require __DIR__ . '/settings/bfcm-notice.php';
}
add_action( 'admin_notices', 'wpbf_show_bfcm_notice' );
/**
* Display compatibility notice.
*/
function wpbf_compatibility_notice() {
// Stop here if current user can't manage options.
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
// Stop here if Premium Add-On is not outdated.
if ( ! wpbf_is_premium_addon_outdated() ) {
return;
}
require __DIR__ . '/settings/compatibility-notice.php';
}
add_action( 'admin_notices', 'wpbf_compatibility_notice' );
/**
* Clear font cache directory.
*/
function wpbf_clear_font_cache() {
$nonce = isset( $_POST['nonce'] ) ? $_POST['nonce'] : 0;
if ( ! wp_verify_nonce( $nonce, 'WPBF_Clear_Font_Cache' ) ) {
wp_send_json_error( 'Invalid Token' );
}
$result = ( new FontsUtil() )->clearDownloadedGoogleFonts();
if ( is_wp_error( $result ) ) {
wp_send_json_error( $result->get_error_message() );
}
wp_send_json_success( 'Font Cache cleared.', 'page-builder-framework' );
}
add_action( 'wp_ajax_wpbf_clear_font_cache', 'wpbf_clear_font_cache' );