PluginProbe
YayMail – WooCommerce Email Customizer / 4.3.3
YayMail – WooCommerce Email Customizer v4.3.3
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.3, at src/Controllers/AddonController.php

161 lines 4.8 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 permission_callback_admin_only() {
25 return current_user_can( 'activate_plugins' );
26 }
27
28 protected function init_hooks() {
29 register_rest_route(
30 YAYMAIL_REST_NAMESPACE,
31 '/addons',
32 [
33 [
34 'methods' => \WP_REST_Server::READABLE,
35 'callback' => [ $this, 'exec_get_addons' ],
36 'permission_callback' => [ $this, 'permission_callback' ],
37 ],
38 ]
39 );
40 register_rest_route(
41 YAYMAIL_REST_NAMESPACE,
42 '/addons/activate',
43 [
44 [
45 'methods' => \WP_REST_Server::EDITABLE,
46 'callback' => [ $this, 'exec_activate_addon' ],
47 'permission_callback' => [ $this, 'permission_callback_admin_only' ],
48 ],
49 ]
50 );
51 register_rest_route(
52 YAYMAIL_REST_NAMESPACE,
53 '/addons/deactivate',
54 [
55 [
56 'methods' => \WP_REST_Server::EDITABLE,
57 'callback' => [ $this, 'exec_deactivate_addon' ],
58 'permission_callback' => [ $this, 'permission_callback_admin_only' ],
59 ],
60 ]
61 );
62 }
63
64 public function exec_get_addons( \WP_REST_Request $request ) {
65 return $this->exec( [ $this, 'get_addons' ], $request );
66 }
67
68 public function exec_activate_addon( \WP_REST_Request $request ) {
69 return $this->exec( [ $this, 'activate_addon' ], $request );
70 }
71
72 public function exec_deactivate_addon( \WP_REST_Request $request ) {
73 return $this->exec( [ $this, 'deactivate_addon' ], $request );
74 }
75
76 public function get_addons() {
77 return array_values( AddonModel::get_all() );
78 }
79
80 public function activate_addon( \WP_REST_Request $request ) {
81 $addon = $request->get_param( 'addon' );
82
83 if ( ! $addon ) {
84 return [
85 'success' => false,
86 'message' => 'Addon not found',
87 ];
88 }
89
90 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
91 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
92 require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
93 require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
94
95 $plugin_status = \install_plugin_install_status(
96 [
97 'slug' => $addon,
98 'version' => '',
99 ]
100 );
101
102 if ( $plugin_status['status'] === false || empty( $plugin_status['file'] ) ) {
103 return [
104 'success' => false,
105 'message' => 'Addon not installed',
106 ];
107 }
108
109 $result = activate_plugin( $plugin_status['file'] );
110
111 if ( is_wp_error( $result ) ) {
112 return [
113 'success' => false,
114 'message' => $result->get_error_message(),
115 'addon' => $addon,
116 ];
117 }
118 return [
119 'success' => true,
120 'message' => 'Addon activated',
121 ];
122 }
123
124 public function deactivate_addon( \WP_REST_Request $request ) {
125 $addon = $request->get_param( 'addon' );
126
127 if ( ! $addon ) {
128 return [
129 'success' => false,
130 'message' => 'Addon not found',
131 ];
132 }
133
134 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
135 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
136 require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
137 require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
138
139 $plugin_status = \install_plugin_install_status(
140 [
141 'slug' => $addon,
142 'version' => '',
143 ]
144 );
145
146 if ( $plugin_status['status'] === false || empty( $plugin_status['file'] ) ) {
147 return [
148 'success' => false,
149 'message' => 'Addon not installed',
150 ];
151 }
152
153 deactivate_plugins( $plugin_status['file'] );
154
155 return [
156 'success' => true,
157 'message' => 'Addon deactivated',
158 ];
159 }
160 }
161