*/
namespace ThemeAtelier\Darkify\Admin;
use ThemeAtelier\Darkify\Admin\TADiscountPage\TADiscountPage;
use ThemeAtelier\Darkify\Admin\ReviewNotice\ReviewNotice;
use ThemeAtelier\Darkify\Admin\Views\DarkifyOptions;
use ThemeAtelier\Darkify\Includes\DarkifyExternalSupport;
use ThemeAtelier\Darkify\Includes\DarkifyUtils;
use ThemeAtelier\Darkify\Admin\DBUpdates;
use ThemeAtelier\Darkify\Admin\ReviewNotice\ThemeAtelier_Offer_Banner;
/**
* The admin class
*/
class Admin
{
/**
* The slug of this plugin.
*
* @since 1.0.0
* @access private
* @var string $plugin_slug The slug of this plugin.
*/
private $plugin_slug;
/**
* The min of this plugin.
*
* @since 1.0.0
* @access private
* @var string $min The slug of this plugin.
*/
private $min;
/**
* The version of this plugin.
*
* @since 1.0.0
* @access private
* @var string $version The current version of this plugin.
*/
private $version;
public $utils;
public $settings;
public $external_support;
public $unique_id;
private $plugin_name;
/**
* The class constructor.
*
* @param string $plugin_slug The slug of the plugin.
* @param string $version Current version of the plugin.
*/
function __construct($plugin_slug, $version)
{
$this->utils = new DarkifyUtils($this);
$this->external_support = new DarkifyExternalSupport($this);
if (function_exists('wp_rand')) {
$this->unique_id = wp_rand();
}
$options = get_option('darkify');
$enable_admin_panel_dark_mode = isset($options['enable_admin_panel_dark_mode']) ? $options['enable_admin_panel_dark_mode'] : false;
$this->plugin_name = $plugin_slug;
$this->min = (apply_filters('darkify_dev_mode', false) || WP_DEBUG) ? '' : '.min';
if ($enable_admin_panel_dark_mode) {
add_action('admin_bar_menu', array($this, 'darkify_admin_bar_switch'), 9999);
add_action('admin_print_scripts', array($this, 'darkify_admin_header_script'), 1);
add_action('admin_footer', array($this, 'darkify_admin_footer_script'));
}
add_action( 'admin_menu', array( $this, 'admin_menu' ), 10 );
add_action('after_setup_theme', array($this, 'init_components'));
add_filter('autoptimize_filter_js_exclude', array($this, 'darkify_exclude_js_from_cache_plugins'));
add_action('admin_init', [$this, 'load_classic_editor_scripts']);
new ReviewNotice();
new DBUpdates();
if ( ! defined( 'THEMEATELIER_OFFER_BANNER_LOADED' ) ) {
define( 'THEMEATELIER_OFFER_BANNER_LOADED', true );
ThemeAtelier_Offer_Banner::instance();
}
$active_plugins = get_option('active_plugins');
foreach ($active_plugins as $active_plugin) {
$_temp = strpos($active_plugin, 'darkify.php');
if (false != $_temp) {
add_filter('plugin_action_links_' . DARKIFY_BASENAME, array($this, 'add_plugin_action_links'), 10, 2);
add_filter( 'plugin_row_meta', array( $this, 'after_darkify_row_meta' ), 10, 4 );
}
}
add_filter( 'admin_footer_text', array( $this, 'darkify_admin_footer' ), 1, 2 );
}
public function init_components() {
DarkifyOptions::options('darkify');
}
public function darkify_exclude_js_from_cache_plugins($excludes)
{
$excludes .= ',client_main.js,client_main.min.js';
return $excludes;
}
public function enqueue_styles($hook)
{
if($hook === 'toplevel_page_darkify') {
wp_enqueue_style('darkify-help-page', DARKIFY_DIR_URL . 'src/Admin/HelpPage/assets/css/help-page' . $this->min . '.css', array(), DARKIFY_VERSION, 'all');
}
$options = get_option('darkify');
$enable_admin_panel_dark_mode = isset($options["enable_admin_panel_dark_mode"]) ? $options["enable_admin_panel_dark_mode"] : false;
if ($enable_admin_panel_dark_mode) {
if (!wp_style_is('darkify-admin-switch', 'enqueued')) {
wp_enqueue_style('darkify-admin-switch', DARKIFY_DIR_URL . 'src/assets/css/client_main' . $this->min . '.css', array(), DARKIFY_VERSION, 'all');
}
}
// Review notice CSS
wp_enqueue_style('darkify-review-notice', DARKIFY_DIR_URL . 'src/Admin/ReviewNotice/assets/css/review-notice' . $this->min . '.css', array(), DARKIFY_VERSION, 'all');
}
public function enqueue_scripts($hook)
{
$options = get_option('darkify');
$enable_admin_panel_dark_mode = isset($options["enable_admin_panel_dark_mode"]) ? $options["enable_admin_panel_dark_mode"] : false;
if ($enable_admin_panel_dark_mode) {
wp_enqueue_script('darkify-admin-client-main', DARKIFY_DIR_URL . 'src/assets/js/client_main' . $this->min . '.js', array(), DARKIFY_VERSION);
}
if($hook === 'toplevel_page_darkify') {
wp_enqueue_script('darkify-help-page', DARKIFY_DIR_URL . 'src/Admin/HelpPage/assets/js/help-page' . $this->min . '.js', array('darkify-plugins'), DARKIFY_VERSION, true);
}
}
/*
Dequeue Darkify scripts and styles on specific admin pages (e.g., MainWP pages)
*/
public function admin_dequeue_for_specefic_pages()
{
$page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
$dequeue_pages = array(
'mainwp_tab',
'managesites',
'ManageClients',
'CostSummary',
'InsightsOverview',
'Extensions',
'RESTAPI',
'mainwp-setup',
'ThemesManage',
'PluginsManage',
'InsightsManage',
'ManageGroups',
'UpdatesManage',
'PluginsInstall',
'PluginsAutoUpdate',
'PluginsIgnore',
'PluginsAbandoned',
'PluginsIgnoredAbandoned',
'ThemesInstall',
'ThemesAutoUpdate',
'ThemesIgnore',
'ThemesAbandoned',
'ThemesIgnoredAbandoned',
'UserBulkManage',
'UserBulkAdd',
'BulkImportUsers',
'UpdateAdminPasswords',
'PostBulkManage',
'Extensions-Mainwp-Backups',
'Extensions-Mainwp-Security',
'Extensions-Mainwp-Analytics',
'Mainwp-Monitoring',
'Extensions-Mainwp-Agency',
'Extensions-Mainwp-Administrative',
'Extensions-Mainwp-Development',
'Extensions-Mainwp-Performance',
'ClientAddNew',
'ClientImport',
'ManageCostTracker',
'CostTrackerAdd',
'AddApiKeys',
);
if ( in_array( $page, $dequeue_pages, true ) ) {
wp_deregister_style( 'darkify-admin-switch' );
wp_dequeue_script( 'darkify-admin-client-main' );
}
}
/**
* Review Text.
*
* @param string $text text.
*
* @return string
*/
public function darkify_admin_footer( $text ) {
$screen = get_current_screen();
if ( 'toplevel_page_darkify' === $screen->id ) {
$text = sprintf(
/* translators: 1: start strong tag, 2: close strong tag. 3: start link 4: close link */
__( 'Enjoying %1$sDarkify?%2$s Please rate us %3$sWordPress.org%4$s. Your positive feedback will help us grow more. Thank you! 😊', 'darkify' ),
'',
'',
' ',
''
);
}
return $text;
}
// Plugin settings in plugin list
public function add_plugin_action_links(array $links)
{
$new_links = array(
sprintf('' . esc_html__('Settings', 'darkify') . ''),
sprintf('' . esc_html__('Support', 'darkify') . ''),
// sprintf('' . esc_html__('Go Pro', 'darkify') . ''),
);
$links[] = sprintf( '%s', esc_html__( 'Go Pro!', 'darkify' ));
return array_merge($new_links, $links);
}
/**
* Add plugin row meta link.
*
* @since 2.0
*
* @param array $plugin_meta .
* @param string $file .
*
* @return array
*/
public function after_darkify_row_meta( $plugin_meta, $file ) {
if ( DARKIFY_BASENAME === $file ) {
$plugin_meta[] = '' . __( 'Live Demo', 'darkify' ) . '';
}
return $plugin_meta;
}
public function darkify_admin_bar_switch($wp_admin_bar)
{
$args = array(
'parent' => 'top-secondary',
'id' => 'darkify_admin_bar_switch_container',
'meta' => array(
'class' => 'darkify_admin_bar_switch_container',
'onclick' => 'darkify_switch_trigger()',
)
);
$wp_admin_bar->add_node($args);
}
public function darkify_admin_header_script()
{
include_once DarkifyUtils::darkify_locate_template('header_script.php');
}
public function darkify_admin_footer_script()
{
include_once DarkifyUtils::darkify_locate_template('footer_script.php');
}
public function admin_menu()
{
// global $menu, $admin_page_hooks;
$capability = apply_filters( 'darkify_ui_permission', 'manage_options' );
$menu_icon = 'data:image/svg+xml;base64,' . base64_encode('');
// This page will be under "Settings"
add_menu_page(
esc_html__('Darkify', 'darkify'),
esc_html__('Darkify', 'darkify'),
$capability,
'darkify',
[$this, 'darkify_settings'],
$menu_icon,
60
);
add_submenu_page(
'darkify',
__(
'Upgrade To Pro! 👑',
'darkify'
),
sprintf('%s', __('Upgrade To Pro! 👑', 'darkify')),
'manage_options',
'https://darkifywp.com/pricing/?utm_source=darkify_plugin&utm_medium=submenu_page&utm_campaign=regular'
);
}
public function darkify_settings() {}
/**
* Load classic editor scripts.
*
* @since 5.0.0
*/
public function load_classic_editor_scripts()
{
$options = get_option('darkify');
$classic_editor_dark_mode = isset($options['classic_editor_dark_mode']) ? $options['classic_editor_dark_mode'] : '';
if (! current_user_can('edit_posts') && ! current_user_can('edit_pages')) {
return;
}
if (get_user_option('rich_editing') !== 'true') {
return;
}
// Bail if admin_classic_editor is not enabled.
if (! wp_validate_boolean($classic_editor_dark_mode)) {
return;
}
add_filter('mce_external_plugins', function ($plugins) {
$plugins['darkify_button'] = plugins_url('src/assets/js/admin-classic-editor.js', DARKIFY_FILE);
return $plugins;
});
add_filter('mce_buttons', function ($buttons) {
$buttons[] = 'darkify_button';
return $buttons;
});
}
}