PluginProbe
YayMail – WooCommerce Email Customizer / 4.3.2
YayMail – WooCommerce Email Customizer v4.3.2
4.4.4 4.4.3 4.4.2 4.4.1 trunk 1.9.6 2.1.4 2.1.5 3.2.2 3.2.6 3.2.7.1 3.2.8.1 3.2.9 3.3 3.3.1 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4 3.4.1 3.4.2 3.4.3 All 55 releases
yaymail / src / Controllers / AddonController.php

AddonController.php in YayMail – WooCommerce Email Customizer 4.3.2, at src/Controllers/AddonController.php

157 lines 4.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace YayMail\Controllers;
4
5 use YayMail\Abstracts\BaseController;
6 use YayMail\Models\AddonModel;
7 use YayMail\Models\SettingModel;
8 use YayMail\Utils\SingletonTrait;
9
10 /**
11 * Settings Controller
12 * * @method static AddonController get_instance()
13 */
14 class AddonController extends BaseController {
15 use SingletonTrait;
16
17 private $model = null;
18
19 protected function __construct() {
20 $this->model = SettingModel::get_instance();
21 $this->init_hooks();
22 }
23
24 protected function init_hooks() {
25 register_rest_route(
26 YAYMAIL_REST_NAMESPACE,
27 '/addons',
28 [
29 [
30 'methods' => \WP_REST_Server::READABLE,
31 'callback' => [ $this, 'exec_get_addons' ],
32 'permission_callback' => [ $this, 'permission_callback' ],
33 ],
34 ]
35 );
36 register_rest_route(
37 YAYMAIL_REST_NAMESPACE,
38 '/addons/activate',
39 [
40 [
41 'methods' => \WP_REST_Server::EDITABLE,
42 'callback' => [ $this, 'exec_activate_addon' ],
43 'permission_callback' => [ $this, 'permission_callback' ],
44 ],
45 ]
46 );
47 register_rest_route(
48 YAYMAIL_REST_NAMESPACE,
49 '/addons/deactivate',
50 [
51 [
52 'methods' => \WP_REST_Server::EDITABLE,
53 'callback' => [ $this, 'exec_deactivate_addon' ],
54 'permission_callback' => [ $this, 'permission_callback' ],
55 ],
56 ]
57 );
58 }
59
60 public function exec_get_addons( \WP_REST_Request $request ) {
61 return $this->exec( [ $this, 'get_addons' ], $request );
62 }
63
64 public function exec_activate_addon( \WP_REST_Request $request ) {
65 return $this->exec( [ $this, 'activate_addon' ], $request );
66 }
67
68 public function exec_deactivate_addon( \WP_REST_Request $request ) {
69 return $this->exec( [ $this, 'deactivate_addon' ], $request );
70 }
71
72 public function get_addons() {
73 return array_values( AddonModel::get_all() );
74 }
75
76 public function activate_addon( \WP_REST_Request $request ) {
77 $addon = $request->get_param( 'addon' );
78
79 if ( ! $addon ) {
80 return [
81 'success' => false,
82 'message' => 'Addon not found',
83 ];
84 }
85
86 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
87 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
88 require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
89 require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
90
91 $plugin_status = \install_plugin_install_status(
92 [
93 'slug' => $addon,
94 'version' => '',
95 ]
96 );
97
98 if ( $plugin_status['status'] === false || empty( $plugin_status['file'] ) ) {
99 return [
100 'success' => false,
101 'message' => 'Addon not installed',
102 ];
103 }
104
105 $result = activate_plugin( $plugin_status['file'] );
106
107 if ( is_wp_error( $result ) ) {
108 return [
109 'success' => false,
110 'message' => $result->get_error_message(),
111 'addon' => $addon,
112 ];
113 }
114 return [
115 'success' => true,
116 'message' => 'Addon activated',
117 ];
118 }
119
120 public function deactivate_addon( \WP_REST_Request $request ) {
121 $addon = $request->get_param( 'addon' );
122
123 if ( ! $addon ) {
124 return [
125 'success' => false,
126 'message' => 'Addon not found',
127 ];
128 }
129
130 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
131 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
132 require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
133 require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
134
135 $plugin_status = \install_plugin_install_status(
136 [
137 'slug' => $addon,
138 'version' => '',
139 ]
140 );
141
142 if ( $plugin_status['status'] === false || empty( $plugin_status['file'] ) ) {
143 return [
144 'success' => false,
145 'message' => 'Addon not installed',
146 ];
147 }
148
149 deactivate_plugins( $plugin_status['file'] );
150
151 return [
152 'success' => true,
153 'message' => 'Addon deactivated',
154 ];
155 }
156 }
157