PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 3.1.11
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v3.1.11
3.7.5 3.7.4 3.7.3 3.7.2 1-final 3.7.1 3.7.0 3.6.8 3.6.7 3.6.6 3.6.5 3.6.4 3.6.3 3.6.2 3.6.1 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 All 111 releases
templately / includes / Plugin.php

Plugin.php in Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! 3.1.11, at includes/Plugin.php

210 lines 4.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Templately plugin.
4 *
5 * The main plugin handler class is responsible for initializing Templately. The
6 * class registers and all the components required to run the plugin.
7 *
8 * @package Templately
9 */
10
11 namespace Templately;
12
13 use Templately\API\Conditions;
14 use Templately\API\ThemeBuilderApi;
15 use Templately\Builder\ThemeBuilder;
16 use Templately\Core\Importer\FullSiteImport;
17 use Templately\Utils\Base;
18 use Templately\Utils\Enqueue;
19
20 use Templately\Core\Admin;
21 use Templately\Core\Module;
22
23 use Templately\API\Tags;
24 use Templately\API\Items;
25 use Templately\API\Login;
26 use Templately\API\SignUp;
27 use Templately\API\Profile;
28 use Templately\API\Import;
29 use Templately\API\MyClouds;
30 use Templately\API\WorkSpaces;
31 use Templately\API\Categories;
32 use Templately\API\Dependencies;
33 use Templately\API\TemplateTypes;
34 use Templately\API\SavedTemplates;
35 use Templately\Core\Maintenance;
36 use Templately\Core\Migrator;
37 use Templately\Core\Platform\Gutenberg;
38 use Templately\Core\Platform\Elementor;
39
40 final class Plugin extends Base {
41 public $version = '3.1.11';
42
43 public $admin;
44 /**
45 * Enqueue class responsible for assets
46 * @var Enqueue
47 */
48 public $assets;
49
50 /**
51 * @var ThemeBuilder
52 */
53 public $theme_builder;
54
55 /**
56 * Plugin constructor.
57 * Initializing Templately plugin.
58 *
59 * @access private
60 */
61 public function __construct() {
62 $this->define_constants();
63 $this->set_locale();
64
65 Maintenance::init();
66
67 $this->assets = Enqueue::get_instance( TEMPLATELY_URL, TEMPLATELY_PATH, $this->version );
68 $this->admin = Admin::get_instance();
69 $this->theme_builder = ThemeBuilder::get_instance();
70
71 add_action( 'plugins_loaded', [ $this, 'plugins_loaded' ] );
72 add_action( 'rest_api_init', [ $this, 'register_routes' ] );
73 /**
74 * Initialize.
75 */
76 do_action( 'templately_init' );
77
78 }
79
80 /**
81 * Cloning is forbidden.
82 *
83 * @since 2.0
84 */
85 public function __clone() {
86 _doing_it_wrong( __FUNCTION__, __( 'Cloning is forbidden.', 'templately' ), '2.0' );
87 }
88
89 /**
90 * Un-serializing instances of this class is forbidden.
91 *
92 * @since 2.0
93 */
94 public function __wakeup() {
95 _doing_it_wrong( __FUNCTION__, __( 'Un-serializing instances of this class is forbidden.', 'templately' ), '2.0' );
96 }
97
98 /**
99 * Initializing Things on Plugins Loaded
100 * @return void
101 */
102 public function plugins_loaded() {
103 $this->platforms(); // PLATFORMS LOADED
104 $this->apis(); // APIs LOADED
105
106 /**
107 * Migrator for Templately
108 */
109 Migrator::get_instance();
110
111 /**
112 * Full Site Import
113 */
114 FullSiteImport::get_instance();
115 }
116
117 /**
118 * Initialize all platforms
119 * @return void
120 */
121 public function platforms() {
122 Gutenberg::get_instance();
123 Elementor::get_instance();
124 }
125
126 /**
127 * All the API instantiated
128 *
129 * @return void
130 */
131 private function apis() {
132 Conditions::get_instance();
133 Categories::get_instance();
134 TemplateTypes::get_instance();
135 Dependencies::get_instance();
136 Tags::get_instance();
137 ThemeBuilderApi::get_instance();
138
139 Items::get_instance();
140 SavedTemplates::get_instance();
141
142 Login::get_instance();
143 SignUp::get_instance();
144 Import::get_instance();
145 Profile::get_instance();
146 MyClouds::get_instance();
147 WorkSpaces::get_instance();
148 }
149
150 /**
151 * Register all REST API endpoints
152 * @return void
153 */
154 public function register_routes() {
155 if ( ! empty( $modules = Module::get_instance()->get( 'API' ) ) ) {
156 foreach ( $modules as $module ) {
157 $module->object->register_routes();
158 }
159 }
160 }
161
162 /**
163 * Define CONSTANTS
164 *
165 * @return void
166 * @since 2.0.0
167 */
168 public function define_constants() {
169 $this->define( 'TEMPLATELY_URL', plugin_dir_url( TEMPLATELY_FILE ) );
170 $this->define( 'TEMPLATELY_ASSETS', TEMPLATELY_URL . 'assets/' );
171 $this->define( 'TEMPLATELY_PLUGIN_BASENAME', plugin_basename( TEMPLATELY_FILE ) );
172 $this->define( 'TEMPLATELY_VERSION', $this->version );
173 $this->define( 'TEMPLATELY_API_NAMESPACE', 'templately/v1' );
174 $this->define( 'TEMPLATELY_VIEWS_ABSPATH', TEMPLATELY_PATH . 'views/' );
175 }
176
177 /**
178 * Define constant if not already set.
179 *
180 * @param string $name Constant name.
181 * @param mixed $value Constant value.
182 *
183 * @return void
184 */
185 private function define( string $name, $value ) {
186 if ( ! defined( $name ) ) {
187 define( $name, $value );
188 }
189 }
190
191 /**
192 * Setting the locale for translation availability
193 * @return void
194 * @since 1.0.0
195 */
196 public function set_locale() {
197 add_action( 'init', [ $this, 'load_textdomain' ] );
198 }
199
200 /**
201 * Loading Text Domain on init HOOK
202 * @return void
203 * @since 1.0.0
204 *
205 */
206 public function load_textdomain() {
207 load_plugin_textdomain( 'templately', false, dirname( TEMPLATELY_PLUGIN_BASENAME ) . '/languages' );
208 }
209 }
210