PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.8.2
Advanced Access Manager – Access Governance for WordPress v5.8.2
6.8.4 6.8.5 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13 6.9.14 6.9.15 6.9.16 6.9.17 6.9.18 6.9.19 6.9.2 6.9.20 6.9.21 6.9.22 6.9.23 6.9.24 6.9.25 6.9.26 6.9.27 6.9.28 6.9.29 6.9.3 6.9.30 6.9.31 6.9.32 6.9.33 6.9.34 6.9.35 6.9.36 6.9.37 6.9.38 6.9.39 6.9.4 6.9.41 6.9.42 6.9.43 6.9.44 6.9.45 6.9.46 6.9.47 6.9.48 6.9.49 6.9.5 6.9.51 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.0-alpha.6 7.0.0-alpha.7 7.0.0-beta.1 7.0.0-rc1 7.0.0-rc2 7.0.0-rc3 7.0.1 7.0.10 7.0.11 7.0.2 7.0.3 7.0.4 7.0.5 7.0.6 7.0.7 7.0.8 7.0.9 7.1.0 7.1.1 trunk 3.0 4.0 4.0.1 4.1 4.2 4.3 4.4 4.4.1 4.5 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.7.5 4.7.6 4.8 4.8.1 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.5.1 4.9.5.2 5.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1 5.1.1 5.10 5.11 5.2 5.2.1 5.2.5 5.2.6 5.2.7 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.4 5.4.1 5.4.2 5.4.3 5.4.3.1 5.4.3.2 5.5 5.5.1 5.5.2 5.6 5.6.1 5.6.1.1 5.7 5.7.1 5.7.2 5.7.3 5.8 5.8.1 5.8.2 5.8.3 5.9 5.9.1 5.9.1.1 5.9.2 5.9.2.1 5.9.3 5.9.4 5.9.5 5.9.6 5.9.6.1 5.9.6.2 5.9.6.3 5.9.7 5.9.7.1 5.9.7.2 5.9.7.3 5.9.8 5.9.8.1 5.9.9 5.9.9.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.2.0 6.2.1 6.2.2 6.3.0 6.3.1 6.3.2 6.3.3 6.4.0 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.5.2 6.5.3 6.5.4 6.6.0 6.6.1 6.6.2 6.6.3 6.6.4 6.7.0 6.7.1 6.7.2 6.7.3 6.7.4 6.7.5 6.7.6 6.7.7 6.7.8 6.7.9 6.8.0 6.8.1 6.8.2 6.8.3
advanced-access-manager / Application / Backend / Feature / Extension / Manager.php
advanced-access-manager / Application / Backend / Feature / Extension Last commit date
Manager.php 7 years ago
Manager.php
213 lines
1 <?php
2
3 /**
4 * ======================================================================
5 * LICENSE: This file is subject to the terms and conditions defined in *
6 * file 'license.txt', which is part of this source code package. *
7 * ======================================================================
8 */
9
10 /**
11 * Backend extension manager
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Backend_Feature_Extension_Manager extends AAM_Backend_Feature_Abstract {
17
18 /**
19 *
20 * @var type
21 */
22 protected static $instance = null;
23
24 /**
25 *
26 */
27 public function __construct() {
28 parent::__construct();
29
30 if (AAM_Core_Config::get('core.settings.extensionSupport', true) === false) {
31 AAM_Core_API::reject('backend');
32 }
33 }
34
35 /**
36 *
37 */
38 public function render() {
39 require_once dirname(__FILE__) . '/../../phtml/extensions.phtml';
40 }
41
42 /**
43 * Undocumented function
44 *
45 * @return void
46 */
47 public function check() {
48 AAM::cron();
49
50 return wp_json_encode(array('status' => 'success'));
51 }
52
53 /**
54 * Install an extension
55 *
56 * @param string $storedLicense
57 *
58 * @return string
59 *
60 * @access public
61 */
62 public function install($storedLicense = null) {
63 $repo = AAM_Extension_Repository::getInstance();
64 $license = AAM_Core_Request::post('license', $storedLicense);
65 $package = (object) AAM_Core_Request::post('package');
66
67 $error = $repo->checkDirectory();
68
69 if ($error) {
70 $response = $this->installFailureResponse($error, $package);
71 $repo->storeLicense($package, $license);
72 } elseif (empty($package->content)) { //any unpredictable scenario
73 $response = array(
74 'status' => 'failure',
75 'error' => __('Download failure. Try again or contact us.', AAM_KEY)
76 );
77 } else { //otherwise install the extension
78 $result = $repo->add(base64_decode($package->content));
79 if (is_wp_error($result)) {
80 $response = $this->installFailureResponse(
81 $result->get_error_message(), $package
82 );
83 } else {
84 $response = array('status' => 'success');
85 }
86 $repo->storeLicense($package, $license);
87 }
88
89 return json_encode($response);
90 }
91
92 /**
93 * Update the extension
94 *
95 * @return string
96 *
97 * @access public
98 */
99 public function update() {
100 $id = AAM_Core_Request::post('extension');
101 $licenses = AAM_Core_Compatibility::getLicenseList();
102
103 if (!empty($licenses[$id]['license'])) {
104 $response = $this->install($licenses[$id]['license']);
105 } else {
106 //fallback compatibility
107 $list = AAM_Extension_Repository::getInstance()->getList();
108 if (!empty($list[$id]['license'])) {
109 $response = $this->install($list[$id]['license']);
110 } else {
111 $response = wp_json_encode(array(
112 'status' => 'failure',
113 'error' => __('No valid license key was found.', AAM_KEY)
114 ));
115 }
116 }
117
118 return $response;
119 }
120
121 /**
122 *
123 * @return type
124 */
125 public function deactivate() {
126 AAM_Extension_Repository::getInstance()->updateStatus(
127 AAM_Core_Request::post('extension'),
128 AAM_Extension_Repository::STATUS_INACTIVE
129 );
130
131 return wp_json_encode(array('status' => 'success'));
132 }
133
134 /**
135 *
136 * @return type
137 */
138 public function activate() {
139 AAM_Extension_Repository::getInstance()->updateStatus(
140 AAM_Core_Request::post('extension'),
141 AAM_Extension_Repository::STATUS_INSTALLED
142 );
143
144 return wp_json_encode(array('status' => 'success'));
145 }
146
147 /**
148 *
149 * @return type
150 */
151 public function fixDirectoryIssue() {
152 $dirname = AAM_Extension_Repository::getInstance()->getBasedir();
153 if (file_exists($dirname) === false) {
154 @mkdir($dirname, fileperms( ABSPATH ) & 0777 | 0755, true);
155 }
156
157 return wp_json_encode(array(
158 'status' => (AAM_Extension_Repository::getInstance()->isWriteableDirectory() ? 'success' : 'failed')
159 ));
160 }
161
162 /**
163 *
164 * @param type $type
165 * @return type
166 */
167 public function getList($type) {
168 $response = array();
169
170 foreach(AAM_Extension_Repository::getInstance()->getList() as $item) {
171 if ($item['type'] === $type) {
172 $response[] = $item;
173 }
174 }
175
176 return $response;
177 }
178
179 /**
180 * Install extension failure response
181 *
182 * In case the file system fails, AAM allows to download the extension for
183 * manual installation
184 *
185 * @param string $error
186 * @param stdClass $package
187 *
188 * @return array
189 *
190 * @access protected
191 */
192 protected function installFailureResponse($error, $package) {
193 return array(
194 'status' => 'failure',
195 'error' => $error,
196 'title' => $package->title,
197 'content' => $package->content
198 );
199 }
200
201 /**
202 *
203 * @return AAM_Backend_Feature_Extension_Manager
204 */
205 public static function getInstance() {
206 if (is_null(self::$instance)) {
207 self::$instance = new self;
208 }
209
210 return self::$instance;
211 }
212
213 }