PluginProbe
MailerLite – WooCommerce integration / 3.1.20
MailerLite – WooCommerce integration v3.1.20
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.20, at bootstrap.php

199 lines 7.6 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 'WooMailerLiteCollection' => 'includes/common/WooMailerLiteCollection.php',
69 'WooMailerLiteQueryBuilder' => 'includes/common/WooMailerLiteQueryBuilder.php',
70 'WooMailerLiteEncryption' => 'includes/common/WooMailerLiteEncryption.php',
71
72 // includes/migrations
73 'WooMailerLiteMigration' => 'includes/migrations/WooMailerLiteMigration.php',
74
75 // includes/public
76 'WooMailerLitePublic' => 'public/WooMailerLitePublic.php',
77 );
78
79 // if the file exists, require it
80 $path = plugin_dir_path( __FILE__ );
81 if (array_key_exists($class, $classes) && file_exists($path.$classes[$class])) {
82 require $path.$classes[$class];
83 }
84 });
85
86 function activate_woo_mailerlite() {
87 WooMailerLiteActivator::activate();
88 }
89
90 function deactivate_woo_mailerlite()
91 {
92 WooMailerLiteDeActivator::deactivate();
93 }
94
95 function woo_mailerlite_check_woocommerce_is_installed() {
96 if (!woo_mailerlit_check_woocommerce_plugin_status()) {
97 // Deactivate the plugin
98 deactivate_plugins(__FILE__);
99 $error_message = __('The MailerLite – WooCommerce integration plugin requires the <a href="http://wordpress.org/extend/plugins/woocommerce/">WooCommerce</a> plugin to be active!', 'woocommerce');
100 wp_die($error_message);
101 }
102 return true;
103 }
104
105 /**
106 * @return bool
107 */
108 function woo_mailerlit_check_woocommerce_plugin_status()
109 {
110 if (in_array('woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option('active_plugins')))) {
111 return true;
112 }
113 $plugins = get_site_option( 'active_sitewide_plugins');
114 return isset($plugins['woocommerce/woocommerce.php']);
115 }
116
117
118 function run_woo_mailerlite() {
119 try {
120 $plugin = new WooMailerLite();
121 $plugin->run();
122 } catch(Throwable $th) {
123 WooMailerLiteLog()->error('run_woo_mailerlite', ['error' => $th->getMessage(), 'trace' => $th->getTraceAsString()]);
124 return true;
125 }
126
127 }
128
129 function db() {
130 $class = new WooMailerLiteDBConnection();
131 return $class->db();
132 }
133
134 function get_table(string $class) : ?string {
135 $model_classes = [
136 'WooMailerLiteJob' => 'jobs',
137 'WooMailerLiteCart' => 'woo_mailerlite_carts',
138 'WooMailerLiteProduct' => 'products',
139 ];
140 return $model_classes[$class] ?? null;
141 }
142 //register_activation_hook(__FILE__, 'schedule_product_sync');
143
144 function schedule_product_sync() {
145 // Run an immediate sync when the plugin is activated
146 as_schedule_single_action(time(), 'sync_products_action');
147
148 // Then schedule recurring syncs
149 // if (!as_next_scheduled_action('sync_products_action')) {
150 // as_schedule_recurring_action(time() + 10, HOUR_IN_SECONDS, 'sync_products_action');
151 // }
152 }
153
154 function cacheSet($key, $value, $expire = 0)
155 {
156 wp_cache_set($key, $value, 'woo_mailerlite', $expire);
157 }
158
159 function cacheGet($key)
160 {
161 return wp_cache_get($key, 'woo_mailerlite');
162 }
163
164 function WooMailerLiteLog() {
165 return new class() {
166 public function debug($message, $data = []) {
167 $this->log('debug', $message, $data);
168 }
169 public function notice($message, $data = []) {
170 $this->log('notice', $message, $data);
171 }
172 public function info($message, $data = []) {
173 $this->log('notice', $message, $data);
174 }
175
176 public function error($message, $data = []) {
177 $this->log('error', $message, $data);
178 }
179
180 protected function log($action, $message, $data = [])
181 {
182 if (is_array($data) && !empty($data)) {
183 $message .= " :: ".wc_print_r($data, true);
184 } else {
185 $message .= " :: ".json_encode($data);
186 }
187 wc_get_logger()->$action("{$message}", ['source' => 'woo_mailerlite']);
188 }
189 };
190 }
191
192 function textInput($key, $default = '') {
193 return isset($_POST[$key]) ? sanitize_text_field($_POST[$key]) : $default;
194 }
195
196 function emailInput($key, $default = '') {
197 return isset($_POST[$key]) ? sanitize_email($_POST[$key]) : $default;
198 }
199