File "SetupSettings.php"
Full Path: /home/jlklyejr/public_html/wp-content/test/wp-content/plugins/kirki/kirki-packages/settings/src/SetupSettings.php
File size: 4.48 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Class to setup Kirki's admin page.
*
* @package Kirki
*/
namespace Kirki\Settings;
use WP_Filesystem_Direct;
/**
* Class to setup Kirki's admin page.
*/
class SetupSettings {
/**
* Setting up hooks.
*/
public function __construct() {
add_action( 'init', array( $this, 'setup' ), 99999 );
}
/**
* Setup the settings page.
*/
public function setup() {
if ( ! apply_filters( 'kirki_settings_page', true ) ) {
return;
}
add_action( 'admin_menu', array( $this, 'submenu_page' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'admin_styles' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) );
add_action( 'wp_ajax_kirki_clear_font_cache', array( $this, 'clear_font_cache' ) );
add_action( 'wp_ajax_kirki_prepare_install_udb', array( $this, 'prepare_install_udb' ) );
new Notice();
}
/**
* Add submenu page.
*/
public function submenu_page() {
add_submenu_page(
'options-general.php',
__( 'Kirki Customizer Framework', 'kirki' ),
__( 'Kirki', 'kirki' ),
apply_filters( 'kirki_settings_capability', 'manage_options' ),
'kirki_settings',
array( $this, 'submenu_page_content' )
);
}
/**
* Submenu page content.
*/
public function submenu_page_content() {
$template = require KIRKI_PLUGIN_DIR . '/kirki-packages/settings/templates/settings-template.php';
$template();
}
/**
* Check if we're on the Kirki settings page.
*
* @return bool
*/
public function is_settings_page() {
$current_screen = get_current_screen();
return ( 'settings_page_kirki_settings' === $current_screen->id ? true : false );
}
/**
* Enqueue admin styles.
*/
public function admin_styles() {
if ( ! $this->is_settings_page() ) {
return;
}
wp_enqueue_style( 'heatbox', KIRKI_PLUGIN_URL . '/kirki-packages/settings/dist/heatbox.css', array(), KIRKI_VERSION );
wp_enqueue_style( 'kirki-settings', KIRKI_PLUGIN_URL . '/kirki-packages/settings/dist/settings.css', array(), KIRKI_VERSION );
}
/**
* Enqueue admin scripts.
*/
public function admin_scripts() {
if ( ! $this->is_settings_page() ) {
return;
}
wp_enqueue_script( 'updates' );
wp_enqueue_script( 'kirki-settings', KIRKI_PLUGIN_URL . '/kirki-packages/settings/dist/settings.js', array( 'jquery', 'wp-polyfill' ), KIRKI_VERSION, true );
$udb_name = '';
$udb_slug = '';
$udb_file = '';
$udb_basename = $udb_slug . '/' . $udb_file;
$udb_activation_url = add_query_arg(
array(
'action' => 'activate',
'plugin' => rawurlencode( $udb_basename ),
'plugin_status' => 'all',
'paged' => '1',
'_wpnonce' => wp_create_nonce( 'activate-plugin_' . $udb_basename ),
),
network_admin_url( 'plugins.php' )
);
$js_objects = array(
'recommendedPlugins' => [
'udb' => [
'name' => $udb_name,
'slug' => $udb_slug,
'basename' => $udb_basename,
'activationUrl' => $udb_activation_url,
'redirectUrl' => admin_url( 'edit.php?post_type=udb_widgets&page=udb_plugin_onboarding' ),
],
],
);
wp_localize_script(
'kirki-settings',
'kirkiSettings',
$js_objects
);
}
/**
* Admin body class.
*
* @param string $classes The existing body classes.
* @return string The body classes.
*/
public function admin_body_class( $classes ) {
if ( ! $this->is_settings_page() ) {
return $classes;
}
$classes .= ' heatbox-admin has-header';
return $classes;
}
/**
* Ajax handler to clear font cache directory.
*/
public function clear_font_cache() {
$nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : '';
if ( ! wp_verify_nonce( $nonce, 'Kirki_Clear_Font_Cache' ) ) {
wp_send_json_error( 'Invalid nonce' );
}
$capability = apply_filters( 'kirki_settings_capability', 'manage_options' );
if ( ! current_user_can( $capability ) ) {
wp_send_json_error( "You don't have capability to run this action" );
}
include_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php';
include_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php';
$file_system = new WP_Filesystem_Direct( false );
$fonts_dir = WP_CONTENT_DIR . '/fonts';
if ( is_dir( $fonts_dir ) ) {
// Delete fonts directory.
$file_system->rmdir( $fonts_dir, true );
} else {
wp_send_json_error( 'No local fonts found.', 'kirki' );
}
wp_send_json_success( 'Font cache cleared.', 'kirki' );
}
}