PluginProbe
Elementor Website Builder – more than just a page builder / 3.4.5
Elementor Website Builder – more than just a page builder v3.4.5
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / core / common / modules / connect / module.php

module.php in Elementor Website Builder – more than just a page builder 3.4.5, at core/common/modules/connect/module.php

207 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor\Core\Common\Modules\Connect;
3
4 use Elementor\Utils;
5 use Elementor\Core\Base\Module as BaseModule;
6 use Elementor\Core\Common\Modules\Connect\Apps\Base_App;
7 use Elementor\Core\Common\Modules\Connect\Apps\Connect;
8 use Elementor\Core\Common\Modules\Connect\Apps\Library;
9 use Elementor\Plugin;
10
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit; // Exit if accessed directly
13 }
14
15 class Module extends BaseModule {
16 const ACCESS_LEVEL_CORE = 0;
17 const ACCESS_LEVEL_PRO = 1;
18 const ACCESS_LEVEL_EXPERT = 20;
19
20 /**
21 * @since 2.3.0
22 * @access public
23 */
24 public function get_name() {
25 return 'connect';
26 }
27
28 /**
29 * @var array
30 */
31 protected $registered_apps = [];
32
33 /**
34 * Apps Instances.
35 *
36 * Holds the list of all the apps instances.
37 *
38 * @since 2.3.0
39 * @access protected
40 *
41 * @var Base_App[]
42 */
43 protected $apps = [];
44
45 /**
46 * Registered apps categories.
47 *
48 * Holds the list of all the registered apps categories.
49 *
50 * @since 2.3.0
51 * @access protected
52 *
53 * @var array
54 */
55 protected $categories = [];
56
57 protected $admin_page;
58
59 /**
60 * @since 2.3.0
61 * @access public
62 */
63 public function __construct() {
64 $this->registered_apps = [
65 'connect' => Connect::get_class_name(),
66 'library' => Library::get_class_name(),
67 ];
68
69 // When using REST API the parent module is construct after the action 'elementor/init'
70 // so this part of code make sure to register the module "apps".
71 if ( did_action( 'elementor/init' ) ) {
72 $this->init();
73 } else {
74 // Note: The priority 11 is for allowing plugins to add their register callback on elementor init.
75 add_action( 'elementor/init', [ $this, 'init' ], 11 );
76 }
77 }
78
79 /**
80 * Register default apps.
81 *
82 * Registers the default apps.
83 *
84 * @since 2.3.0
85 * @access public
86 */
87 public function init() {
88 if ( is_admin() ) {
89 $this->admin_page = new Admin();
90 }
91
92 /**
93 * Register Elementor apps.
94 *
95 * Fires after Elementor registers the default apps.
96 *
97 * @since 2.3.0
98 *
99 * @param self $this The apps manager instance.
100 */
101 do_action( 'elementor/connect/apps/register', $this );
102
103 foreach ( $this->registered_apps as $slug => $class ) {
104 $this->apps[ $slug ] = new $class();
105 }
106 }
107
108 /**
109 * @deprecated 3.1.0
110 */
111 public function localize_settings() {
112 Plugin::$instance->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0' );
113
114 return [];
115 }
116
117 /**
118 * Register app.
119 *
120 * Registers an app.
121 *
122 * @since 2.3.0
123 * @access public
124 *
125 * @param string $slug App slug.
126 * @param string $class App full class name.
127 *
128 * @return self The updated apps manager instance.
129 */
130 public function register_app( $slug, $class ) {
131 $this->registered_apps[ $slug ] = $class;
132
133 return $this;
134 }
135
136 /**
137 * Get app instance.
138 *
139 * Retrieve the app instance.
140 *
141 * @since 2.3.0
142 * @access public
143 *
144 * @param $slug
145 *
146 * @return Base_App|null
147 */
148 public function get_app( $slug ) {
149 if ( isset( $this->apps[ $slug ] ) ) {
150 return $this->apps[ $slug ];
151 }
152
153 return null;
154 }
155
156 /**
157 * @since 2.3.0
158 * @access public
159 * @return Base_App[]
160 */
161 public function get_apps() {
162 return $this->apps;
163 }
164
165 /**
166 * @since 2.3.0
167 * @access public
168 */
169 public function register_category( $slug, $args ) {
170 $this->categories[ $slug ] = $args;
171 return $this;
172 }
173
174 /**
175 * @since 2.3.0
176 * @access public
177 */
178 public function get_categories() {
179 return $this->categories;
180 }
181
182 /**
183 * @param $context
184 *
185 * @return array
186 */
187 public function get_subscription_plans( $context ) {
188 return [
189 static::ACCESS_LEVEL_CORE => [
190 'label' => null,
191 'promotion_url' => null,
192 'color' => null,
193 ],
194 static::ACCESS_LEVEL_PRO => [
195 'label' => 'Pro',
196 'promotion_url' => Utils::get_pro_link( "https://elementor.com/pro/?utm_source={$context}&utm_medium=wp-dash&utm_campaign=gopro" ),
197 'color' => '#92003B',
198 ],
199 static::ACCESS_LEVEL_EXPERT => [
200 'label' => 'Expert',
201 'promotion_url' => Utils::get_pro_link( "https://elementor.com/pro/?utm_source={$context}&utm_medium=wp-dash&utm_campaign=goexpert" ),
202 'color' => '#010051',
203 ],
204 ];
205 }
206 }
207