Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/elemento.../includes
File: plugin.php
[500] Fix | Delete
/**
[501] Fix | Delete
* Experiments manager.
[502] Fix | Delete
*
[503] Fix | Delete
* Holds the plugin experiments manager.
[504] Fix | Delete
*
[505] Fix | Delete
* @since 3.1.0
[506] Fix | Delete
* @access public
[507] Fix | Delete
*
[508] Fix | Delete
* @var Experiments_Manager
[509] Fix | Delete
*/
[510] Fix | Delete
public $experiments;
[511] Fix | Delete
[512] Fix | Delete
/**
[513] Fix | Delete
* Uploads manager.
[514] Fix | Delete
*
[515] Fix | Delete
* Holds the plugin uploads manager responsible for handling file uploads
[516] Fix | Delete
* that are not done with WordPress Media.
[517] Fix | Delete
*
[518] Fix | Delete
* @since 3.3.0
[519] Fix | Delete
* @access public
[520] Fix | Delete
*
[521] Fix | Delete
* @var Uploads_Manager
[522] Fix | Delete
*/
[523] Fix | Delete
public $uploads_manager;
[524] Fix | Delete
[525] Fix | Delete
/**
[526] Fix | Delete
* Breakpoints manager.
[527] Fix | Delete
*
[528] Fix | Delete
* Holds the plugin breakpoints manager.
[529] Fix | Delete
*
[530] Fix | Delete
* @since 3.2.0
[531] Fix | Delete
* @access public
[532] Fix | Delete
*
[533] Fix | Delete
* @var Breakpoints_Manager
[534] Fix | Delete
*/
[535] Fix | Delete
public $breakpoints;
[536] Fix | Delete
[537] Fix | Delete
/**
[538] Fix | Delete
* Assets loader.
[539] Fix | Delete
*
[540] Fix | Delete
* Holds the plugin assets loader responsible for conditionally enqueuing
[541] Fix | Delete
* styles and script assets that were pre-enabled.
[542] Fix | Delete
*
[543] Fix | Delete
* @since 3.3.0
[544] Fix | Delete
* @access public
[545] Fix | Delete
*
[546] Fix | Delete
* @var Assets_Loader
[547] Fix | Delete
*/
[548] Fix | Delete
public $assets_loader;
[549] Fix | Delete
[550] Fix | Delete
/**
[551] Fix | Delete
* Container instance for managing dependencies.
[552] Fix | Delete
*
[553] Fix | Delete
* @since 3.24.0
[554] Fix | Delete
* @var DIContainer
[555] Fix | Delete
*/
[556] Fix | Delete
private $container;
[557] Fix | Delete
[558] Fix | Delete
/**
[559] Fix | Delete
* Clone.
[560] Fix | Delete
*
[561] Fix | Delete
* Disable class cloning and throw an error on object clone.
[562] Fix | Delete
*
[563] Fix | Delete
* The whole idea of the singleton design pattern is that there is a single
[564] Fix | Delete
* object. Therefore, we don't want the object to be cloned.
[565] Fix | Delete
*
[566] Fix | Delete
* @access public
[567] Fix | Delete
* @since 1.0.0
[568] Fix | Delete
*/
[569] Fix | Delete
public function __clone() {
[570] Fix | Delete
_doing_it_wrong(
[571] Fix | Delete
__FUNCTION__,
[572] Fix | Delete
sprintf( 'Cloning instances of the singleton "%s" class is forbidden.', get_class( $this ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[573] Fix | Delete
'1.0.0'
[574] Fix | Delete
);
[575] Fix | Delete
}
[576] Fix | Delete
[577] Fix | Delete
/**
[578] Fix | Delete
* Wakeup.
[579] Fix | Delete
*
[580] Fix | Delete
* Disable unserializing of the class.
[581] Fix | Delete
*
[582] Fix | Delete
* @access public
[583] Fix | Delete
* @since 1.0.0
[584] Fix | Delete
*/
[585] Fix | Delete
public function __wakeup() {
[586] Fix | Delete
_doing_it_wrong(
[587] Fix | Delete
__FUNCTION__,
[588] Fix | Delete
sprintf( 'Unserializing instances of the singleton "%s" class is forbidden.', get_class( $this ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[589] Fix | Delete
'1.0.0'
[590] Fix | Delete
);
[591] Fix | Delete
}
[592] Fix | Delete
[593] Fix | Delete
/**
[594] Fix | Delete
* Instance.
[595] Fix | Delete
*
[596] Fix | Delete
* Ensures only one instance of the plugin class is loaded or can be loaded.
[597] Fix | Delete
*
[598] Fix | Delete
* @since 1.0.0
[599] Fix | Delete
* @access public
[600] Fix | Delete
* @static
[601] Fix | Delete
*
[602] Fix | Delete
* @return Plugin An instance of the class.
[603] Fix | Delete
*/
[604] Fix | Delete
public static function instance() {
[605] Fix | Delete
if ( is_null( self::$instance ) ) {
[606] Fix | Delete
self::$instance = new self();
[607] Fix | Delete
[608] Fix | Delete
/**
[609] Fix | Delete
* Elementor loaded.
[610] Fix | Delete
*
[611] Fix | Delete
* Fires when Elementor was fully loaded and instantiated.
[612] Fix | Delete
*
[613] Fix | Delete
* @since 1.0.0
[614] Fix | Delete
*/
[615] Fix | Delete
do_action( 'elementor/loaded' );
[616] Fix | Delete
}
[617] Fix | Delete
[618] Fix | Delete
return self::$instance;
[619] Fix | Delete
}
[620] Fix | Delete
[621] Fix | Delete
public function initialize_container() {
[622] Fix | Delete
Container::initialize_instance();
[623] Fix | Delete
[624] Fix | Delete
$this->container = Container::get_instance();
[625] Fix | Delete
}
[626] Fix | Delete
[627] Fix | Delete
/**
[628] Fix | Delete
* Get the Elementor container or resolve a dependency.
[629] Fix | Delete
*
[630] Fix | Delete
* @param string|null $dependency The dependency to resolve. If null, returns the container instance.
[631] Fix | Delete
*
[632] Fix | Delete
* @return mixed The container instance or the resolved dependency.
[633] Fix | Delete
*
[634] Fix | Delete
* @throws \InvalidArgumentException The name parameter must be of type string.
[635] Fix | Delete
* @throws DependencyException Error while resolving the entry.
[636] Fix | Delete
* @throws NotFoundException No entry found for the given name.
[637] Fix | Delete
*/
[638] Fix | Delete
public function elementor_container( $dependency = null ) {
[639] Fix | Delete
if ( is_null( $dependency ) ) {
[640] Fix | Delete
return $this->container;
[641] Fix | Delete
}
[642] Fix | Delete
[643] Fix | Delete
return $this->container->make( $dependency );
[644] Fix | Delete
}
[645] Fix | Delete
[646] Fix | Delete
/**
[647] Fix | Delete
* Init.
[648] Fix | Delete
*
[649] Fix | Delete
* Initialize Elementor Plugin. Register Elementor support for all the
[650] Fix | Delete
* supported post types and initialize Elementor components.
[651] Fix | Delete
*
[652] Fix | Delete
* @since 1.0.0
[653] Fix | Delete
* @access public
[654] Fix | Delete
*/
[655] Fix | Delete
public function init() {
[656] Fix | Delete
$this->add_cpt_support();
[657] Fix | Delete
[658] Fix | Delete
$this->init_components();
[659] Fix | Delete
[660] Fix | Delete
/**
[661] Fix | Delete
* Elementor init.
[662] Fix | Delete
*
[663] Fix | Delete
* Fires when Elementor components are initialized.
[664] Fix | Delete
*
[665] Fix | Delete
* After Elementor finished loading but before any headers are sent.
[666] Fix | Delete
*
[667] Fix | Delete
* @since 1.0.0
[668] Fix | Delete
*/
[669] Fix | Delete
do_action( 'elementor/init' );
[670] Fix | Delete
}
[671] Fix | Delete
[672] Fix | Delete
/**
[673] Fix | Delete
* Get install time.
[674] Fix | Delete
*
[675] Fix | Delete
* Retrieve the time when Elementor was installed.
[676] Fix | Delete
*
[677] Fix | Delete
* @since 2.6.0
[678] Fix | Delete
* @access public
[679] Fix | Delete
* @static
[680] Fix | Delete
*
[681] Fix | Delete
* @return int Unix timestamp when Elementor was installed.
[682] Fix | Delete
*/
[683] Fix | Delete
public function get_install_time() {
[684] Fix | Delete
$installed_time = get_option( '_elementor_installed_time' );
[685] Fix | Delete
[686] Fix | Delete
if ( ! $installed_time ) {
[687] Fix | Delete
$installed_time = time();
[688] Fix | Delete
[689] Fix | Delete
update_option( '_elementor_installed_time', $installed_time );
[690] Fix | Delete
}
[691] Fix | Delete
[692] Fix | Delete
return $installed_time;
[693] Fix | Delete
}
[694] Fix | Delete
[695] Fix | Delete
/**
[696] Fix | Delete
* @since 2.3.0
[697] Fix | Delete
* @access public
[698] Fix | Delete
*/
[699] Fix | Delete
public function on_rest_api_init() {
[700] Fix | Delete
// On admin/frontend sometimes the rest API is initialized after the common is initialized.
[701] Fix | Delete
if ( ! $this->common ) {
[702] Fix | Delete
$this->init_common();
[703] Fix | Delete
}
[704] Fix | Delete
}
[705] Fix | Delete
[706] Fix | Delete
/**
[707] Fix | Delete
* Init components.
[708] Fix | Delete
*
[709] Fix | Delete
* Initialize Elementor components. Register actions, run setting manager,
[710] Fix | Delete
* initialize all the components that run elementor, and if in admin page
[711] Fix | Delete
* initialize admin components.
[712] Fix | Delete
*
[713] Fix | Delete
* @since 1.0.0
[714] Fix | Delete
* @access private
[715] Fix | Delete
*/
[716] Fix | Delete
private function init_components() {
[717] Fix | Delete
$this->experiments = new Experiments_Manager();
[718] Fix | Delete
$this->breakpoints = new Breakpoints_Manager();
[719] Fix | Delete
$this->inspector = new Inspector();
[720] Fix | Delete
[721] Fix | Delete
Settings_Manager::run();
[722] Fix | Delete
[723] Fix | Delete
$this->db = new DB();
[724] Fix | Delete
$this->controls_manager = new Controls_Manager();
[725] Fix | Delete
$this->documents = new Documents_Manager();
[726] Fix | Delete
$this->kits_manager = new Kits_Manager();
[727] Fix | Delete
$this->elements_manager = new Elements_Manager();
[728] Fix | Delete
$this->widgets_manager = new Widgets_Manager();
[729] Fix | Delete
$this->skins_manager = new Skins_Manager();
[730] Fix | Delete
$this->files_manager = new Files_Manager();
[731] Fix | Delete
$this->assets_manager = new Assets_Manager();
[732] Fix | Delete
$this->icons_manager = new Icons_Manager();
[733] Fix | Delete
$this->settings = new Settings();
[734] Fix | Delete
$this->tools = new Tools();
[735] Fix | Delete
$this->editor = new Editor();
[736] Fix | Delete
$this->preview = new Preview();
[737] Fix | Delete
$this->frontend = new Frontend();
[738] Fix | Delete
$this->maintenance_mode = new Maintenance_Mode();
[739] Fix | Delete
$this->dynamic_tags = new Dynamic_Tags_Manager();
[740] Fix | Delete
$this->modules_manager = new Modules_Manager();
[741] Fix | Delete
$this->templates_manager = new TemplateLibrary\Manager();
[742] Fix | Delete
$this->role_manager = new Core\RoleManager\Role_Manager();
[743] Fix | Delete
$this->system_info = new System_Info_Module();
[744] Fix | Delete
$this->revisions_manager = new Revisions_Manager();
[745] Fix | Delete
$this->images_manager = new Images_Manager();
[746] Fix | Delete
$this->wp = new Wp_Api();
[747] Fix | Delete
$this->assets_loader = new Assets_Loader();
[748] Fix | Delete
$this->uploads_manager = new Uploads_Manager();
[749] Fix | Delete
[750] Fix | Delete
$this->admin_menu_manager = new Admin_Menu_Manager();
[751] Fix | Delete
$this->admin_menu_manager->register_actions();
[752] Fix | Delete
[753] Fix | Delete
User::init();
[754] Fix | Delete
User_Data::init();
[755] Fix | Delete
Api::init();
[756] Fix | Delete
Tracker::init();
[757] Fix | Delete
[758] Fix | Delete
$this->upgrade = new Core\Upgrade\Manager();
[759] Fix | Delete
$this->custom_tasks = new Core\Upgrade\Custom_Tasks_Manager();
[760] Fix | Delete
[761] Fix | Delete
$this->app = new App\App();
[762] Fix | Delete
[763] Fix | Delete
if ( is_admin() ) {
[764] Fix | Delete
$this->heartbeat = new Heartbeat();
[765] Fix | Delete
$this->wordpress_widgets_manager = new WordPress_Widgets_Manager();
[766] Fix | Delete
$this->admin = new Admin();
[767] Fix | Delete
$this->beta_testers = new Beta_Testers();
[768] Fix | Delete
}
[769] Fix | Delete
}
[770] Fix | Delete
[771] Fix | Delete
/**
[772] Fix | Delete
* @since 2.3.0
[773] Fix | Delete
* @access public
[774] Fix | Delete
*/
[775] Fix | Delete
public function init_common() {
[776] Fix | Delete
$this->common = new CommonApp();
[777] Fix | Delete
[778] Fix | Delete
$this->common->init_components();
[779] Fix | Delete
}
[780] Fix | Delete
[781] Fix | Delete
/**
[782] Fix | Delete
* Add custom post type support.
[783] Fix | Delete
*
[784] Fix | Delete
* Register Elementor support for all the supported post types defined by
[785] Fix | Delete
* the user in the admin screen and saved as `elementor_cpt_support` option
[786] Fix | Delete
* in WordPress `$wpdb->options` table.
[787] Fix | Delete
*
[788] Fix | Delete
* If no custom post type selected, usually in new installs, this method
[789] Fix | Delete
* will return the two default post types: `page` and `post`.
[790] Fix | Delete
*
[791] Fix | Delete
* @since 1.0.0
[792] Fix | Delete
* @access private
[793] Fix | Delete
*/
[794] Fix | Delete
private function add_cpt_support() {
[795] Fix | Delete
$cpt_support = get_option( 'elementor_cpt_support', self::ELEMENTOR_DEFAULT_POST_TYPES );
[796] Fix | Delete
[797] Fix | Delete
foreach ( $cpt_support as $cpt_slug ) {
[798] Fix | Delete
add_post_type_support( $cpt_slug, 'elementor' );
[799] Fix | Delete
}
[800] Fix | Delete
}
[801] Fix | Delete
[802] Fix | Delete
/**
[803] Fix | Delete
* Register autoloader.
[804] Fix | Delete
*
[805] Fix | Delete
* Elementor autoloader loads all the classes needed to run the plugin.
[806] Fix | Delete
*
[807] Fix | Delete
* @since 1.6.0
[808] Fix | Delete
* @access private
[809] Fix | Delete
*/
[810] Fix | Delete
private function register_autoloader() {
[811] Fix | Delete
require_once ELEMENTOR_PATH . '/includes/autoloader.php';
[812] Fix | Delete
[813] Fix | Delete
Autoloader::run();
[814] Fix | Delete
}
[815] Fix | Delete
[816] Fix | Delete
/**
[817] Fix | Delete
* Magic getter for accessing certain properties.
[818] Fix | Delete
*
[819] Fix | Delete
* @since 3.1.0
[820] Fix | Delete
* @access public
[821] Fix | Delete
*
[822] Fix | Delete
* @param string $property The property name.
[823] Fix | Delete
* @return mixed The property value or null if not found.
[824] Fix | Delete
* @throws \Exception If trying to access a private property.
[825] Fix | Delete
*/
[826] Fix | Delete
public function __get( $property ) {
[827] Fix | Delete
if ( 'posts_css_manager' === $property ) {
[828] Fix | Delete
self::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_argument( 'Plugin::$instance->posts_css_manager', '2.7.0', 'Plugin::$instance->files_manager' );
[829] Fix | Delete
[830] Fix | Delete
return $this->files_manager;
[831] Fix | Delete
}
[832] Fix | Delete
[833] Fix | Delete
if ( 'data_manager' === $property ) {
[834] Fix | Delete
return Data_Manager::instance();
[835] Fix | Delete
}
[836] Fix | Delete
[837] Fix | Delete
if ( property_exists( $this, $property ) ) {
[838] Fix | Delete
throw new \Exception( 'Cannot access private property.' );
[839] Fix | Delete
}
[840] Fix | Delete
[841] Fix | Delete
return null;
[842] Fix | Delete
}
[843] Fix | Delete
[844] Fix | Delete
/**
[845] Fix | Delete
* Plugin constructor.
[846] Fix | Delete
*
[847] Fix | Delete
* Initializing Elementor plugin.
[848] Fix | Delete
*
[849] Fix | Delete
* @since 1.0.0
[850] Fix | Delete
* @access private
[851] Fix | Delete
*/
[852] Fix | Delete
private function __construct() {
[853] Fix | Delete
$this->register_autoloader();
[854] Fix | Delete
[855] Fix | Delete
$this->logger = Log_Manager::instance();
[856] Fix | Delete
$this->data_manager_v2 = Data_Manager_V2::instance();
[857] Fix | Delete
[858] Fix | Delete
Maintenance::init();
[859] Fix | Delete
Compatibility::register_actions();
[860] Fix | Delete
[861] Fix | Delete
add_action( 'init', [ $this, 'init' ], 0 );
[862] Fix | Delete
add_action( 'rest_api_init', [ $this, 'on_rest_api_init' ], 9 );
[863] Fix | Delete
}
[864] Fix | Delete
[865] Fix | Delete
final public static function get_title() {
[866] Fix | Delete
return esc_html__( 'Elementor', 'elementor' );
[867] Fix | Delete
}
[868] Fix | Delete
}
[869] Fix | Delete
[870] Fix | Delete
if ( ! defined( 'ELEMENTOR_TESTS' ) ) {
[871] Fix | Delete
// In tests we run the instance manually.
[872] Fix | Delete
$plugin_instance = Plugin::instance();
[873] Fix | Delete
[874] Fix | Delete
$plugin_instance->initialize_container();
[875] Fix | Delete
}
[876] Fix | Delete
[877] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function