HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/biblioteka/wp-content/plugins/better-search/includes/admin/class-admin.php
<?php
/**
 * Admin class.
 *
 * @since 3.3.0
 *
 * @package Better_Search
 */

namespace WebberZone\Better_Search\Admin;

use WebberZone\Better_Search\Util\Cache;
use WebberZone\Better_Search\Util\Hook_Registry;

// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
	die;
}

/**
 * Class to register the Better Search Admin Area.
 *
 * @since 3.3.0
 */
class Admin {

	/**
	 * Admin Dashboard.
	 *
	 * @since 3.3.0
	 *
	 * @var object Admin Dashboard.
	 */
	public $admin_dashboard;

	/**
	 * Settings API.
	 *
	 * @since 3.3.0
	 *
	 * @var object Settings API.
	 */
	public $settings;

	/**
	 * Statistics table.
	 *
	 * @since 3.3.0
	 *
	 * @var object Statistics table.
	 */
	public $statistics;

	/**
	 * Activator class.
	 *
	 * @since 3.3.0
	 *
	 * @var object Activator class.
	 */
	public $activator;

	/**
	 * Upgrader class.
	 *
	 * @since 3.3.0
	 *
	 * @var object Upgrader class.
	 */
	public $upgrader;

	/**
	 * Admin Notices.
	 *
	 * @since 3.3.0
	 *
	 * @var object Admin Notices.
	 */
	public $admin_notices;

	/**
	 * Tools page.
	 *
	 * @since 3.3.0
	 *
	 * @var object Tools page.
	 */
	public $tools_page;

	/**
	 * Dashboard widgets.
	 *
	 * @since 3.3.0
	 *
	 * @var object Dashboard widgets.
	 */
	public $dashboard_widgets;

	/**
	 * Cache.
	 *
	 * @since 3.3.0
	 *
	 * @var object Cache.
	 */
	public $cache;

	/**
	 * Settings Wizard.
	 *
	 * @since 4.2.0
	 *
	 * @var object Settings Wizard.
	 */
	public $settings_wizard;

	/**
	 * Settings Page in Admin area.
	 *
	 * @since 3.3.0
	 *
	 * @var string Settings Page.
	 */
	public $settings_page;

	/**
	 * Prefix which is used for creating the unique filters and actions.
	 *
	 * @since 3.3.0
	 *
	 * @var string Prefix.
	 */
	public static $prefix;

	/**
	 * Settings Key.
	 *
	 * @since 3.3.0
	 *
	 * @var string Settings Key.
	 */
	public $settings_key;

	/**
	 * The slug name to refer to this menu by (should be unique for this menu).
	 *
	 * @since 3.3.0
	 *
	 * @var string Menu slug.
	 */
	public $menu_slug;

	/**
	 * Admin Notices API.
	 *
	 * @since 4.2.0
	 *
	 * @var object Admin Notices API.
	 */
	public $admin_notices_api;

	/**
	 * Main constructor class.
	 *
	 * @since 3.3.0
	 */
	public function __construct() {
		$this->hooks();

		// Initialise admin classes.
		$this->admin_dashboard   = new Dashboard();
		$this->statistics        = new Statistics();
		$this->settings          = new Settings();
		$this->activator         = new Activator();
		$this->upgrader          = new Upgrader();
		$this->admin_notices_api = new Admin_Notices_API();
		$this->admin_notices     = new Admin_Notices();
		$this->tools_page        = new Tools_Page();
		$this->dashboard_widgets = new Dashboard_Widgets();
		$this->cache             = new Cache();
		$this->settings_wizard   = new Settings_Wizard();
	}

	/**
	 * Run the hooks.
	 *
	 * @since 3.3.0
	 */
	public function hooks() {
		Hook_Registry::add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
	}

