PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 4.0
Advanced Access Manager – Access Governance for WordPress v4.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.php
advanced-access-manager / Application / Backend / Feature Last commit date
Abstract.php 9 years ago Capability.php 9 years ago Contact.php 9 years ago Extension.php 9 years ago LoginRedirect.php 9 years ago Menu.php 9 years ago Metabox.php 9 years ago Post.php 9 years ago Redirect.php 9 years ago Role.php 9 years ago Security.php 9 years ago Teaser.php 9 years ago User.php 9 years ago Utility.php 9 years ago
Extension.php
183 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 extends AAM_Backend_Feature_Abstract {
17
18 /**
19 * @inheritdoc
20 */
21 public static function getAccessOption() {
22 return 'feature.extension.capability';
23 }
24
25 /**
26 * @inheritdoc
27 */
28 public static function getTemplate() {
29 return 'extension.phtml';
30 }
31
32 /**
33 * Install an extension
34 *
35 * @param string $storedLicense
36 *
37 * @return string
38 *
39 * @access public
40 */
41 public function install($storedLicense = null) {
42 $repo = AAM_Extension_Repository::getInstance();
43 $license = AAM_Core_Request::post('license', $storedLicense);
44
45 //download the extension from the server first
46 $package = AAM_Extension_Server::download($license);
47
48 if (is_wp_error($package)) {
49 $response = array(
50 'status' => 'failure', 'error' => $package->get_error_message()
51 );
52 }elseif ($error = $repo->checkDirectory()) {
53 $response = $this->installFailureResponse($error, $package);
54 $repo->storeLicense($package, $license);
55 } elseif (empty($package->content)) { //any unpredictable scenario
56 $response = array(
57 'status' => 'failure',
58 'error' => 'Download failure. Please try again or contact us.'
59 );
60 } else { //otherwise install the extension
61 $result = $repo->add(base64_decode($package->content));
62 if (is_wp_error($result)) {
63 $response = $this->installFailureResponse(
64 $result->get_error_message(), $package
65 );
66 } else {
67 $response = array('status' => 'success');
68 }
69 $repo->storeLicense($package, $license);
70 }
71
72 return json_encode($response);
73 }
74
75 /**
76 * Update the extension
77 *
78 * @return string
79 *
80 * @access public
81 */
82 public function update() {
83 $extension = AAM_Core_Request::post('extension');
84 $list = AAM_Core_Compatibility::getExtensionList();
85
86 if (!empty($list[$extension]['license'])) {
87 $response = $this->install($list[$extension]['license']);
88 } else {
89 $response = json_encode(array(
90 'status' => 'failure',
91 'error' => __('License key is missing.', AAM_KEY)
92 ));
93 }
94
95 return $response;
96 }
97
98 /**
99 *
100 * @return type
101 */
102 public function check() {
103 AAM_Extension_Repository::getInstance()->check();
104
105 return json_encode(array('status' => 'success'));
106 }
107
108 public function getList($type) {
109 $response = array();
110
111 foreach(AAM_Extension_Repository::getInstance()->getList() as $item) {
112 if ($item['type'] == $type) {
113 $response[] = $item;
114 }
115 }
116
117 return $response;
118 }
119
120 /**
121 * Install extension failure response
122 *
123 * In case the file system fails, AAM allows to download the extension for
124 * manual installation
125 *
126 * @param string $error
127 * @param stdClass $package
128 *
129 * @return array
130 *
131 * @access protected
132 */
133 protected function installFailureResponse($error, $package) {
134 return array(
135 'status' => 'failure',
136 'error' => $error,
137 'title' => $package->title,
138 'content' => $package->content
139 );
140 }
141
142 /**
143 * Register Extension feature
144 *
145 * @return void
146 *
147 * @access public
148 */
149 public static function register() {
150 if (is_main_site()) {
151 $cap = AAM_Core_Config::get(self::getAccessOption(), 'administrator');
152
153 AAM_Backend_Feature::registerFeature((object) array(
154 'uid' => 'extension',
155 'position' => 999,
156 'title' => __('Extensions', AAM_KEY),
157 'capability' => $cap,
158 'notification' => self::getNotification(),
159 'subjects' => array(
160 'AAM_Core_Subject_Role'
161 ),
162 'view' => __CLASS__
163 ));
164 }
165 }
166
167 /**
168 *
169 * @return int
170 */
171 protected static function getNotification() {
172 $count = 0;
173
174 foreach(AAM_Extension_Repository::getInstance()->getList() as $extension) {
175 if ($extension['status'] == AAM_Extension_Repository::STATUS_UPDATE) {
176 $count++;
177 }
178 }
179
180 return ($count ? $count : '');
181 }
182
183 }