<?php
/**
 * Admin Themes Compatibility.
 *
 * @package WP_Ultimo
 * @subpackage Admin_Themes_Compatibility
 * @since 2.0.0
 */

namespace WP_Ultimo;

// Exit if accessed directly
defined('ABSPATH') || exit;

/**
 * Adds a Admin Themes Compatibility for WP Multisite WaaS.
 *
 * @since 1.9.14
 */
class Admin_Themes_Compatibility {

	use \WP_Ultimo\Traits\Singleton;

	/**
	 * Sets up the listeners.
	 *
	 * @since 2.0.0
	 */
	public function __construct() {

		add_filter('admin_body_class', array($this, 'add_body_classes'));

	} // end __construct;

	/**
	 * Body tag classes. Fired by `body_class` filter.
	 *
	 * @since 2.0.0
	 *
	 * @param array $classes Body Classes.
	 * @return array
	 */
	public function add_body_classes($classes) {

		$prefix = 'wu-compat-admin-theme-';

		foreach (self::get_admin_themes() as $key => $value) {

			if ($value['activated']) {

				$classes .= ' ' . $prefix . $key . ' ';

			} // end if;

		} // end foreach;

		return $classes;

	} // end add_body_classes;

	/**
	 * Get list of Admin Themes
	 *
	 * @since 2.0.0
	 * @return array
	 */
	public static function get_admin_themes() {

		return apply_filters('wu_admin_themes_compatibility', array(
			'material-wp' => array(
				'activated' => class_exists('MaterialWP'),
			),
			'pro-theme'   => array(
				'activated' => class_exists('PROTheme'),
			),
			'admin-2020'  => array(
				'activated' => function_exists('run_admin_2020'),
			),
			'clientside'  => array(
				'activated' => class_exists('Clientside'),
			),
			'wphave'      => array(
				'activated' => class_exists('wphave_admin'),
			),
			'waaspro'     => array(
				'activated' => class_exists('AdminUIPRO') || class_exists('AdminUIPROflat'),
			),
		));

	} // end get_admin_themes;

} // end class Admin_Themes_Compatibility;