PluginProbe
MailerLite – WooCommerce integration / 3.1.21
MailerLite – WooCommerce integration v3.1.21
3.1.25 3.1.26 3.1.24 3.1.23 3.1.22 3.1.21 3.1.20 3.1.19 3.1.18 3.1.17 3.1.16 3.1.15 1.8.7 1.8.8 2.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 All 147 releases
woo-mailerlite / bootstrap.php

bootstrap.php in MailerLite – WooCommerce integration 3.1.21, at bootstrap.php

200 lines 7.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // If this file is called directly, abort.
4 if (!defined( 'WPINC')) {
5 die;
6 }
7
8 $woo_mailerlite_autoload = true;
9 spl_autoload_register(function($class) {
10 $classes = array(
11 // includes
12 'WooMailerLiteActivator' => 'includes/WooMailerLiteActivator.php',
13 'WooMailerLiteDeActivator' => 'includes/WooMailerLiteDeActivator.php',
14 'WooMailerLiteLoader' => 'includes/WooMailerLiteLoader.php',
15 'WooMailerLite' => 'includes/WooMailerLite.php',
16 'WooMailerLiteService' => 'includes/WooMailerLiteService.php',
17 'WooMailerLiteSession' => 'includes/WooMailerLiteSession.php',
18 'WooMailerLiteCache' => 'includes/WooMailerLiteCache.php',
19
20 // includes/controllers
21 'WooMailerLiteAdminWizardController' => 'admin/controllers/WooMailerLiteAdminWizardController.php',
22 'WooMailerLiteAdminGroupController' => 'admin/controllers/WooMailerLiteAdminGroupController.php',
23 'WooMailerLiteAdminSettingsController' => 'admin/controllers/WooMailerLiteAdminSettingsController.php',
24 'WooMailerLiteAdminSyncController' => 'admin/controllers/WooMailerLiteAdminSyncController.php',
25 'WooMailerLiteAdminMetaBoxController' => 'admin/controllers/WooMailerLiteAdminMetaBoxController.php',
26 'WooMailerLiteCheckoutBlocksController' => 'admin/controllers/WooMailerLiteCheckoutBlocksController.php',
27 'WooMailerLitePluginController' => 'includes/controllers/WooMailerLitePluginController.php',
28 'WooMailerLiteOrderController' => 'includes/controllers/WooMailerLiteOrderController.php',
29
30
31 'WooMailerLiteCheckoutDataService' => 'includes/services/WooMailerLiteCheckoutDataService.php',
32
33 // includes/api
34 'WooMailerLiteApi' => 'includes/api/WooMailerLiteApi.php',
35 'WooMailerLiteRewriteApi' => 'includes/api/WooMailerLiteRewriteApi.php',
36 'WooMailerLiteClassicApi' => 'includes/api/WooMailerLiteClassicApi.php',
37 'WooMailerLiteApiResponse' => 'includes/api/WooMailerLiteApiResponse.php',
38
39 //includes/jobs
40 'WooMailerLiteAbstractJob' => 'includes/jobs/WooMailerLiteAbstractJob.php',
41 'WooMailerLiteProductSyncJob' => 'includes/jobs/WooMailerLiteProductSyncJob.php',
42 'WooMailerLiteCategorySyncJob' => 'includes/jobs/WooMailerLiteCategorySyncJob.php',
43 'WooMailerLiteCustomerSyncJob' => 'includes/jobs/WooMailerLiteCustomerSyncJob.php',
44 'WooMailerLiteProductSyncResetJob' => 'includes/jobs/WooMailerLiteProductSyncResetJob.php',
45 'WooMailerLiteCategorySyncResetJob' => 'includes/jobs/WooMailerLiteCategorySyncResetJob.php',
46 'WooMailerLiteCustomerSyncResetJob' => 'includes/jobs/WooMailerLiteCustomerSyncResetJob.php',
47
48 //includes/models
49 'WooMailerLiteModel' => 'includes/models/WooMailerLiteModel.php',
50 'WooMailerLiteCart' => 'includes/models/WooMailerLiteCart.php',
51 'WooMailerLiteJob' => 'includes/models/WooMailerLiteJob.php',
52 'WooMailerLiteProduct' => 'includes/models/WooMailerLiteProduct.php',
53 'WooMailerLiteCategory' => 'includes/models/WooMailerLiteCategory.php',
54 'WooMailerLiteCustomer' => 'includes/models/WooMailerLiteCustomer.php',
55
56 // includes/controllers
57 'WooMailerLiteController' => 'includes/controllers/WooMailerLiteController.php',
58
59 // admin
60 'WooMailerLiteAdmin' => 'admin/WooMailerLiteAdmin.php',
61 'WooMailerLiteBlocksIntegration' => 'admin/Integrations/WooMailerLiteBlocksIntegration.php',
62
63
64 // includes/common
65 'WooMailerLiteDBConnection' => 'includes/common/WooMailerLiteDBConnection.php',
66 'WooMailerLiteOptions' => 'includes/common/WooMailerLiteOptions.php',
67 'WooMailerLiteResources' => 'includes/common/traits/WooMailerLiteResources.php',
68 'WooMailerLiteProductVariantsTrait' => 'includes/common/traits/WooMailerLiteProductVariantsTrait.php',
69 'WooMailerLiteCollection' => 'includes/common/WooMailerLiteCollection.php',
70 'WooMailerLiteQueryBuilder' => 'includes/common/WooMailerLiteQueryBuilder.php',
71 'WooMailerLiteEncryption' => 'includes/common/WooMailerLiteEncryption.php',
72
73 // includes/migrations
74 'WooMailerLiteMigration' => 'includes/migrations/WooMailerLiteMigration.php',
75
76 // includes/public
77 'WooMailerLitePublic' => 'public/WooMailerLitePublic.php',
78 );
79
80 // if the file exists, require it
81 $path = plugin_dir_path( __FILE__ );
82 if (array_key_exists($class, $classes) && file_exists($path.$classes[$class])) {
83 require $path.$classes[$class];
84 }
85 });
86
87 function activate_woo_mailerlite() {
88 WooMailerLiteActivator::activate();
89 }
90
91 function deactivate_woo_mailerlite()
92 {
93 WooMailerLiteDeActivator::deactivate();
94 }
95
96 function woo_mailerlite_check_woocommerce_is_installed() {
97 if (!woo_mailerlit_check_woocommerce_plugin_status()) {
98 // Deactivate the plugin
99 deactivate_plugins(__FILE__);
100 $error_message = __('The MailerLite – WooCommerce integration plugin requires the <a href="http://wordpress.org/extend/plugins/woocommerce/">WooCommerce</a> plugin to be active!', 'woocommerce');
101 wp_die($error_message);
102 }
103 return true;
104 }
105
106 /**
107 * @return bool
108 */
109 function woo_mailerlit_check_woocommerce_plugin_status()
110 {
111 if (in_array('woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option('active_plugins')))) {
112 return true;
113 }
114 $plugins = get_site_option( 'active_sitewide_plugins');
115 return isset($plugins['woocommerce/woocommerce.php']);
116 }
117
118
119 function run_woo_mailerlite() {
120 try {
121 $plugin = new WooMailerLite();
122 $plugin->run();
123 } catch(Throwable $th) {
124 WooMailerLiteLog()->error('run_woo_mailerlite', ['error' => $th->getMessage(), 'trace' => $th->getTraceAsString()]);
125 return true;
126 }
127
128 }
129
130 function db() {
131 $class = new WooMailerLiteDBConnection();
132 return $class->db();
133 }
134
135 function get_table(string $class) : ?string {
136 $model_classes = [
137 'WooMailerLiteJob' => 'jobs',
138 'WooMailerLiteCart' => 'woo_mailerlite_carts',
139 'WooMailerLiteProduct' => 'products',
140 ];
141 return $model_classes[$class] ?? null;
142 }
143 //register_activation_hook(__FILE__, 'schedule_product_sync');
144
145 function schedule_product_sync() {
146 // Run an immediate sync when the plugin is activated
147 as_schedule_single_action(time(), 'sync_products_action');
148
149 // Then schedule recurring syncs
150 // if (!as_next_scheduled_action('sync_products_action')) {
151 // as_schedule_recurring_action(time() + 10, HOUR_IN_SECONDS, 'sync_products_action');
152 // }
153 }
154
155 function cacheSet($key, $value, $expire = 0)
156 {
157 wp_cache_set($key, $value, 'woo_mailerlite', $expire);
158 }
159
160 function cacheGet($key)
161 {
162 return wp_cache_get($key, 'woo_mailerlite');
163 }
164
165 function WooMailerLiteLog() {
166 return new class() {
167 public function debug($message, $data = []) {
168 $this->log('debug', $message, $data);
169 }
170 public function notice($message, $data = []) {
171 $this->log('notice', $message, $data);
172 }
173 public function info($message, $data = []) {
174 $this->log('notice', $message, $data);
175 }
176
177 public function error($message, $data = []) {
178 $this->log('error', $message, $data);
179 }
180
181 protected function log($action, $message, $data = [])
182 {
183 if (is_array($data) && !empty($data)) {
184 $message .= " :: ".wc_print_r($data, true);
185 } else {
186 $message .= " :: ".json_encode($data);
187 }
188 wc_get_logger()->$action("{$message}", ['source' => 'woo_mailerlite']);
189 }
190 };
191 }
192
193 function textInput($key, $default = '') {
194 return isset($_POST[$key]) ? sanitize_text_field($_POST[$key]) : $default;
195 }
196
197 function emailInput($key, $default = '') {
198 return isset($_POST[$key]) ? sanitize_email($_POST[$key]) : $default;
199 }
200