PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 4.4.1
MainWP Dashboard: Self-hosted WordPress Management for Agencies v4.4.1
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
← All changes | class/class-mainwp-common-handler.php +118 -185 5.2.24.4.1 View file →
@@ -13,222 +13,155 @@
13 13 * Class MainWP_Common_Handler
14 14 *
15 15 * @package MainWP\Dashboard
16 16 */
17 -class MainWP_Common_Handler { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR.
17 +class MainWP_Common_Handler {
18 18
19 - /**
20 - * Protected static variable to hold the single instance of the class.
21 - *
22 - * @var mixed Default null
23 - */
24 - private static $instance = null;
19 + /**
20 + * Protected static variable to hold the single instance of the class.
21 + *
22 + * @var mixed Default null
23 + */
24 + private static $instance = null;
25 25
26 - /**
27 - * Method instance()
28 - *
29 - * Create public static instance.
30 - *
31 - * @static
32 - * @return static::$instance
33 - */
34 - public static function instance() {
35 - if ( null === static::$instance ) {
36 - static::$instance = new self();
37 - }
38 - return static::$instance;
39 - }
26 + /**
27 + * Method instance()
28 + *
29 + * Create public static instance.
30 + *
31 + * @static
32 + * @return self::$instance
33 + */
34 + public static function instance() {
35 + if ( null == self::$instance ) {
36 + self::$instance = new self();
37 + }
38 + return self::$instance;
39 + }
40 40
41 - /**
42 - * Method sites_available_updates_count()
43 - *
44 - * Returns the number of available udpates for sites.
45 - *
46 - * @return object $response An object that contains the return data and status of the API request.
47 - */
48 - public function sites_available_updates_count() { // phpcs:ignore -- NOSONAR - complex function.
49 - $is_staging = 'no';
41 + /**
42 + * Method sites_available_updates_count()
43 + *
44 + * Handle get sites available updates count.
45 + *
46 + * @return object $response An object that contains the return data and status of the API request.
47 + */
48 + public function sites_available_updates_count() { // phpcs:ignore -- complex function.
49 + $is_staging = 'no';
50 + $sql = MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, false, array( 'premium_upgrades', 'favi_icon' ), $is_staging );
50 51
51 - $db_updater_count = false;
52 - $total_plugin_db_upgrades = 0;
53 - $supported_db_updater_plugins = array();
52 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
53 + $websites = MainWP_DB::instance()->query( $sql );
54 54
55 - $get_fields = array( 'premium_upgrades', 'favi_icon', 'ignored_wp_upgrades' );
56 - $custom_fields = apply_filters( 'mainwp_available_updates_count_custom_fields_data', array(), 'updates_count' );
55 + $mainwp_show_language_updates = get_option( 'mainwp_show_language_updates', 1 );
57 56
58 - if ( is_array( $custom_fields ) && 1 === count( $custom_fields ) && in_array( 'plugin_db_upgrades', $custom_fields ) ) {
59 - $get_fields = array_merge( $get_fields, $custom_fields );
60 - $db_updater_count = true;
61 - $supported_db_updater_plugins = apply_filters( 'mainwp_database_updater_supported_plugins', array() );
62 - }
57 + $total_wp_upgrades = 0;
58 + $total_plugin_upgrades = 0;
59 + $total_translation_upgrades = 0;
60 + $total_theme_upgrades = 0;
63 61
64 - $sql = MainWP_DB::instance()->get_sql_websites_for_current_user( false, null, 'wp.url', false, false, null, false, $get_fields, $is_staging );
62 + MainWP_DB::data_seek( $websites, 0 );
65 63
66 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
64 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
65 + $wp_upgrades = MainWP_DB::instance()->get_website_option( $website, 'wp_upgrades' );
66 + $wp_upgrades = ( '' != $wp_upgrades ) ? json_decode( $wp_upgrades, true ) : array();
67 67
68 - $decodedIgnoredCores = ! empty( $userExtension->ignored_wp_upgrades ) ? json_decode( $userExtension->ignored_wp_upgrades, true ) : array();
69 - if ( ! is_array( $decodedIgnoredCores ) ) {
70 - $decodedIgnoredCores = array();
71 - }
68 + if ( $website->is_ignoreCoreUpdates ) {
69 + $wp_upgrades = array();
70 + }
72 71
73 - $websites = MainWP_DB::instance()->query( $sql );
72 + if ( is_array( $wp_upgrades ) && count( $wp_upgrades ) > 0 ) {
73 + $total_wp_upgrades ++;
74 + }
74 75
75 - $mainwp_show_language_updates = get_option( 'mainwp_show_language_updates', 1 );
76 + $translation_upgrades = json_decode( $website->translation_upgrades, true );
76 77
77 - $total_wp_upgrades = 0;
78 - $total_plugin_upgrades = 0;
79 - $total_translation_upgrades = 0;
80 - $total_theme_upgrades = 0;
78 + $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
79 + if ( $website->is_ignorePluginUpdates ) {
80 + $plugin_upgrades = array();
81 + }
81 82
82 - MainWP_DB::data_seek( $websites, 0 );
83 + $theme_upgrades = json_decode( $website->theme_upgrades, true );
84 + if ( $website->is_ignoreThemeUpdates ) {
85 + $theme_upgrades = array();
86 + }
83 87
84 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
85 - $wp_upgrades = ! empty( $website->wp_upgrades ) ? json_decode( $website->wp_upgrades, true ) : array();
86 - $ignored_core_upgrades = ! empty( $website->ignored_wp_upgrades ) ? json_decode( $website->ignored_wp_upgrades, true ) : array();
88 + $decodedPremiumUpgrades = MainWP_DB::instance()->get_website_option( $website, 'premium_upgrades' );
89 + $decodedPremiumUpgrades = ( '' != $decodedPremiumUpgrades ) ? json_decode( $decodedPremiumUpgrades, true ) : array();
87 90
88 - if ( $website->is_ignoreCoreUpdates || MainWP_Common_Functions::instance()->is_ignored_updates( $wp_upgrades, $ignored_core_upgrades, 'core' ) || MainWP_Common_Functions::instance()->is_ignored_updates( $wp_upgrades, $decodedIgnoredCores, 'core' ) ) {
89 - $wp_upgrades = array();
90 - }
91 + if ( is_array( $decodedPremiumUpgrades ) ) {
92 + foreach ( $decodedPremiumUpgrades as $crrSlug => $premiumUpgrade ) {
93 + $premiumUpgrade['premium'] = true;
91 94
92 - if ( is_array( $wp_upgrades ) && ! empty( $wp_upgrades ) ) {
93 - ++$total_wp_upgrades;
94 - }
95 + if ( 'plugin' == $premiumUpgrade['type'] ) {
96 + if ( ! is_array( $plugin_upgrades ) ) {
97 + $plugin_upgrades = array();
98 + }
99 + if ( ! $website->is_ignorePluginUpdates ) {
95 100
96 - $translation_upgrades = json_decode( $website->translation_upgrades, true );
101 + $premiumUpgrade = array_filter( $premiumUpgrade );
102 + if ( ! isset( $plugin_upgrades[ $crrSlug ] ) ) {
103 + $plugin_upgrades[ $crrSlug ] = array();
104 + }
97 105
98 - $plugin_upgrades = json_decode( $website->plugin_upgrades, true );
99 - if ( $website->is_ignorePluginUpdates ) {
100 - $plugin_upgrades = array();
101 - }
106 + $plugin_upgrades[ $crrSlug ] = array_merge( $plugin_upgrades[ $crrSlug ], $premiumUpgrade );
107 + }
108 + } elseif ( 'theme' == $premiumUpgrade['type'] ) {
109 + if ( ! is_array( $theme_upgrades ) ) {
110 + $theme_upgrades = array();
111 + }
112 + if ( ! $website->is_ignoreThemeUpdates ) {
113 + $theme_upgrades[ $crrSlug ] = $premiumUpgrade;
114 + }
115 + }
116 + }
117 + }
102 118
103 - $theme_upgrades = json_decode( $website->theme_upgrades, true );
104 - if ( $website->is_ignoreThemeUpdates ) {
105 - $theme_upgrades = array();
106 - }
119 + if ( is_array( $translation_upgrades ) ) {
120 + $total_translation_upgrades += count( $translation_upgrades );
121 + }
107 122
108 - $decodedPremiumUpgrades = MainWP_DB::instance()->get_website_option( $website, 'premium_upgrades' );
109 - $decodedPremiumUpgrades = ! empty( $decodedPremiumUpgrades ) ? json_decode( $decodedPremiumUpgrades, true ) : array();
123 + if ( is_array( $plugin_upgrades ) ) {
124 + $ignored_plugins = json_decode( $website->ignored_plugins, true );
125 + if ( is_array( $ignored_plugins ) ) {
126 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
127 + }
110 128
111 - if ( is_array( $decodedPremiumUpgrades ) ) {
112 - foreach ( $decodedPremiumUpgrades as $crrSlug => $premiumUpgrade ) {
113 - $premiumUpgrade['premium'] = true;
129 + $ignored_plugins = json_decode( $userExtension->ignored_plugins, true );
130 + if ( is_array( $ignored_plugins ) ) {
131 + $plugin_upgrades = array_diff_key( $plugin_upgrades, $ignored_plugins );
132 + }
114 133
115 - if ( 'plugin' === $premiumUpgrade['type'] ) {
116 - if ( ! is_array( $plugin_upgrades ) ) {
117 - $plugin_upgrades = array();
118 - }
119 - if ( ! $website->is_ignorePluginUpdates ) {
134 + $total_plugin_upgrades += count( $plugin_upgrades );
135 + }
120 136
121 - $premiumUpgrade = array_filter( $premiumUpgrade );
122 - if ( ! isset( $plugin_upgrades[ $crrSlug ] ) ) {
123 - $plugin_upgrades[ $crrSlug ] = array();
124 - }
137 + if ( is_array( $theme_upgrades ) ) {
138 + $ignored_themes = json_decode( $website->ignored_themes, true );
139 + if ( is_array( $ignored_themes ) ) {
140 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
141 + }
125 142
126 - $plugin_upgrades[ $crrSlug ] = array_merge( $plugin_upgrades[ $crrSlug ], $premiumUpgrade );
127 - }
128 - } elseif ( 'theme' === $premiumUpgrade['type'] ) {
129 - if ( ! is_array( $theme_upgrades ) ) {
130 - $theme_upgrades = array();
131 - }
132 - if ( ! $website->is_ignoreThemeUpdates ) {
133 - $theme_upgrades[ $crrSlug ] = $premiumUpgrade;
134 - }
135 - }
136 - }
137 - }
143 + $ignored_themes = json_decode( $userExtension->ignored_themes, true );
144 + if ( is_array( $ignored_themes ) ) {
145 + $theme_upgrades = array_diff_key( $theme_upgrades, $ignored_themes );
146 + }
138 147
139 - if ( is_array( $translation_upgrades ) ) {
140 - $total_translation_upgrades += count( $translation_upgrades );
141 - }
148 + $total_theme_upgrades += count( $theme_upgrades );
149 + }
150 + }
142 151
143 - if ( is_array( $plugin_upgrades ) ) {
144 - $ignored_plugins = json_decode( $website->ignored_plugins, true );
145 - if ( is_array( $ignored_plugins ) ) {
146 - $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins );
147 - }
152 + // WP Upgrades part.
153 + $total_upgrades = $total_wp_upgrades + $total_plugin_upgrades + $total_theme_upgrades;
148 154
149 - $ignored_plugins = json_decode( $userExtension->ignored_plugins, true );
150 - if ( is_array( $ignored_plugins ) ) {
151 - $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins );
152 - }
155 + // to fix incorrect total updates.
156 + if ( $mainwp_show_language_updates ) {
157 + $total_upgrades += $total_translation_upgrades;
158 + }
153 159
154 - $total_plugin_upgrades += count( $plugin_upgrades );
155 - }
160 + MainWP_DB::free_result( $websites );
156 161
157 - if ( is_array( $theme_upgrades ) ) {
158 - $ignored_themes = json_decode( $website->ignored_themes, true );
159 - if ( is_array( $ignored_themes ) ) {
160 - $theme_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $theme_upgrades, $ignored_themes );
161 - }
162 + return $total_upgrades;
163 + }
162 164
163 - $ignored_themes = json_decode( $userExtension->ignored_themes, true );
164 - if ( is_array( $ignored_themes ) ) {
165 - $theme_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $theme_upgrades, $ignored_themes );
166 - }
167 -
168 - $total_theme_upgrades += count( $theme_upgrades );
169 - }
170 -
171 - if ( $db_updater_count ) {
172 -
173 - $plugin_db_upgrades = ! empty( $website->plugin_db_upgrades ) ? json_decode( $website->plugin_db_upgrades, true ) : array();
174 - if ( $website->is_ignorePluginUpdates ) {
175 - $plugin_db_upgrades = array();
176 - }
177 -
178 - if ( is_array( $plugin_db_upgrades ) && ! $website->is_ignorePluginUpdates ) {
179 - $_ignored_plugins = ! empty( $website->ignored_plugins ) ? json_decode( $website->ignored_plugins, true ) : array();
180 - if ( is_array( $_ignored_plugins ) ) {
181 - $plugin_db_upgrades = array_diff_key( $plugin_db_upgrades, $_ignored_plugins );
182 - }
183 -
184 - $_ignored_plugins = ! empty( $userExtension->ignored_plugins ) ? json_decode( $userExtension->ignored_plugins, true ) : array();
185 - if ( is_array( $_ignored_plugins ) ) {
186 - $plugin_db_upgrades = array_diff_key( $plugin_db_upgrades, $_ignored_plugins );
187 - }
188 -
189 - // supported the WC plugin.
190 - if ( is_array( $plugin_db_upgrades ) ) {
191 - foreach ( $supported_db_updater_plugins as $supp_slug ) {
192 - if ( isset( $plugin_db_upgrades[ $supp_slug ] ) ) {
193 - ++$total_plugin_db_upgrades;
194 - }
195 - }
196 - }
197 - }
198 - }
199 - }
200 -
201 - // WP Upgrades part.
202 - $total_upgrades = $total_wp_upgrades + $total_plugin_upgrades + $total_theme_upgrades;
203 -
204 - // to fix incorrect total updates.
205 - if ( $mainwp_show_language_updates ) {
206 - $total_upgrades += $total_translation_upgrades;
207 - $data = array(
208 - 'total' => $total_upgrades,
209 - 'wp' => $total_wp_upgrades,
210 - 'plugins' => $total_plugin_upgrades,
211 - 'themes' => $total_theme_upgrades,
212 - 'translations' => $total_translation_upgrades,
213 - );
214 - } else {
215 - $data = array(
216 - 'total' => $total_upgrades,
217 - 'wp' => $total_wp_upgrades,
218 - 'plugins' => $total_plugin_upgrades,
219 - 'themes' => $total_theme_upgrades,
220 - 'translations' => 0,
221 - );
222 - }
223 -
224 - if ( $db_updater_count ) {
225 - $data['db_updater_count'] = $total_plugin_db_upgrades;
226 - $data['total'] += $total_plugin_db_upgrades;
227 - }
228 - MainWP_DB::free_result( $websites );
229 -
230 - return $data;
231 - }
232 165 }
233 166
234 167 // End of class.