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