PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 6.0.8
MainWP Dashboard: Self-hosted WordPress Management for Agencies v6.0.8
6.2 6.1.8 6.1.7 6.1.6 6.1.5 6.1.4 6.1.3 6.1.2 6.1.1 6.1 6.0.12 6.0.11 4.6.0.1 5.0 5.0.1 5.0.2 5.0.3 5.0.3.1 5.0.3.2 5.1 5.1.1 5.2 5.2.1 5.2.2 5.3 All 153 releases
mainwp / class / class-mainwp-api-handler.php

class-mainwp-api-handler.php in MainWP Dashboard: Self-hosted WordPress Management for Agencies 6.0.8, at class/class-mainwp-api-handler.php

170 lines 6.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Install, activate and deactivate MainWP Extensions.
4 *
5 * @package MainWP/Dashboard
6 */
7
8 namespace MainWP\Dashboard;
9
10 // Exit if accessed directly.
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13 }
14
15 /**
16 * Class MainWP_API_Handler()
17 *
18 * MainWP API settings page
19 */
20 class MainWP_API_Handler { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR.
21
22 /**
23 * Get Class name.
24 *
25 * @return string __CLASS__.
26 */
27 public static function get_class_name() {
28 return __CLASS__;
29 }
30
31 /**
32 * Check if extension has an update.
33 *
34 * @return mixed $output List of results.
35 *
36 * @uses MainWP_Api_Manager_Plugin_Update::bulk_update_check()
37 * @uses \MainWP\Dashboard\MainWP_Extensions_Handler::get_extensions()
38 */
39 public static function check_exts_upgrade() { // phpcs:ignore -- NOSONAR - complex.
40
41 $extensions = MainWP_Extensions_Handler::get_extensions();
42 $output = array();
43 $check_exts = array();
44 foreach ( $extensions as $ext ) {
45 if ( isset( $ext['activated_key'] ) && 'Activated' === $ext['activated_key'] ) {
46 $args = array();
47 $args['plugin_name'] = $ext['api'];
48 $args['version'] = $ext['version'];
49 $args['product_id'] = $ext['product_id'];
50 $args['api_key'] = $ext['api_key'];
51 $args['instance'] = $ext['instance_id'];
52 $args['software_version'] = $ext['software_version'];
53 $check_exts[ $args['plugin_name'] ] = $args;
54 }
55 }
56
57 if ( empty( $check_exts ) ) {
58 return false;
59 }
60
61 $i = 0;
62 $count = 0;
63 $max_check = 6;
64 $total_check = count( $check_exts );
65 $bulk_checks = array();
66
67 foreach ( $check_exts as $ext_name => $ext ) {
68 $bulk_checks[ $ext_name ] = $ext;
69 ++$i;
70 ++$count;
71 if ( $count === $max_check || $i === $total_check ) {
72 $results = MainWP_Api_Manager_Plugin_Update::instance()->bulk_update_check( $bulk_checks ); // bulk check response array of info.
73 if ( is_array( $results ) && ! empty( $results ) ) {
74 foreach ( $results as $slug => $response ) {
75 if ( ! is_array( $response ) || ! isset( $response['new_version'] ) ) {
76 continue;
77 }
78 $rslt = new \stdClass();
79 $rslt->slug = $slug;
80 $rslt->new_version = $response['new_version'];
81 $rslt->package = $response['package'];
82 $rslt->key_status = '';
83 $rslt->apiManager = 1;
84
85 if ( isset( $response['errors'] ) ) {
86 $rslt->error = $response['errors'];
87 }
88 $output[ $slug ] = $rslt;
89 }
90 }
91 $count = 0;
92 $bulk_checks = array();
93 sleep( 3 );
94 }
95 }
96 return $output;
97 }
98
99 /**
100 * Check extension information for an update.
101 *
102 * @param string $pSlug Extension slug.
103 *
104 * @return array $rslt An array containing update information.
105 *
106 * @uses \MainWP\Dashboard\MainWP_Api_Manager::update_check()
107 * @uses \MainWP\Dashboard\MainWP_Extensions_Handler::get_extensions()
108 */
109 public static function get_upgrade_information( $pSlug ) {
110
111 $extensions = MainWP_Extensions_Handler::get_extensions();
112 $rslt = null;
113 foreach ( $extensions as $ext ) {
114 if ( isset( $ext['api'] ) && ( $pSlug === $ext['api'] ) && isset( $ext['apiManager'] ) && ! empty( $ext['apiManager'] ) ) {
115 $args = array();
116 $args['plugin_name'] = $ext['api'];
117 $args['version'] = $ext['version'];
118 $args['product_id'] = $ext['product_id'];
119 $args['api_key'] = $ext['api_key'];
120 $args['instance'] = $ext['instance_id'];
121 $args['software_version'] = $ext['software_version'];
122 $response = MainWP_Api_Manager_Plugin_Update::instance()->update_check( $args );
123
124 if ( ! empty( $response ) ) {
125 $rslt = new \stdClass();
126 $rslt->slug = $ext['api'];
127 $rslt->new_version = $response->new_version;
128 $rslt->package = $response->package;
129 $rslt->key_status = '';
130 $rslt->apiManager = 1;
131 if ( isset( $response->errors ) ) {
132 $rslt->error = $response->errors;
133 }
134 }
135 break;
136 }
137 }
138 return $rslt;
139 }
140
141 /**
142 * Get extension information.
143 *
144 * @param string $pSlug Extension slug.
145 *
146 * @return array $rslt An array containing extension information.
147 *
148 * @uses \MainWP\Dashboard\MainWP_Api_Manager::request_extension_information()
149 * @uses \MainWP\Dashboard\MainWP_Extensions_Handler::get_extensions()
150 */
151 public static function get_update_information( $pSlug ) {
152 $extensions = MainWP_Extensions_Handler::get_extensions();
153 $rslt = null;
154 foreach ( $extensions as $ext ) {
155 if ( isset( $ext['api'] ) && $pSlug === $ext['api'] && isset( $ext['apiManager'] ) && ! empty( $ext['apiManager'] ) ) {
156 $args = array();
157 $args['plugin_name'] = $ext['api'];
158 $args['version'] = $ext['version'];
159 $args['product_id'] = $ext['product_id'];
160 $args['api_key'] = $ext['api_key'];
161 $args['instance'] = $ext['instance_id'];
162 $args['software_version'] = $ext['software_version'];
163 $rslt = MainWP_Api_Manager::instance()->request_extension_information( $args );
164 break;
165 }
166 }
167 return $rslt;
168 }
169 }
170