PluginProbe
StoreEngine — Complete eCommerce Solution with Memberships, Licensing, Affiliates & More / 1.9.1
StoreEngine — Complete eCommerce Solution with Memberships, Licensing, Affiliates & More v1.9.1
2.3.0 2.2.0 2.1.1 2.1.0 2.0.0 1.10.0 1.9.1 1.9.0 1.2.1 1.2.2 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 All 59 releases
storeengine / includes / addons.php

addons.php in StoreEngine — Complete eCommerce Solution with Memberships, Licensing, Affiliates & More 1.9.1, at includes/addons.php

108 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace StoreEngine;
4
5 use StoreEngine\Admin\Settings;
6 use StoreEngine\Classes\AbstractAddon;
7 use WP_Error;
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 class Addons {
14 public static function init() {
15 $self = new self();
16 // Load all addons
17 $self->addons_loader();
18 }
19
20 private function addons_loader() {
21 $addons = apply_filters( 'storeengine/addons/loader_args', [
22 'paypal' => 'Paypal',
23 'stripe' => 'Stripe',
24 'affiliate' => 'Affiliate',
25 'membership' => 'Membership',
26 'subscription' => 'Subscription',
27 'invoice' => 'Invoice',
28 'email' => 'Email',
29 'webhooks' => 'Webhooks',
30 'migration-tool' => 'MigrationTool',
31 'csv' => 'Csv',
32 'catalog-mode' => 'CatalogMode',
33 'razorpay' => 'Razorpay',
34 'paddle' => 'Paddle',
35 'multi-currency' => 'MultiCurrency',
36 'instant-checkout' => 'InstantCheckout',
37 'embeddable-checkout' => 'EmbeddableCheckout',
38 ] );
39
40 foreach ( $addons as $addon_name => $addon_class_name ) {
41 $addon_root_path = STOREENGINE_ADDONS_DIR_PATH . $addon_name . '/';
42 $addon_namespace = 'StoreEngine\\Addons\\' . $addon_class_name;
43
44 // Register the addon's root namespace and path.
45 Autoload::get_instance()->add_namespace_directory( $addon_namespace, $addon_root_path );
46
47 /**
48 * Initialize the addon's main class.
49 *
50 * @var AbstractAddon $class Addon's main class.
51 */
52 $class = $addon_namespace . '\\' . $addon_class_name;
53 $class = $class::init();
54 $class->run();
55 }
56
57 do_action( 'storeengine/addons/loaded' );
58 }
59
60 public static function activate( string $addon_slug ) {
61 global $storeengine_addons;
62 if ( ! isset( $storeengine_addons ) ) {
63 Settings::load_settings();
64 }
65
66 $data = (array) $storeengine_addons;
67
68 if ( array_key_exists( $addon_slug, $data ) ) {
69 if ( $data[$addon_slug] ) {
70 // translators: %s: Addon slug.
71 return new WP_Error( 'addon_already_activated', sprintf( __( 'Addon %s already activated', 'storeengine' ), $addon_slug ) );
72 }
73 }
74
75 $storeengine_addons->{$addon_slug} = true;
76
77 update_option( STOREENGINE_ADDONS_SETTINGS_NAME, wp_json_encode( $storeengine_addons ) );
78
79 do_action( "storeengine/addons/activated_{$addon_slug}" );
80
81 return true;
82 }
83
84 public static function deactivate( string $addon_slug ) {
85 global $storeengine_addons;
86 if ( ! isset( $storeengine_addons ) ) {
87 Settings::load_settings();
88 }
89
90 $data = (array) $storeengine_addons;
91
92 if ( array_key_exists( $addon_slug, $data ) ) {
93 if ( !$data[$addon_slug] ) {
94 // translators: %s: Addon slug.
95 return new WP_Error( 'addon_already_deactivated', sprintf( __( 'Addon %s already deactivated', 'storeengine' ), $addon_slug ) );
96 }
97 }
98
99 $storeengine_addons->{$addon_slug} = false;
100
101 update_option( STOREENGINE_ADDONS_SETTINGS_NAME, wp_json_encode( $storeengine_addons ) );
102
103 do_action( "storeengine/addons/deactivated_{$addon_slug}" );
104
105 return true;
106 }
107 }
108