balmet.com

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

modules-manager.php (2690B)


      1 <?php
      2 namespace Elementor\Core;
      3 
      4 use Elementor\Core\Base\Module;
      5 use Elementor\Plugin;
      6 
      7 if ( ! defined( 'ABSPATH' ) ) {
      8 	exit; // Exit if accessed directly.
      9 }
     10 
     11 /**
     12  * Elementor modules manager.
     13  *
     14  * Elementor modules manager handler class is responsible for registering and
     15  * managing Elementor modules.
     16  *
     17  * @since 1.6.0
     18  */
     19 class Modules_Manager {
     20 
     21 	/**
     22 	 * Registered modules.
     23 	 *
     24 	 * Holds the list of all the registered modules.
     25 	 *
     26 	 * @since 1.6.0
     27 	 * @access public
     28 	 *
     29 	 * @var array
     30 	 */
     31 	private $modules = [];
     32 
     33 	/**
     34 	 * Modules manager constructor.
     35 	 *
     36 	 * Initializing the Elementor modules manager.
     37 	 *
     38 	 * @since 1.6.0
     39 	 * @access public
     40 	 */
     41 	public function __construct() {
     42 		$modules_namespace_prefix = $this->get_modules_namespace_prefix();
     43 
     44 		foreach ( $this->get_modules_names() as $module_name ) {
     45 			$class_name = str_replace( '-', ' ', $module_name );
     46 
     47 			$class_name = str_replace( ' ', '', ucwords( $class_name ) );
     48 
     49 			$class_name = $modules_namespace_prefix . '\\Modules\\' . $class_name . '\Module';
     50 
     51 			/** @var Module $class_name */
     52 
     53 			$experimental_data = $class_name::get_experimental_data();
     54 
     55 			if ( $experimental_data ) {
     56 				Plugin::$instance->experiments->add_feature( $experimental_data );
     57 
     58 				if ( ! Plugin::$instance->experiments->is_feature_active( $experimental_data['name'] ) ) {
     59 					continue;
     60 				}
     61 			}
     62 
     63 			if ( $class_name::is_active() ) {
     64 				$this->modules[ $module_name ] = $class_name::instance();
     65 			}
     66 		}
     67 	}
     68 
     69 	/**
     70 	 * Get modules names.
     71 	 *
     72 	 * Retrieve the modules names.
     73 	 *
     74 	 * @since 2.0.0
     75 	 * @access public
     76 	 *
     77 	 * @return string[] Modules names.
     78 	 */
     79 	public function get_modules_names() {
     80 		return [
     81 			'admin-bar',
     82 			'history',
     83 			'library',
     84 			'dynamic-tags',
     85 			'page-templates',
     86 			'gutenberg',
     87 			'wp-cli',
     88 			'safe-mode',
     89 			'usage',
     90 			'dev-tools',
     91 			'landing-pages',
     92 			'compatibility-tag',
     93 			'elements-color-picker',
     94 			'shapes',
     95 			'admin-top-bar',
     96 		];
     97 	}
     98 
     99 	/**
    100 	 * Get modules.
    101 	 *
    102 	 * Retrieve all the registered modules or a specific module.
    103 	 *
    104 	 * @since 2.0.0
    105 	 * @access public
    106 	 *
    107 	 * @param string $module_name Module name.
    108 	 *
    109 	 * @return null|Module|Module[] All the registered modules or a specific module.
    110 	 */
    111 	public function get_modules( $module_name ) {
    112 		if ( $module_name ) {
    113 			if ( isset( $this->modules[ $module_name ] ) ) {
    114 				return $this->modules[ $module_name ];
    115 			}
    116 
    117 			return null;
    118 		}
    119 
    120 		return $this->modules;
    121 	}
    122 
    123 	/**
    124 	 * Get modules namespace prefix.
    125 	 *
    126 	 * Retrieve the modules namespace prefix.
    127 	 *
    128 	 * @since 2.0.0
    129 	 * @access protected
    130 	 *
    131 	 * @return string Modules namespace prefix.
    132 	 */
    133 	protected function get_modules_namespace_prefix() {
    134 		return 'Elementor';
    135 	}
    136 }