PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.3
Advanced Access Manager – Access Governance for WordPress v5.3
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 8 years ago
Manager.php
207 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 render() {
28 require_once(dirname(__FILE__) . '/../../phtml/extensions.phtml');
29 }
30
31 /**
32 * Undocumented function
33 *
34 * @return void
35 */
36 public function check() {
37 AAM::cron();
38
39 return json_encode(array('status' => 'success'));
40 }
41
42 /**
43 * Install an extension
44 *
45 * @param string $storedLicense
46 *
47 * @return string
48 *
49 * @access public
50 */
51 public function install($storedLicense = null) {
52 $repo = AAM_Extension_Repository::getInstance();
53 $license = AAM_Core_Request::post('license', $storedLicense);
54
55 //download the extension from the server first
56 $package = AAM_Core_Server::download($license);
57
58 if (is_wp_error($package)) {
59 $manually = __('You may try to install extension manually.', AAM_KEY);
60 $response = array(
61 'status' => 'failure',
62 'error' => strip_tags($package->get_error_message()) . ' ' . $manually
63 );
64 }elseif ($error = $repo->checkDirectory()) {
65 $response = $this->installFailureResponse($error, $package);
66 $repo->storeLicense($package, $license);
67 } elseif (empty($package->content)) { //any unpredictable scenario
68 $response = array(
69 'status' => 'failure',
70 'error' => 'Download failure. Please try again or contact us.'
71 );
72 } else { //otherwise install the extension
73 $result = $repo->add(base64_decode($package->content));
74 if (is_wp_error($result)) {
75 $response = $this->installFailureResponse(
76 $result->get_error_message(), $package
77 );
78 } else {
79 $response = array('status' => 'success');
80 }
81 $repo->storeLicense($package, $license);
82 }
83
84 return json_encode($response);
85 }
86
87 /**
88 * Update the extension
89 *
90 * @return string
91 *
92 * @access public
93 */
94 public function update() {
95 $id = AAM_Core_Request::post('extension');
96 $licenses = AAM_Core_Compatibility::getLicenseList();
97
98 if (!empty($licenses[$id]['license'])) {
99 $response = $this->install($licenses[$id]['license']);
100 } else {
101 //fallback compatibility
102 $list = AAM_Extension_Repository::getInstance()->getList();
103 if (!empty($list[$id]['license'])) {
104 $response = $this->install($list[$id]['license']);
105 } else {
106 $response = json_encode(array(
107 'status' => 'failure',
108 'error' => __('Enter license key to update extension.', AAM_KEY)
109 ));
110 }
111 }
112
113 return $response;
114 }
115
116 /**
117 *
118 * @return type
119 */
120 public function deactivate() {
121 AAM_Extension_Repository::getInstance()->updateStatus(
122 AAM_Core_Request::post('extension'),
123 AAM_Extension_Repository::STATUS_INACTIVE
124 );
125
126 return json_encode(array('status' => 'success'));
127 }
128
129 /**
130 *
131 * @return type
132 */
133 public function activate() {
134 AAM_Extension_Repository::getInstance()->updateStatus(
135 AAM_Core_Request::post('extension'),
136 AAM_Extension_Repository::STATUS_INSTALLED
137 );
138
139 return json_encode(array('status' => 'success'));
140 }
141
142 /**
143 *
144 * @param type $type
145 * @return type
146 */
147 public function getList($type) {
148 $response = array();
149
150 foreach(AAM_Extension_Repository::getInstance()->getList() as $item) {
151 if ($item['type'] == $type) {
152 $response[] = $item;
153 }
154 }
155
156 return $response;
157 }
158
159 /**
160 *
161 * @return type
162 */
163 public function canShowLicense() {
164 $result = true;
165
166 if (AAM_Core_API::capabilityExists('aam_display_license')) {
167 $result = !empty(AAM::getUser()->allcaps['aam_display_license']);
168 }
169
170 return $result;
171 }
172
173 /**
174 * Install extension failure response
175 *
176 * In case the file system fails, AAM allows to download the extension for
177 * manual installation
178 *
179 * @param string $error
180 * @param stdClass $package
181 *
182 * @return array
183 *
184 * @access protected
185 */
186 protected function installFailureResponse($error, $package) {
187 return array(
188 'status' => 'failure',
189 'error' => $error,
190 'title' => $package->title,
191 'content' => $package->content
192 );
193 }
194
195 /**
196 *
197 * @return AAM_Backend_Feature_Extension_Manager
198 */
199 public static function getInstance() {
200 if (is_null(self::$instance)) {
201 self::$instance = new self;
202 }
203
204 return self::$instance;
205 }
206
207 }