PluginProbe
MailerLite – WooCommerce integration / trunk
MailerLite – WooCommerce integration vtrunk
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 trunk, at bootstrap.php

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