quadmenu/lib/class-redux.php
2025-01-20 16:38:41 +05:30

230 lines
6.4 KiB
PHP

<?php
namespace QuadLayers\QuadMenu;
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
/**
* Redux Class ex QuadMenu_Redux
*/
class Redux {
public $theme;
private static $instance;
public function __construct() {
if ( ! class_exists( 'Redux' ) ) {
require_once QUADMENU_PLUGIN_DIR . 'redux/ReduxCore/framework.php';
}
add_action( 'admin_menu', array( $this, 'remove_redux_menu' ), 12 );
add_action( 'redux/options/' . QUADMENU_DB_OPTIONS . '/settings/change', array( $this, 'notification_bar' ), 30, 2 );
add_filter( 'redux/options/' . QUADMENU_DB_OPTIONS . '/ajax_save/response', array( $this, 'reload' ) );
add_action( 'redux/extensions/' . QUADMENU_DB_OPTIONS . '/before', array( $this, 'ad_remove' ), 0 );
add_filter( 'redux/extension/' . QUADMENU_DB_OPTIONS . '/customizer', '__return_null' );
add_filter( 'redux/' . QUADMENU_DB_OPTIONS . '/field/class/icons', array( $this, 'field_icons' ) );
add_filter( 'redux/' . QUADMENU_DB_OPTIONS . '/field/class/rgba', array( $this, 'field_rgba' ) );
add_filter( 'redux/' . QUADMENU_DB_OPTIONS . '/field/class/animation', array( $this, 'field_animation' ) );
add_filter( 'redux/' . QUADMENU_DB_OPTIONS . '/panel/template/header.tpl.php', array( $this, 'header' ) );
add_filter( 'redux/' . QUADMENU_DB_OPTIONS . '/panel/template/header_stickybar.tpl.php', array( $this, 'header_stickybar' ) );
add_filter( 'redux/' . QUADMENU_DB_OPTIONS . '/panel/template/footer.tpl.php', array( $this, 'footer' ) );
add_filter( 'ReduxFramework_icons_classes', array( $this, 'selected_icons_iconmap' ) );
$this->redux();
}
function selected_icons_iconmap() {
return _QuadMenu()->selected_icons()->iconmap;
}
function header( $path = false ) {
return QUADMENU_PLUGIN_DIR . 'redux/redux/template/header.tpl.php';
}
function header_stickybar( $path = false ) {
return QUADMENU_PLUGIN_DIR . 'redux/redux/template/header_stickybar.tpl.php';
}
function footer( $path = false ) {
return QUADMENU_PLUGIN_DIR . 'redux/redux/template/footer.tpl.php';
}
function remove_redux_menu() {
remove_submenu_page( 'tools.php', 'redux-about' );
}
static function notification_bar() {
if ( $notices = get_option( 'quadmenu_redux_notices', false ) ) {
foreach ( $notices as $notice ) {
if ( empty( $notice['class'] ) || empty( $notice['notice'] ) ) {
continue;
}
echo '<div class="saved_notice admin-notice notice-' . $notice['class'] . '">' . $notice['notice'] . '</div>';
}
delete_option( 'quadmenu_redux_notices' );
}
}
static function add_notification( $class = 'updated', $notice = false ) {
if ( ! $notice ) {
return;
}
$notices = get_option( 'quadmenu_redux_notices', array() );
$notices[] = array(
'class' => $class,
'notice' => $notice,
);
update_option( 'quadmenu_redux_notices', $notices );
}
function ad_remove( $ReduxFramework ) {
if ( ! class_exists( 'ReduxFramework_extension_ad_remove' ) ) {
require_once QUADMENU_PLUGIN_DIR . 'redux/redux/ad_remove/extension_ad_remove.php';
new \ReduxFramework_extension_ad_remove( $ReduxFramework );
}
}
function field_rgba( $field ) {
return QUADMENU_PLUGIN_DIR . 'redux/redux/rgba/field_rgba.php';
}
function field_icons( $field ) {
return QUADMENU_PLUGIN_DIR . 'redux/redux/icons/field_icons.php';
}
function field_animation( $field ) {
return QUADMENU_PLUGIN_DIR . 'redux/redux/animation/field_animation.php';
}
function reload( $return_array ) {
if ( get_transient( '_quadmenu_saved_reload' ) ) {
$return_array['action'] = 'reload';
}
return $return_array;
}
static function do_reload( $run = true ) {
if ( $run ) {
set_transient( '_quadmenu_saved_reload', true, 30 );
} else {
delete_transient( '_quadmenu_saved_reload' );
}
}
public function redux() {
$args = array(
'class' => 'quadmenu-admin-wrap',
'opt_name' => QUADMENU_DB_OPTIONS,
'disable_tracking' => true,
'display_name' => QUADMENU_PLUGIN_NAME,
'display_version' => QUADMENU_PLUGIN_VERSION,
'menu_type' => 'submenu',
'allow_sub_menu' => true,
'menu_title' => QUADMENU_PLUGIN_NAME,
'page' => QUADMENU_PLUGIN_NAME,
'google_api_key' => 'AIzaSyBNsacnx37lZpIIyDyNAjGC1qdE7Z0CrEQ',
'async_typography' => false,
'show_options_object' => false,
'global_variable' => 'quadmenu',
'customizer' => true,
'page_priority' => null,
'page_parent' => 'themes.php',
'page_permissions' => 'edit_theme_options',
'page_slug' => QUADMENU_PANEL,
'save_defaults' => true,
'default_show' => false,
'default_mark' => '',
'transient_time' => 60 * MINUTE_IN_SECONDS,
'output' => true,
'output_tag' => false,
'database' => '',
'use_cdn' => true,
'hints' => array(
'icon' => 'el el-question-sign',
'icon_position' => 'right',
'icon_color' => 'lightgray',
'icon_size' => 'normal',
'tip_style' => array(
'color' => 'dark',
'shadow' => true,
'rounded' => false,
'style' => '', // youtube',
),
'tip_position' => array(
'my' => 'top left',
'at' => 'bottom right',
),
'tip_effect' => array(
'show' => array(
'effect' => 'slide',
'duration' => '500',
'event' => 'click',
),
'hide' => array(
'effect' => 'slide',
'duration' => '500',
'event' => 'click mouseleave',
),
),
),
'show_import_export' => true, // REMOVE
'dev_mode' => QUADMENU_DEV, // Show the time the page took to load, etc
'dev_mode_icon' => 'quadmenu-database',
'dev_mode_icon_class' => 'quadmenu-database',
'system_info' => QUADMENU_DEV, // REMOVE
'ajax_save' => true,
'footer_credit' => ' ',
);
// Panel Intro text -> before the form
if ( ! isset( $args['global_variable'] ) || $args['global_variable'] !== false ) {
if ( ! empty( $args['global_variable'] ) ) {
$v = $args['global_variable'];
} else {
$v = str_replace( '-', '_', $args['opt_name'] );
}
}
if ( class_exists( 'ReduxFramework' ) ) {
new \ReduxFramework( array(), apply_filters( 'quadmenu_redux_args', $args ) );
}
}
public static function instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
}