balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

manager.php (5098B)


      1 <?php
      2 namespace Elementor\Core\Settings;
      3 
      4 use Elementor\Core\Settings\Base\CSS_Model;
      5 use Elementor\Plugin;
      6 
      7 if ( ! defined( 'ABSPATH' ) ) {
      8 	exit; // Exit if accessed directly.
      9 }
     10 
     11 /**
     12  * Elementor settings manager.
     13  *
     14  * Elementor settings manager handler class is responsible for registering and
     15  * managing Elementor settings managers.
     16  *
     17  * @since 1.6.0
     18  */
     19 class Manager {
     20 
     21 	/**
     22 	 * Settings managers.
     23 	 *
     24 	 * Holds all the registered settings managers.
     25 	 *
     26 	 * @since 1.6.0
     27 	 * @access private
     28 	 *
     29 	 * @var Base\Manager[]
     30 	 */
     31 	private static $settings_managers = [];
     32 
     33 	/**
     34 	 * Builtin settings managers names.
     35 	 *
     36 	 * Holds the names for builtin Elementor settings managers.
     37 	 *
     38 	 * @since 1.6.0
     39 	 * @access private
     40 	 *
     41 	 * @var array
     42 	 */
     43 	private static $builtin_settings_managers_names = [ 'page', 'editorPreferences' ];
     44 
     45 	/**
     46 	 * Add settings manager.
     47 	 *
     48 	 * Register a single settings manager to the registered settings managers.
     49 	 *
     50 	 * @since 1.6.0
     51 	 * @access public
     52 	 * @static
     53 	 *
     54 	 * @param Base\Manager $manager Settings manager.
     55 	 */
     56 	public static function add_settings_manager( Base\Manager $manager ) {
     57 		self::$settings_managers[ $manager->get_name() ] = $manager;
     58 	}
     59 
     60 	/**
     61 	 * Get settings managers.
     62 	 *
     63 	 * Retrieve registered settings manager(s).
     64 	 *
     65 	 * If no parameter passed, it will retrieve all the settings managers. For
     66 	 * any given parameter it will retrieve a single settings manager if one
     67 	 * exist, or `null` otherwise.
     68 	 *
     69 	 * @since 1.6.0
     70 	 * @access public
     71 	 * @static
     72 	 *
     73 	 * @param string $manager_name Optional. Settings manager name. Default is
     74 	 *                             null.
     75 	 *
     76 	 * @return Base\Manager|Base\Manager[] Single settings manager, if it exists,
     77 	 *                                     null if it doesn't exists, or the all
     78 	 *                                     the settings managers if no parameter
     79 	 *                                     defined.
     80 	 */
     81 	public static function get_settings_managers( $manager_name = null ) {
     82 		if ( $manager_name ) {
     83 			// Backwards compatibility for `general` manager, since 3.0.0.
     84 			// Register the class only if needed.
     85 			if ( 'general' === $manager_name ) {
     86 				// TODO: _deprecated_argument( $manager_name, '3.0.0', 'Plugin::$instance->kits_manager->get_active_kit_for_frontend();' );
     87 				$manager_class = self::get_manager_class( $manager_name );
     88 
     89 				self::add_settings_manager( new $manager_class() );
     90 			}
     91 
     92 			if ( isset( self::$settings_managers[ $manager_name ] ) ) {
     93 				return self::$settings_managers[ $manager_name ];
     94 			}
     95 
     96 			return null;
     97 		}
     98 
     99 		return self::$settings_managers;
    100 	}
    101 
    102 	/**
    103 	 * Register default settings managers.
    104 	 *
    105 	 * Register builtin Elementor settings managers.
    106 	 *
    107 	 * @since 1.6.0
    108 	 * @access private
    109 	 * @static
    110 	 */
    111 	private static function register_default_settings_managers() {
    112 		foreach ( self::$builtin_settings_managers_names as $manager_name ) {
    113 			$manager_class = self::get_manager_class( $manager_name );
    114 
    115 			self::add_settings_manager( new $manager_class() );
    116 		}
    117 	}
    118 
    119 	/**
    120 	 * Get class path for default settings managers.
    121 	 *
    122 	 * @param $manager_name
    123 	 *
    124 	 * @return string
    125 	 * @since  3.0.0
    126 	 * @access private
    127 	 * @static
    128 	 */
    129 
    130 	private static function get_manager_class( $manager_name ) {
    131 		return __NAMESPACE__ . '\\' . ucfirst( $manager_name ) . '\Manager';
    132 	}
    133 
    134 	/**
    135 	 * Get settings managers config.
    136 	 *
    137 	 * Retrieve the settings managers configuration.
    138 	 *
    139 	 * @since 1.6.0
    140 	 * @access public
    141 	 * @static
    142 	 *
    143 	 * @return array The settings managers configuration.
    144 	 */
    145 	public static function get_settings_managers_config() {
    146 		$config = [];
    147 
    148 		$user_can = Plugin::instance()->role_manager->user_can( 'design' );
    149 
    150 		foreach ( self::$settings_managers as $name => $manager ) {
    151 			$settings_model = $manager->get_model_for_config();
    152 			$tabs = $settings_model->get_tabs_controls();
    153 
    154 			if ( ! $user_can ) {
    155 				unset( $tabs['style'] );
    156 			}
    157 
    158 			$config[ $name ] = [
    159 				'name' => $manager->get_name(),
    160 				'panelPage' => $settings_model->get_panel_page_settings(),
    161 				'controls' => $settings_model->get_controls(),
    162 				'tabs' => $tabs,
    163 				'settings' => $settings_model->get_settings(),
    164 			];
    165 
    166 			if ( $settings_model instanceof CSS_Model ) {
    167 				$config[ $name ]['cssWrapperSelector'] = $settings_model->get_css_wrapper_selector();
    168 			}
    169 		}
    170 
    171 		return $config;
    172 	}
    173 
    174 	/**
    175 	 * Get settings frontend config.
    176 	 *
    177 	 * Retrieve the settings managers frontend configuration.
    178 	 *
    179 	 * @since 1.6.0
    180 	 * @access public
    181 	 * @static
    182 	 *
    183 	 * @return array The settings managers frontend configuration.
    184 	 */
    185 	public static function get_settings_frontend_config() {
    186 		$config = [];
    187 
    188 		foreach ( self::$settings_managers as $name => $manager ) {
    189 			$settings_model = $manager->get_model_for_config();
    190 
    191 			if ( $settings_model ) {
    192 				$config[ $name ] = $settings_model->get_frontend_settings();
    193 			}
    194 		}
    195 
    196 		return $config;
    197 	}
    198 
    199 	/**
    200 	 * Run settings managers.
    201 	 *
    202 	 * Register builtin Elementor settings managers.
    203 	 *
    204 	 * @since 1.6.0
    205 	 * @access public
    206 	 * @static
    207 	 */
    208 	public static function run() {
    209 		self::register_default_settings_managers();
    210 	}
    211 }