HEX
Server: Apache
System: Linux sxb1plmcpnl510113.prod.sxb1.secureserver.net 4.18.0-553.58.1.lve.el8.x86_64 #1 SMP Fri Jul 4 12:07:06 UTC 2025 x86_64
User: acnbijigo78q (10488831)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: /home/acnbijigo78q/public_html/wp-content/plugins/ultimate-cursor/classes/class-admin.php
<?php

/**
 * Plugin admin functions.
 *
 * @package ultimate-cursor
 */

if (! defined('ABSPATH')) {
	exit;
}

/**
 * Ultimate Cursor Admin class.
 */
class Ultimate_Cursor_Admin {
	/**
	 * Ultimate_Cursor_Admin constructor.
	 */
	public function __construct() {
		add_action('admin_init', [$this, 'redirect_to_welcome_screen']);
		add_action('admin_menu', [$this, 'register_admin_menu'], 20);
		add_action('in_admin_header', [$this, 'disable_admin_notices'], PHP_INT_MAX);

		add_filter('admin_body_class', [$this, 'admin_body_class']);
		// Enqueue media uploader
		add_action('admin_enqueue_scripts', [$this, 'enqueue_media_uploader']);

		add_filter('plugin_action_links_ultimate-cursor/ultimate-cursor.php', [$this, 'ultimate_cursor_settings_link']);
	}


	public function disable_admin_notices() {
		// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Simple page check, not processing form data
		if (isset($_GET['page']) && sanitize_text_field(wp_unslash($_GET['page'])) === 'ultimate-cursor') {
			remove_all_actions('admin_notices');
			remove_all_actions('all_admin_notices');
			remove_all_actions('network_admin_notices');
		}
	}
	public function ultimate_cursor_settings_link($links) {
		$settings_link = '<a href="' . admin_url('admin.php?page=ultimate-cursor&sub_page=settings') . '">Settings</a>';
		array_unshift($links, $settings_link);
		return $links;
	}

	public function enqueue_media_uploader() {
		wp_enqueue_media();
	}

	/**
	 * Redirect to Welcome page after activation.
	 */
	public function redirect_to_welcome_screen() {
		// Bail if no activation redirect.
		if (! get_transient('_ultimate_cursor_welcome_screen_activation_redirect')) {
			return;
		}

		// Delete the redirect transient.
		delete_transient('_ultimate_cursor_welcome_screen_activation_redirect');

		// Bail if activating from network, or bulk.
		// phpcs:ignore WordPress.Security.NonceVerification.Recommended
		if (is_network_admin() || isset($_GET['activate-multi'])) {
			return;
		}

		// Redirect to welcome page.
		wp_safe_redirect(admin_url('admin.php?page=ultimate-cursor&sub_page=settings'));
	}

	/**
	 * Register admin menu.
	 *
	 * Add new Ultimate Cursor Settings admin menu.
	 */
	public function register_admin_menu() {
		if (! current_user_can('manage_options')) {
			return;
		}

		add_menu_page(
			esc_html__('Ultimate Cursor', 'ultimate-cursor'),
			esc_html__('Ultimate Cursor', 'ultimate-cursor'),
			'manage_options',
			'ultimate-cursor',
			[$this, 'print_admin_page'],
			// phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode, WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
			'data:image/svg+xml;base64,' . base64_encode(file_get_contents(ultimate_cursor()->plugin_path . 'assets/images/admin-icon.svg')),
			'58.7'
		);

		add_submenu_page(
			'ultimate-cursor',
			'',
			esc_html__('Welcome', 'ultimate-cursor'),
			'manage_options',
			'ultimate-cursor'
		);
		add_submenu_page(
			'ultimate-cursor',
			'',
			esc_html__('Settings', 'ultimate-cursor'),
			'manage_options',
			'admin.php?page=ultimate-cursor&sub_page=settings'
		);
		add_submenu_page(
			'ultimate-cursor',
			'',
			esc_html__('Multiple Cursors', 'ultimate-cursor'),
			'manage_options',
			'admin.php?page=ultimate-cursor&sub_page=settings&tab=multiple'
		);
		add_submenu_page(
			'ultimate-cursor',
			'',
			esc_html__('Discussions', 'ultimate-cursor'),
			'manage_options',
			'https://wordpress.org/support/plugin/ultimate-cursor/'
		);
	}

	/**
	 * Print admin page.
	 */
	public function print_admin_page() {
?>
		<div class="ultimate-cursor-admin-root"></div>
<?php
	}

	/**
	 * Add page class to body.
	 *
	 * @param string $classes - body classes.
	 */
	public function admin_body_class($classes) {
		$screen = get_current_screen();

		if ('toplevel_page_ultimate-cursor' !== $screen->id) {
			return $classes;
		}

		$classes .= ' ultimate-cursor-admin-page';

		// Sub page.
		$page_name = 'welcome';

		// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Simple page check, not processing form data
		if (isset($_GET['sub_page']) && sanitize_text_field(wp_unslash($_GET['sub_page']))) {
			// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Simple page check, not processing form data
			$page_name = esc_attr(sanitize_text_field(wp_unslash($_GET['sub_page'])));
		}

		$classes .= ' ultimate-cursor-admin-page-' . $page_name;

		// Is first loading after plugin activation redirect.
		// phpcs:ignore WordPress.Security.NonceVerification
		if (isset($_GET['is_first_loading'])) {
			$classes .= ' ultimate-cursor-admin-first-loading';
		}

		return $classes;
	}
}


new Ultimate_Cursor_Admin();