	/**
	 * Enqueue scripts in admin area.
	 *
	 * @since 3.0.0
	 */
	public function admin_enqueue_scripts() {

		// Register charj.js, luxon and chartjs-adapter-luxon.
		wp_register_script(
			'better-search-chartjs',
			BETTER_SEARCH_PLUGIN_URL . 'includes/admin/js/chart.min.js',
			array(),
			BETTER_SEARCH_VERSION,
			true
		);
		wp_register_script(
			'better-search-luxon',
			BETTER_SEARCH_PLUGIN_URL . 'includes/admin/js/luxon.min.js',
			array(),
			BETTER_SEARCH_VERSION,
			true
		);
		wp_register_script(
			'better-search-chartjs-adapter-luxon',
			BETTER_SEARCH_PLUGIN_URL . 'includes/admin/js/chartjs-adapter-luxon.min.js',
			array( 'better-search-chartjs', 'better-search-luxon' ),
			BETTER_SEARCH_VERSION,
			true
		);
		wp_register_script(
			'better-search-chartjs-plugin-datalabels',
			BETTER_SEARCH_PLUGIN_URL . 'includes/admin/js/chartjs-plugin-datalabels.min.js',
			array( 'better-search-chartjs' ),
			BETTER_SEARCH_VERSION,
			true
		);
		wp_register_script(
			'better-search-chart-data-js',
			BETTER_SEARCH_PLUGIN_URL . 'includes/admin/js/chart-data.min.js',
			array( 'jquery', 'better-search-chartjs', 'better-search-chartjs-adapter-luxon', 'better-search-luxon', 'better-search-chartjs-plugin-datalabels' ),
			BETTER_SEARCH_VERSION,
			true
		);

		wp_register_script(
			'better-search-admin-js',
			BETTER_SEARCH_PLUGIN_URL . 'includes/admin/js/admin-scripts.min.js',
			array( 'jquery', 'jquery-ui-tabs', 'jquery-ui-datepicker' ),
			BETTER_SEARCH_VERSION,
			true
		);
		wp_localize_script(
			'better-search-admin-js',
			'better_search_admin',
			array(
				'ajaxurl'         => admin_url( 'admin-ajax.php' ),
				'nonce'           => wp_create_nonce( 'better_search_admin_nonce' ),
				'copied'          => __( 'Copied!', 'better-search' ),
				'copyToClipboard' => __( 'Copy to clipboard', 'better-search' ),
				'copyError'       => __( 'Error copying to clipboard', 'better-search' ),
			)
		);
		wp_register_style(
			'better-search-admin-ui-css',
			BETTER_SEARCH_PLUGIN_URL . 'includes/admin/css/better-search-admin.min.css',
			array(),
			BETTER_SEARCH_VERSION
		);
	}

	/**
	 * Display admin sidebar.
	 *
	 * @since 3.3.0
	 */
	public static function display_admin_sidebar() {
		require_once BETTER_SEARCH_PLUGIN_DIR . 'includes/admin/settings/sidebar.php';
	}

	/**
	 * Display the pro upgrade banner.
	 *
	 * @since 4.2.0
	 *
	 * @param bool   $donate        Whether to show the donate banner.
	 * @param string $custom_text   Custom text to show in the banner.
	 */
	public static function pro_upgrade_banner( $donate = true, $custom_text = '' ) {
		if ( function_exists( '\WebberZone\Better_Search\bsearch_freemius' ) && ! \WebberZone\Better_Search\bsearch_freemius()->is_paying() ) {
			?>
				<div id="pro-upgrade-banner">
					<div class="inside">
						<?php if ( ! empty( $custom_text ) ) : ?>
							<p><?php echo wp_kses_post( $custom_text ); ?></p>
						<?php endif; ?>

						<p><a href="https://webberzone.com/plugins/better-search/pro/" target="_blank"><img src="<?php echo esc_url( BETTER_SEARCH_PLUGIN_URL . 'includes/admin/images/better-search-pro-banner.png' ); ?>" alt="<?php esc_html_e( 'Better Search Pro - Buy now!', 'better-search' ); ?>" width="300" height="300" style="max-width: 100%;" /></a></p>

						<?php if ( $donate ) : ?>							
							<p style="text-align:center;"><?php esc_html_e( 'OR', 'better-search' ); ?></p>
							<p><a href="https://wzn.io/donate-bsearch" target="_blank"><img src="<?php echo esc_url( BETTER_SEARCH_PLUGIN_URL . 'includes/admin/images/support.webp' ); ?>" alt="<?php esc_html_e( 'Support the development - Send us a donation today.', 'better-search' ); ?>" width="300" height="169" style="max-width: 100%;" /></a></p>
						<?php endif; ?>
					</div>
				</div>
			<?php
		}
	}
}