PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 4.3
MainWP Dashboard: Self-hosted WordPress Management for Agencies v4.3
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-sync.php +556 -585 5.2.24.3 View file →
@@ -13,662 +13,633 @@
13 13 * Class MainWP_Sync
14 14 *
15 15 * @package MainWP\Dashboard
16 16 */
17 -class MainWP_Sync { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR.
17 +class MainWP_Sync {
18 18
19 19
20 - /**
21 - * Method sync_website()
22 - *
23 - * Sync Child Site.
24 - *
25 - * @param object $website object.
26 - * @param bool $clear_session to run the ending session or not.
27 - *
28 - * @return bool sync result.
29 - */
30 - public static function sync_website( $website, $clear_session = true ) {
31 - if ( ! is_object( $website ) ) {
32 - return false;
33 - }
34 - MainWP_DB::instance()->update_website_sync_values( $website->id, array( 'dtsSyncStart' => time() ) );
35 - return static::sync_site( $website, false, true, $clear_session );
36 - }
20 + /**
21 + * Method sync_website()
22 + *
23 + * Sync Child Site.
24 + *
25 + * @param object $website object.
37 26
38 - /**
39 - * Method sync_site()
40 - *
41 - * @param mixed $pWebsite Null|userid.
42 - * @param bool $pForceFetch Check if a fourced Sync.
43 - * @param bool $pAllowDisconnect Check if allowed to disconect.
44 - * @param bool $clear_session to run the ending session or not.
45 - *
46 - * @return bool sync_information_array
47 - *
48 - * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension_by_user_id()
49 - * @uses \MainWP\Dashboard\MainWP_DB::query()
50 - * @uses \MainWP\Dashboard\MainWP_DB::update_website_option()
51 - * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
52 - * @uses \MainWP\Dashboard\MainWP_DB::free_result()
53 - * @uses \MainWP\Dashboard\MainWP_Exception
54 - * @uses \MainWP\Dashboard\MainWP_System_Utility::get_primary_backup()
55 - * @uses \MainWP\Dashboard\MainWP_Utility::end_session()
56 - */
57 - public static function sync_site( &$pWebsite = null, $pForceFetch = false, $pAllowDisconnect = true, $clear_session = true ) { // phpcs:ignore -- NOSONAR - complexity method.
27 + * @return bool sync result.
28 + */
29 + public static function sync_website( $website ) {
30 + if ( ! is_object( $website ) ) {
31 + return false;
32 + }
33 + MainWP_DB::instance()->update_website_sync_values( $website->id, array( 'dtsSyncStart' => time() ) );
34 + return self::sync_site( $website );
35 + }
58 36
59 - // to support demo data.
60 - if ( MainWP_Demo_Handle::get_instance()->is_demo_website( $pWebsite ) ) {
61 - return MainWP_Demo_Handle::get_instance()->handle_action_demo( $pWebsite, 'sync_site' );
62 - }
37 + /**
38 + * Method sync_site()
39 + *
40 + * @param mixed $pWebsite Null|userid.
41 + * @param bool $pForceFetch Check if a fourced Sync.
42 + * @param bool $pAllowDisconnect Check if allowed to disconect.
43 + *
44 + * @return bool sync_information_array
45 + *
46 + * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension_by_user_id()
47 + * @uses \MainWP\Dashboard\MainWP_DB::query()
48 + * @uses \MainWP\Dashboard\MainWP_DB::update_website_option()
49 + * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
50 + * @uses \MainWP\Dashboard\MainWP_DB::free_result()
51 + * @uses \MainWP\Dashboard\MainWP_Exception
52 + * @uses \MainWP\Dashboard\MainWP_System_Utility::get_primary_backup()
53 + * @uses \MainWP\Dashboard\MainWP_Utility::end_session()
54 + */
55 + public static function sync_site( &$pWebsite = null, $pForceFetch = false, $pAllowDisconnect = true ) {
56 + if ( null == $pWebsite ) {
57 + return false;
58 + }
59 + $userExtension = MainWP_DB_Common::instance()->get_user_extension_by_user_id( $pWebsite->userid );
60 + if ( null == $userExtension ) {
61 + return false;
62 + }
63 63
64 - if ( null === $pWebsite ) {
65 - return false;
66 - }
67 - $userExtension = MainWP_DB_Common::instance()->get_user_extension_by_user_id( $pWebsite->userid );
68 - if ( null === $userExtension ) {
69 - return false;
70 - }
64 + MainWP_Utility::end_session();
71 65
72 - if ( $clear_session ) {
73 - MainWP_Utility::end_session();
74 - }
66 + try {
75 67
76 - try {
68 + /**
69 + * Filter: mainwp_clone_enabled
70 + *
71 + * Filters whether the Clone feature is enabled or disabled.
72 + *
73 + * @since Unknown
74 + */
75 + $cloneEnabled = apply_filters( 'mainwp_clone_enabled', false );
76 + $cloneSites = array();
77 + if ( $cloneEnabled ) {
78 + $disallowedCloneSites = get_option( 'mainwp_clone_disallowedsites' );
79 + if ( false === $disallowedCloneSites ) {
80 + $disallowedCloneSites = array();
81 + }
82 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user() );
83 + if ( $websites ) {
84 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
85 + if ( in_array( $website->id, $disallowedCloneSites ) ) {
86 + continue;
87 + }
88 + if ( $website->id == $pWebsite->id ) {
89 + continue;
90 + }
77 91
78 - /**
79 - * Filter: mainwp_clone_enabled
80 - *
81 - * Filters whether the Clone feature is enabled or disabled.
82 - *
83 - * @since Unknown
84 - */
85 - $cloneEnabled = apply_filters( 'mainwp_clone_enabled', false );
86 - $cloneSites = array();
92 + $cloneSites[ $website->id ] = array(
93 + 'name' => $website->name,
94 + 'url' => $website->url,
95 + 'extauth' => $website->extauth,
96 + 'size' => $website->totalsize,
97 + 'connect_admin' => $website->adminname,
98 + );
99 + }
100 + MainWP_DB::free_result( $websites );
101 + }
102 + }
87 103
88 - $disallowed_current_site = false;
104 + $primaryBackup = MainWP_System_Utility::get_primary_backup();
89 105
90 - if ( $cloneEnabled ) {
91 - $disallowedCloneSites = get_option( 'mainwp_clone_disallowedsites' );
92 - if ( false === $disallowedCloneSites ) {
93 - $disallowedCloneSites = array();
94 - }
95 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user() );
96 - if ( $websites ) {
97 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
98 - if ( in_array( $website->id, $disallowedCloneSites ) ) {
99 - continue;
100 - }
101 - if ( (int) $website->id === (int) $pWebsite->id ) {
102 - continue;
103 - }
106 + $othersData = apply_filters_deprecated( 'mainwp-sync-others-data', array( array(), $pWebsite ), '4.0.7.2', 'mainwp_sync_others_data' ); // @deprecated Use 'mainwp_sync_others_data' instead.
104 107
105 - $cloneSites[ $website->id ] = array(
106 - 'name' => $website->name,
107 - 'url' => $website->url,
108 - 'extauth' => $website->extauth,
109 - 'size' => $website->totalsize,
110 - 'connect_admin' => $website->adminname,
111 - );
112 - }
113 - MainWP_DB::free_result( $websites );
114 - }
115 - $disallowed_current_site = in_array( $pWebsite->id, $disallowedCloneSites ) ? true : false;
116 - }
108 + /**
109 + * Filter: mainwp_sync_others_data
110 + *
111 + * Filters additional data in the sync request. Allows extensions or 3rd party plugins to hook data to the sync request.
112 + *
113 + * @param object $pWebsite Object contaning child site data.
114 + *
115 + * @since Unknown
116 + *
117 + * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
118 + */
119 + $othersData = apply_filters( 'mainwp_sync_others_data', $othersData, $pWebsite );
117 120
118 - $primaryBackup = MainWP_System_Utility::get_primary_backup();
121 + $saved_days_number = apply_filters( 'minwp_site_actions_saved_days_number', 30 );
119 122
120 - $othersData = apply_filters_deprecated( 'mainwp-sync-others-data', array( array(), $pWebsite ), '4.0.7.2', 'mainwp_sync_others_data' ); // @deprecated Use 'mainwp_sync_others_data' instead. NOSONAR - not IP.
123 + $information = MainWP_Connect::fetch_url_authed(
124 + $pWebsite,
125 + 'stats',
126 + array(
127 + 'optimize' => ( ( get_option( 'mainwp_optimize', 0 ) == 1 ) ? 1 : 0 ),
128 + 'cloneSites' => ( ! $cloneEnabled ? 0 : rawurlencode( wp_json_encode( $cloneSites ) ) ),
129 + 'othersData' => wp_json_encode( $othersData ),
130 + 'server' => get_admin_url(),
131 + 'numberdaysOutdatePluginTheme' => get_option( 'mainwp_numberdays_Outdate_Plugin_Theme', 365 ),
132 + 'primaryBackup' => $primaryBackup,
133 + 'siteId' => $pWebsite->id,
134 + 'child_actions_saved_days_number' => intval( $saved_days_number ),
135 + ),
136 + true,
137 + $pForceFetch
138 + );
139 + $return = self::sync_information_array( $pWebsite, $information, '', 1, false, $pAllowDisconnect );
121 140
122 - /**
123 - * Filter: mainwp_sync_others_data
124 - *
125 - * Filters additional data in the sync request. Allows extensions or 3rd party plugins to hook data to the sync request.
126 - *
127 - * @param object $pWebsite Object contaning child site data.
128 - *
129 - * @since Unknown
130 - *
131 - * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
132 - */
133 - $othersData = apply_filters( 'mainwp_sync_others_data', $othersData, $pWebsite );
141 + return $return;
142 + } catch ( MainWP_Exception $e ) {
143 + $sync_errors = '';
144 + $check_result = 1;
134 145
135 - $saved_days_number = apply_filters( 'mainwp_site_actions_saved_days_number', 30 );
146 + if ( $e->getMessage() == 'HTTPERROR' ) {
147 + $sync_errors = __( 'HTTP error', 'mainwp' ) . ( $e->get_message_extra() != null ? ' - ' . $e->get_message_extra() : '' );
148 + $check_result = - 1;
149 + } elseif ( $e->getMessage() == 'NOMAINWP' ) {
150 + $sync_errors = sprintf( __( 'MainWP Child plugin not detected or could not be reached! Ensure the MainWP Child plugin is installed and activated on the child site, and there are no security rules blocking requests. If you continue experiencing this issue, check the %1$sMainWP Community%2$s for help.', 'mainwp' ), '<a href="https://managers.mainwp.com/c/community-support/5" target="_blank">', '</a>' );
151 + $check_result = 1;
152 + }
136 153
137 - $postdata = array(
138 - 'optimize' => 1 === (int) get_option( 'mainwp_optimize', 1 ) ? 1 : 0,
139 - 'cloneSites' => ( ! $cloneEnabled || $disallowed_current_site ) ? 0 : rawurlencode( wp_json_encode( $cloneSites ) ),
140 - 'othersData' => wp_json_encode( $othersData ),
141 - 'server' => get_admin_url(),
142 - 'numberdaysOutdatePluginTheme' => get_option( 'mainwp_numberdays_Outdate_Plugin_Theme', 365 ),
143 - 'primaryBackup' => $primaryBackup,
144 - 'siteId' => $pWebsite->id,
145 - 'child_actions_saved_days_number' => intval( $saved_days_number ),
146 - 'pingnonce' => MainWP_Utility::instance()->create_site_nonce( 'pingnonce', $pWebsite->id ),
147 - );
154 + return self::sync_information_array( $pWebsite, $information, $sync_errors, $check_result, true, $pAllowDisconnect );
155 + }
156 + }
148 157
149 - $information = MainWP_Connect::fetch_url_authed(
150 - $pWebsite,
151 - 'stats',
152 - $postdata,
153 - true,
154 - $pForceFetch
155 - );
156 - $return = static::sync_information_array( $pWebsite, $information, '', 1, false, $pAllowDisconnect );
157 - MainWP_Logger::instance()->log_execution_time( 'sync :: [siteid=' . $pWebsite->id . ']' );
158 - return $return;
159 - } catch ( MainWP_Exception $e ) {
160 - $sync_errors = '';
161 - $check_result = 1;
158 + /**
159 + * Method sync_information_array()
160 + *
161 + * Grab all Child Site Information.
162 + *
163 + * @param object $pWebsite The website object.
164 + * @param array $information Array contaning information returned from child site.
165 + * @param string $sync_errors Check for Sync Errors.
166 + * @param int $check_result Check if offline.
167 + * @param bool $error True|False.
168 + * @param bool $pAllowDisconnect True|False.
169 + *
170 + * @return bool true|false True on success, false on failure.
171 + *
172 + * @uses \MainWP\Dashboard\MainWP_DB::update_website_option()
173 + * @uses \MainWP\Dashboard\MainWP_DB::update_website_sync_values()
174 + * @uses \MainWP\Dashboard\MainWP_DB::update_website_values()
175 + * @uses \MainWP\Dashboard\MainWP_Logger::warning_for_website()
176 + * @uses \MainWP\Dashboard\MainWP_Monitoring_Handler::get_health_noticed_status_value()
177 + * @uses \MainWP\Dashboard\MainWP_Utility::ctype_digit()
178 + * @uses \MainWP\Dashboard\MainWP_Utility::get_site_health()
179 + */
180 + public static function sync_information_array( &$pWebsite, &$information, $sync_errors = '', $check_result = 1, $error = false, $pAllowDisconnect = true ) { // phpcs:ignore -- Current complexity is the only way to achieve desired results, pull request solutions appreciated.
181 + $emptyArray = wp_json_encode( array() );
182 + $websiteValues = array(
183 + 'directories' => $emptyArray,
184 + 'plugin_upgrades' => $emptyArray,
185 + 'theme_upgrades' => $emptyArray,
186 + 'translation_upgrades' => $emptyArray,
187 + 'securityIssues' => $emptyArray,
188 + 'themes' => $emptyArray,
189 + 'plugins' => $emptyArray,
190 + 'users' => $emptyArray,
191 + 'categories' => $emptyArray,
192 + 'offline_check_result' => $check_result,
193 + );
194 + $websiteSyncValues = array(
195 + 'sync_errors' => $sync_errors,
196 + 'version' => 0,
197 + );
162 198
163 - if ( $e->getMessage() === 'HTTPERROR' ) {
164 - $sync_errors = esc_html__( 'HTTP error', 'mainwp' ) . ( ! empty( $e->get_message_extra() ) ? ' - ' . $e->get_message_extra() : '' );
165 - $check_result = - 1;
166 - } elseif ( $e->getMessage() === 'NOMAINWP' ) {
167 - $sync_errors = MainWP_Error_Helper::get_error_not_detected_connect();
168 - $check_result = 1;
169 - }
199 + $done = false;
170 200
171 - MainWP_Logger::instance()->log_execution_time( 'sync :: [siteid=' . $pWebsite->id . ']' );
172 - return static::sync_information_array( $pWebsite, $information, $sync_errors, $check_result, true, $pAllowDisconnect );
173 - }
174 - }
201 + $current_siteid = 0;
202 + if ( is_string( $pWebsite ) || is_int( $pWebsite ) ) {
203 + $current_siteid = intval( $pWebsite );
204 + } elseif ( is_object( $pWebsite ) && ( ! property_exists( $pWebsite, 'plugin_updates' ) || ! property_exists( $pWebsite, 'theme_updates' ) ) ) {
205 + $current_siteid = $pWebsite->id;
206 + }
175 207
176 - /**
177 - * Method sync_information_array()
178 - *
179 - * Grab all Child Site Information.
180 - *
181 - * @param object $pWebsite The website object.
182 - * @param array $information Array contaning information returned from child site.
183 - * @param string $sync_errors Check for Sync Errors.
184 - * @param int $check_result Check if offline.
185 - * @param bool $error True|False.
186 - * @param bool $pAllowDisconnect True|False.
187 - *
188 - * @return bool true|false True on success, false on failure.
189 - *
190 - * @uses \MainWP\Dashboard\MainWP_DB::update_website_option()
191 - * @uses \MainWP\Dashboard\MainWP_DB::update_website_sync_values()
192 - * @uses \MainWP\Dashboard\MainWP_DB::update_website_values()
193 - * @uses \MainWP\Dashboard\MainWP_Logger::warning_for_website()
194 - * @uses \MainWP\Dashboard\MainWP_Monitoring_Handler::get_health_noticed_status_value()
195 - * @uses \MainWP\Dashboard\MainWP_Utility::ctype_digit()
196 - * @uses \MainWP\Dashboard\MainWP_Utility::get_site_health()
197 - */
198 - public static function sync_information_array( &$pWebsite, &$information, $sync_errors = '', $check_result = 1, $error = false, $pAllowDisconnect = true ) { // phpcs:ignore -- NOSONAR -Current complexity is the only way to achieve desired results, pull request solutions appreciated.
199 - $emptyArray = wp_json_encode( array() );
200 - $websiteValues = array(
201 - 'directories' => $emptyArray,
202 - 'plugin_upgrades' => $emptyArray,
203 - 'theme_upgrades' => $emptyArray,
204 - 'translation_upgrades' => $emptyArray,
205 - 'securityIssues' => $emptyArray,
206 - 'themes' => $emptyArray,
207 - 'plugins' => $emptyArray,
208 - 'users' => $emptyArray,
209 - 'categories' => $emptyArray,
210 - 'offline_check_result' => $check_result,
211 - );
212 - $websiteSyncValues = array(
213 - 'sync_errors' => $sync_errors,
214 - 'version' => 0,
215 - );
208 + // to get full data.
209 + if ( $current_siteid ) {
210 + $pWebsite = MainWP_DB::instance()->get_website_by_id( $current_siteid );
211 + }
216 212
217 - $_error = $sync_errors;
213 + $delay_autoupdate = get_option( 'mainwp_delay_autoupdate', 1 );
218 214
219 - $done = false;
215 + /**
216 + * Filter: mainwp_before_save_sync_result
217 + *
218 + * Filters data returned from child site before saving to the database.
219 + *
220 + * @param object $pWebsite Object containing child site data.
221 + *
222 + * @since 3.4
223 + */
224 + $information = apply_filters( 'mainwp_before_save_sync_result', $information, $pWebsite );
220 225
221 - $current_siteid = 0;
222 - if ( is_string( $pWebsite ) || is_int( $pWebsite ) ) {
223 - $current_siteid = intval( $pWebsite );
224 - } elseif ( is_object( $pWebsite ) && ( ! property_exists( $pWebsite, 'plugin_updates' ) || ! property_exists( $pWebsite, 'theme_updates' ) ) ) {
225 - $current_siteid = $pWebsite->id;
226 - }
226 + if ( isset( $information['siteurl'] ) ) {
227 + $websiteValues['siteurl'] = $information['siteurl'];
228 + $done = true;
229 + }
227 230
228 - // to get full data.
229 - if ( $current_siteid ) {
230 - $pWebsite = MainWP_DB::instance()->get_website_by_id( $current_siteid );
231 - }
231 + if ( isset( $information['version'] ) ) {
232 + $websiteSyncValues['version'] = $information['version'];
233 + $done = true;
234 + }
232 235
233 - /**
234 - * Filter: mainwp_before_save_sync_result
235 - *
236 - * Filters data returned from child site before saving to the database.
237 - *
238 - * @param object $pWebsite Object containing child site data.
239 - *
240 - * @since 3.4
241 - */
242 - $information = apply_filters( 'mainwp_before_save_sync_result', $information, $pWebsite );
236 + $phpversion = '';
237 + if ( isset( $information['site_info'] ) && null != $information['site_info'] ) {
238 + if ( is_array( $information['site_info'] ) && isset( $information['site_info']['phpversion'] ) ) {
239 + $phpversion = $information['site_info']['phpversion'];
240 + }
241 + MainWP_DB::instance()->update_website_option( $pWebsite, 'site_info', wp_json_encode( $information['site_info'] ) );
242 + $done = true;
243 + } else {
244 + MainWP_DB::instance()->update_website_option( $pWebsite, 'site_info', $emptyArray );
245 + }
246 + MainWP_DB::instance()->update_website_option( $pWebsite, 'phpversion', $phpversion );
243 247
244 - if ( isset( $information['siteurl'] ) ) {
245 - $websiteValues['siteurl'] = $information['siteurl'];
246 - $done = true;
247 - }
248 + if ( isset( $information['directories'] ) && is_array( $information['directories'] ) ) {
249 + $websiteValues['directories'] = wp_json_encode( $information['directories'] );
250 + $done = true;
251 + } elseif ( isset( $information['directories'] ) ) {
252 + $websiteValues['directories'] = $information['directories'];
253 + $done = true;
254 + }
248 255
249 - if ( isset( $information['version'] ) ) {
250 - $websiteSyncValues['version'] = $information['version'];
251 - $done = true;
252 - }
256 + if ( isset( $information['wp_updates'] ) && null != $information['wp_updates'] ) {
257 + $current_upgrades = MainWP_DB::instance()->get_website_option( $pWebsite, 'wp_upgrades' );
258 + $current_upgrades = ( '' != $current_upgrades ) ? json_decode( $current_upgrades, true ) : array();
253 259
254 - $phpversion = '';
255 - if ( isset( $information['site_info'] ) && ! empty( $information['site_info'] ) ) {
256 - if ( is_array( $information['site_info'] ) && isset( $information['site_info']['phpversion'] ) ) {
257 - $phpversion = $information['site_info']['phpversion'];
258 - }
259 - if ( is_array( $information['site_info'] ) && isset( $information['site_info']['ip'] ) ) {
260 - $websiteValues['ip'] = sanitize_text_field( wp_unslash( $information['site_info']['ip'] ) );
261 - }
262 - MainWP_DB::instance()->update_website_option( $pWebsite, 'site_info', wp_json_encode( $information['site_info'] ) );
263 - $done = true;
264 - } else {
265 - MainWP_DB::instance()->update_website_option( $pWebsite, 'site_info', $emptyArray );
266 - }
267 - if ( ! empty( $phpversion ) ) {
268 - MainWP_DB::instance()->update_website_option( $pWebsite, 'phpversion', $phpversion );
269 - }
270 - if ( isset( $information['directories'] ) && is_array( $information['directories'] ) ) {
271 - $websiteValues['directories'] = wp_json_encode( $information['directories'] );
272 - $done = true;
273 - } elseif ( isset( $information['directories'] ) ) {
274 - $websiteValues['directories'] = $information['directories'];
275 - $done = true;
276 - }
260 + MainWP_DB::instance()->update_website_option(
261 + $pWebsite,
262 + 'wp_upgrades',
263 + wp_json_encode(
264 + array(
265 + 'current' => $information['wpversion'],
266 + 'new' => $information['wp_updates'],
267 + 'check_timestamp' => isset( $current_upgrades['check_timestamp'] ) ? $current_upgrades['check_timestamp'] : time(),
268 + )
269 + )
270 + );
271 + $done = true;
272 + } else {
273 + MainWP_DB::instance()->update_website_option( $pWebsite, 'wp_upgrades', $emptyArray );
274 + }
277 275
278 - if ( isset( $information['wp_updates'] ) && ! empty( $information['wp_updates'] ) ) {
279 - MainWP_DB::instance()->update_website_option(
280 - $pWebsite,
281 - 'wp_upgrades',
282 - wp_json_encode(
283 - array(
284 - 'current' => $information['wpversion'],
285 - 'new' => $information['wp_updates'],
286 - )
287 - )
288 - );
289 - $done = true;
290 - } else {
291 - MainWP_DB::instance()->update_website_option( $pWebsite, 'wp_upgrades', $emptyArray );
292 - }
276 + if ( isset( $information['plugin_updates'] ) ) {
277 + $current_upgrades = ( '' != $pWebsite->plugin_upgrades ) ? json_decode( $pWebsite->plugin_upgrades, true ) : array();
278 + $update_values = array();
279 + if ( is_array( $information['plugin_updates'] ) ) {
280 + foreach ( $information['plugin_updates'] as $file => $update ) {
281 + if ( isset( $current_upgrades[ $file ] ) && isset( $current_upgrades[ $file ]['check_timestamp'] ) ) {
282 + $update['check_timestamp'] = $current_upgrades[ $file ]['check_timestamp'];
283 + } else {
284 + $update['check_timestamp'] = time();
285 + }
286 + $update_values[ $file ] = $update;
287 + }
288 + }
289 + $websiteValues['plugin_upgrades'] = wp_json_encode( $update_values );
290 + $done = true;
291 + }
293 292
294 - if ( isset( $information['plugin_updates'] ) ) {
295 - $update_values = array();
296 - if ( is_array( $information['plugin_updates'] ) ) {
297 - foreach ( $information['plugin_updates'] as $file => $update ) {
298 - $update_values[ $file ] = $update;
299 - }
300 - }
301 - $websiteValues['plugin_upgrades'] = wp_json_encode( $update_values );
302 - $done = true;
303 - }
293 + if ( isset( $information['theme_updates'] ) ) {
294 + $current_upgrades = ( '' != $pWebsite->theme_upgrades ) ? json_decode( $pWebsite->theme_upgrades, true ) : array();
295 + $update_values = array();
296 + if ( is_array( $information['theme_updates'] ) ) {
297 + foreach ( $information['theme_updates'] as $file => $update ) {
298 + if ( isset( $current_upgrades[ $file ] ) && isset( $current_upgrades[ $file ]['check_timestamp'] ) ) {
299 + $update['check_timestamp'] = $current_upgrades[ $file ]['check_timestamp'];
300 + } else {
301 + $update['check_timestamp'] = time();
302 + }
303 + $update_values[ $file ] = $update;
304 + }
305 + }
306 + $websiteValues['theme_upgrades'] = wp_json_encode( $update_values );
307 + $done = true;
308 + }
304 309
305 - if ( isset( $information['theme_updates'] ) ) {
306 - $update_values = array();
307 - if ( is_array( $information['theme_updates'] ) ) {
308 - foreach ( $information['theme_updates'] as $file => $update ) {
309 - $update_values[ $file ] = $update;
310 - }
311 - }
312 - $websiteValues['theme_upgrades'] = wp_json_encode( $update_values );
313 - $done = true;
314 - }
310 + if ( isset( $information['translation_updates'] ) ) {
311 + $websiteValues['translation_upgrades'] = wp_json_encode( $information['translation_updates'] );
312 + $done = true;
313 + }
315 314
316 - if ( isset( $information['translation_updates'] ) ) {
317 - $websiteValues['translation_upgrades'] = wp_json_encode( $information['translation_updates'] );
318 - $done = true;
319 - }
315 + if ( isset( $information['premium_updates'] ) ) {
316 + MainWP_DB::instance()->update_website_option( $pWebsite, 'premium_upgrades', wp_json_encode( $information['premium_updates'] ) );
317 + $done = true;
318 + } else {
319 + MainWP_DB::instance()->update_website_option( $pWebsite, 'premium_upgrades', $emptyArray );
320 + }
320 321
321 - if ( isset( $information['premium_updates'] ) ) {
322 - MainWP_DB::instance()->update_website_option( $pWebsite, 'premium_upgrades', wp_json_encode( $information['premium_updates'] ) );
323 - $done = true;
324 - } else {
325 - MainWP_DB::instance()->update_website_option( $pWebsite, 'premium_upgrades', $emptyArray );
326 - }
322 + if ( isset( $information['securityStats'] ) ) {
323 + $total_securityIssues = 0;
324 + $securityStats = $information['securityStats'];
325 + if ( is_array( $securityStats ) ) {
326 + /** This filter is documented in ../pages/page-mainwp-security-issues.php */
327 + $filterStats = apply_filters( 'mainwp_security_issues_stats', false, $securityStats, $pWebsite );
328 + if ( false !== $filterStats && is_array( $filterStats ) ) {
329 + $securityStats = array_merge( $securityStats, $filterStats );
330 + }
327 331
328 - if ( isset( $information['securityStats'] ) ) {
329 - $total_securityIssues = 0;
330 - $securityStats = $information['securityStats'];
331 - if ( is_array( $securityStats ) ) {
332 - /** This filter is documented in ../pages/page-mainwp-security-issues.php */
333 - $filterStats = apply_filters( 'mainwp_security_issues_stats', false, $securityStats, $pWebsite );
334 - if ( false !== $filterStats && is_array( $filterStats ) ) {
335 - $securityStats = array_merge( $securityStats, $filterStats );
336 - }
332 + $unset_scripts = apply_filters( 'mainwp_unset_security_scripts_stylesheets', true );
333 + if ( $unset_scripts ) {
334 + if ( isset( $securityStats['versions'] ) ) {
335 + unset( $securityStats['versions'] );
336 + }
337 + if ( isset( $securityStats['registered_versions'] ) ) {
338 + unset( $securityStats['registered_versions'] );
339 + }
340 + }
337 341
338 - $unset_scripts = apply_filters( 'mainwp_unset_security_scripts_stylesheets', true );
339 - if ( $unset_scripts ) {
340 - if ( isset( $securityStats['versions'] ) ) {
341 - unset( $securityStats['versions'] );
342 - }
343 - if ( isset( $securityStats['registered_versions'] ) ) {
344 - unset( $securityStats['registered_versions'] );
345 - }
346 - }
342 + $tmp_issues = array_filter(
343 + $securityStats,
344 + function( $v, $k ) {
345 + return 'N' == $v;
346 + },
347 + ARRAY_FILTER_USE_BOTH
348 + );
349 + $total_securityIssues = count( $tmp_issues );
350 + $securityStats = wp_json_encode( $securityStats );
351 + } else {
352 + $securityStats = $emptyArray;
353 + }
354 + $websiteValues['securityIssues'] = $total_securityIssues;
355 + MainWP_DB::instance()->update_website_option( $pWebsite, 'security_stats', $securityStats );
356 + $done = true;
357 + } elseif ( isset( $information['securityIssues'] ) && MainWP_Utility::ctype_digit( $information['securityIssues'] ) && $information['securityIssues'] >= 0 ) {
358 + $websiteValues['securityIssues'] = $information['securityIssues'];
359 + $done = true;
360 + }
347 361
348 - $tmp_issues = array_filter(
349 - $securityStats,
350 - function ( $v ) {
351 - return 'N' === $v;
352 - },
353 - ARRAY_FILTER_USE_BOTH
354 - );
355 - $total_securityIssues = count( $tmp_issues );
356 - $securityStats = wp_json_encode( $securityStats );
357 - } else {
358 - $securityStats = $emptyArray;
359 - }
360 - $websiteValues['securityIssues'] = $total_securityIssues;
361 - MainWP_DB::instance()->update_website_option( $pWebsite, 'security_stats', $securityStats );
362 - $done = true;
363 - } elseif ( isset( $information['securityIssues'] ) && MainWP_Utility::ctype_digit( $information['securityIssues'] ) && $information['securityIssues'] >= 0 ) {
364 - $websiteValues['securityIssues'] = $information['securityIssues'];
365 - $done = true;
366 - }
362 + if ( isset( $information['recent_comments'] ) ) {
363 + MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_comments', wp_json_encode( $information['recent_comments'] ) );
364 + $done = true;
365 + } else {
366 + MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_comments', $emptyArray );
367 + }
367 368
368 - if ( isset( $information['recent_comments'] ) ) {
369 - MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_comments', wp_json_encode( $information['recent_comments'] ) );
370 - $done = true;
371 - } else {
372 - MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_comments', $emptyArray );
373 - }
369 + if ( isset( $information['recent_posts'] ) ) {
370 + MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_posts', wp_json_encode( $information['recent_posts'] ) );
371 + $done = true;
372 + } else {
373 + MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_posts', $emptyArray );
374 + }
374 375
375 - if ( isset( $information['recent_posts'] ) ) {
376 - MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_posts', wp_json_encode( $information['recent_posts'] ) );
377 - $done = true;
378 - } else {
379 - MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_posts', $emptyArray );
380 - }
376 + if ( isset( $information['recent_pages'] ) ) {
377 + MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_pages', wp_json_encode( $information['recent_pages'] ) );
378 + $done = true;
379 + } else {
380 + MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_pages', $emptyArray );
381 + }
381 382
382 - if ( isset( $information['recent_pages'] ) ) {
383 - MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_pages', wp_json_encode( $information['recent_pages'] ) );
384 - $done = true;
385 - } else {
386 - MainWP_DB::instance()->update_website_option( $pWebsite, 'recent_pages', $emptyArray );
387 - }
383 + if ( isset( $information['themes'] ) ) {
384 + $websiteValues['themes'] = wp_json_encode( $information['themes'] );
385 + $done = true;
386 + }
388 387
389 - if ( isset( $information['themes'] ) ) {
390 - $websiteValues['themes'] = wp_json_encode( $information['themes'] );
391 - $done = true;
392 - }
388 + if ( isset( $information['plugins'] ) ) {
389 + $websiteValues['plugins'] = wp_json_encode( $information['plugins'] );
390 + $done = true;
391 + }
393 392
394 - if ( isset( $information['plugins'] ) ) {
395 - $websiteValues['plugins'] = wp_json_encode( $information['plugins'] );
396 - $done = true;
397 - }
393 + if ( isset( $information['users'] ) ) {
394 + $websiteValues['users'] = wp_json_encode( $information['users'] );
395 + $done = true;
396 + }
398 397
399 - if ( isset( $information['users'] ) ) {
400 - $websiteValues['users'] = wp_json_encode( $information['users'] );
401 - $done = true;
402 - }
398 + if ( isset( $information['categories'] ) ) {
399 + $websiteValues['categories'] = wp_json_encode( $information['categories'] );
400 + $done = true;
401 + }
403 402
404 - if ( isset( $information['categories_list'] ) ) {
405 - $websiteValues['categories'] = wp_json_encode( $information['categories_list'] );
406 - $done = true;
407 - } elseif ( isset( $information['categories'] ) ) { // support old child version.
408 - $websiteValues['categories'] = wp_json_encode( $information['categories'] );
409 - $done = true;
410 - }
403 + if ( isset( $information['totalsize'] ) ) {
404 + $websiteSyncValues['totalsize'] = $information['totalsize'];
405 + $done = true;
406 + }
411 407
412 - if ( isset( $information['totalsize'] ) ) {
413 - $websiteSyncValues['totalsize'] = $information['totalsize'];
414 - $done = true;
415 - }
408 + if ( isset( $information['dbsize'] ) ) {
409 + $websiteSyncValues['dbsize'] = $information['dbsize'];
410 + $done = true;
411 + }
416 412
417 - if ( isset( $information['dbsize'] ) ) {
418 - $websiteSyncValues['dbsize'] = $information['dbsize'];
419 - $done = true;
420 - }
413 + if ( isset( $information['extauth'] ) ) {
414 + $websiteSyncValues['extauth'] = $information['extauth'];
415 + $done = true;
416 + }
421 417
422 - if ( isset( $information['extauth'] ) ) {
423 - $websiteSyncValues['extauth'] = $information['extauth'];
424 - $done = true;
425 - }
418 + if ( isset( $information['nossl'] ) ) {
419 + $websiteValues['nossl'] = $information['nossl'];
420 + $done = true;
421 + }
426 422
427 - if ( isset( $information['wpe'] ) ) {
428 - $websiteValues['wpe'] = $information['wpe'];
429 - $done = true;
430 - }
423 + if ( isset( $information['wpe'] ) ) {
424 + $websiteValues['wpe'] = $information['wpe'];
425 + $done = true;
426 + }
431 427
432 - if ( isset( $information['wphost'] ) ) {
433 - MainWP_DB::instance()->update_website_option( $pWebsite, 'wphost', $information['wphost'] );
434 - }
428 + if ( isset( $information['last_post_gmt'] ) ) {
429 + $websiteSyncValues['last_post_gmt'] = $information['last_post_gmt'];
430 + $done = true;
431 + }
435 432
436 - if ( isset( $information['last_post_gmt'] ) ) {
437 - $websiteSyncValues['last_post_gmt'] = $information['last_post_gmt'];
438 - $done = true;
439 - }
433 + if ( isset( $information['health_site_status'] ) ) {
434 + $health_status = $information['health_site_status'];
435 + $hstatus = MainWP_Utility::get_site_health( $health_status );
436 + $custom_health_value = $hstatus['val'] - $hstatus['critical'] * 100; // computes custom health value to support sorting by sites health and sites health threshold.
437 + $websiteSyncValues['health_value'] = $custom_health_value;
438 + $done = true;
439 + MainWP_DB::instance()->update_website_option( $pWebsite, 'health_site_status', wp_json_encode( $health_status ) );
440 + $new_noticed = MainWP_Monitoring_Handler::get_health_noticed_status_value( $pWebsite, $custom_health_value );
441 + if ( null !== $new_noticed ) {
442 + MainWP_DB::instance()->update_website_sync_values(
443 + $pWebsite->id,
444 + array(
445 + 'health_site_noticed' => $new_noticed,
446 + )
447 + );
448 + }
440 449
441 - if ( isset( $information['health_site_status'] ) ) {
442 - $health_status = $information['health_site_status'];
443 - $hstatus = MainWP_Utility::get_site_health( $health_status );
444 - $custom_health_value = $hstatus['val'] - $hstatus['critical'] * 100; // computes custom health value to support sorting by sites health and sites health threshold.
445 - $websiteSyncValues['health_value'] = $custom_health_value;
446 - $done = true;
447 - MainWP_DB::instance()->update_website_option( $pWebsite, 'health_site_status', wp_json_encode( $health_status ) );
448 - $new_noticed = MainWP_Monitoring_Handler::get_health_noticed_status_value( $pWebsite, $custom_health_value );
449 - if ( null !== $new_noticed ) {
450 - MainWP_DB::instance()->update_website_sync_values(
451 - $pWebsite->id,
452 - array(
453 - 'health_site_noticed' => $new_noticed,
454 - )
455 - );
456 - }
450 + $hval = $hstatus['val'];
451 + $critical = $hstatus['critical'];
452 + $health_status = 0;
453 + if ( 80 <= $hval && 0 == $critical ) {
454 + $health_status = 0; // Good.
455 + } else {
456 + $health_status = 1; // Should be improved'.
457 + }
458 + $websiteSyncValues['health_status'] = $health_status;
459 + } else {
460 + MainWP_DB::instance()->update_website_option( $pWebsite, 'health_site_status', $emptyArray );
461 + }
457 462
458 - $hval = $hstatus['val'];
459 - $critical = $hstatus['critical'];
460 - $health_status = 0;
461 - if ( 80 <= $hval && empty( $critical ) ) {
462 - $health_status = 0; // Good.
463 - } else {
464 - $health_status = 1; // Should be improved'.
465 - }
466 - $websiteSyncValues['health_status'] = $health_status;
467 - } else {
468 - MainWP_DB::instance()->update_website_option( $pWebsite, 'health_site_status', $emptyArray );
469 - }
463 + if ( isset( $information['mainwpdir'] ) ) {
464 + $websiteValues['mainwpdir'] = $information['mainwpdir'];
465 + $done = true;
466 + }
470 467
471 - if ( isset( $information['mainwpdir'] ) ) {
472 - $websiteValues['mainwpdir'] = $information['mainwpdir'];
473 - $done = true;
474 - }
468 + if ( isset( $information['uniqueId'] ) ) {
469 + $websiteValues['uniqueId'] = $information['uniqueId'];
470 + $done = true;
471 + }
475 472
476 - if ( isset( $information['uniqueId'] ) ) {
477 - $websiteValues['uniqueId'] = $information['uniqueId'];
478 - $done = true;
479 - }
473 + if ( isset( $information['clone_adminname'] ) ) {
474 + $websiteValues['adminname'] = $information['clone_adminname'];
475 + $done = true;
476 + }
480 477
481 - if ( isset( $information['clone_adminname'] ) ) {
482 - $websiteValues['adminname'] = $information['clone_adminname'];
483 - $done = true;
484 - }
478 + if ( isset( $information['admin_nicename'] ) ) {
479 + MainWP_DB::instance()->update_website_option( $pWebsite, 'admin_nicename', trim( $information['admin_nicename'] ) );
480 + $done = true;
481 + }
485 482
486 - if ( isset( $information['admin_nicename'] ) ) {
487 - MainWP_DB::instance()->update_website_option( $pWebsite, 'admin_nicename', trim( $information['admin_nicename'] ) );
488 - $done = true;
489 - }
483 + if ( isset( $information['admin_useremail'] ) ) {
484 + MainWP_DB::instance()->update_website_option( $pWebsite, 'admin_useremail', trim( $information['admin_useremail'] ) );
485 + $done = true;
486 + }
490 487
491 - if ( isset( $information['admin_useremail'] ) ) {
492 - MainWP_DB::instance()->update_website_option( $pWebsite, 'admin_useremail', trim( $information['admin_useremail'] ) );
493 - $done = true;
494 - }
488 + if ( isset( $information['plugins_outdate_info'] ) ) {
489 + MainWP_DB::instance()->update_website_option( $pWebsite, 'plugins_outdate_info', wp_json_encode( $information['plugins_outdate_info'] ) );
490 + $done = true;
491 + } else {
492 + MainWP_DB::instance()->update_website_option( $pWebsite, 'plugins_outdate_info', $emptyArray );
493 + }
495 494
496 - if ( isset( $information['plugins_outdate_info'] ) ) {
497 - MainWP_DB::instance()->update_website_option( $pWebsite, 'plugins_outdate_info', wp_json_encode( $information['plugins_outdate_info'] ) );
498 - $done = true;
499 - } else {
500 - MainWP_DB::instance()->update_website_option( $pWebsite, 'plugins_outdate_info', $emptyArray );
501 - }
495 + if ( isset( $information['themes_outdate_info'] ) ) {
496 + MainWP_DB::instance()->update_website_option( $pWebsite, 'themes_outdate_info', wp_json_encode( $information['themes_outdate_info'] ) );
497 + $done = true;
498 + } else {
499 + MainWP_DB::instance()->update_website_option( $pWebsite, 'themes_outdate_info', $emptyArray );
500 + }
502 501
503 - if ( isset( $information['themes_outdate_info'] ) ) {
504 - MainWP_DB::instance()->update_website_option( $pWebsite, 'themes_outdate_info', wp_json_encode( $information['themes_outdate_info'] ) );
505 - $done = true;
506 - } else {
507 - MainWP_DB::instance()->update_website_option( $pWebsite, 'themes_outdate_info', $emptyArray );
508 - }
502 + if ( isset( $information['primaryLasttimeBackup'] ) ) {
503 + MainWP_DB::instance()->update_website_option( $pWebsite, 'primary_lasttime_backup', $information['primaryLasttimeBackup'] );
504 + $done = true;
505 + }
509 506
510 - if ( isset( $information['primaryLasttimeBackup'] ) ) {
511 - MainWP_DB::instance()->update_website_option( $pWebsite, 'primary_lasttime_backup', $information['primaryLasttimeBackup'] );
512 - $done = true;
513 - }
507 + if ( isset( $information['child_site_actions_data'] ) ) {
508 + if ( is_array( $information['child_site_actions_data'] ) && isset( $information['child_site_actions_data']['connected_admin'] ) ) {
509 + unset( $information['child_site_actions_data']['connected_admin'] );
510 + }
511 + MainWP_DB_Site_Actions::instance()->sync_site_actions( $pWebsite->id, $information['child_site_actions_data'] );
512 + $done = true;
513 + }
514 514
515 - if ( isset( $information['child_site_actions_data'] ) ) {
516 - if ( is_array( $information['child_site_actions_data'] ) && isset( $information['child_site_actions_data']['connected_admin'] ) ) {
517 - unset( $information['child_site_actions_data']['connected_admin'] );
518 - }
519 - MainWP_DB_Site_Actions::instance()->sync_site_actions( $pWebsite->id, $information['child_site_actions_data'] );
520 - $done = true;
521 - }
515 + if ( ! $done ) {
516 + if ( isset( $information['wpversion'] ) ) {
517 + $done = true;
518 + } elseif ( isset( $information['error'] ) ) {
519 + MainWP_Logger::instance()->warning_for_website( $pWebsite, 'SYNC ERROR', '[' . esc_html( $information['error'] ) . ']' );
520 + $error = true;
521 + $done = true;
522 + $websiteSyncValues['sync_errors'] = __( 'ERROR: ', 'mainwp' ) . esc_html( $information['error'] );
523 + } elseif ( ! empty( $sync_errors ) ) {
524 + MainWP_Logger::instance()->warning_for_website( $pWebsite, 'SYNC ERROR', '[' . $sync_errors . ']' );
522 525
523 - if ( ! $done ) {
524 - if ( isset( $information['wpversion'] ) ) {
525 - $done = true;
526 - } elseif ( isset( $information['error'] ) ) {
527 - MainWP_Logger::instance()->warning_for_website( $pWebsite, 'SYNC ERROR', '[' . esc_html( $information['error'] ) . ']' );
528 - $error = true;
529 - $done = true;
530 - $_error = esc_html__( 'ERROR: ', 'mainwp' ) . esc_html( $information['error'] );
531 - $websiteSyncValues['sync_errors'] = $_error;
532 - } elseif ( ! empty( $sync_errors ) ) {
533 - MainWP_Logger::instance()->warning_for_website( $pWebsite, 'SYNC ERROR', '[' . $sync_errors . ']' );
534 - $_error = $sync_errors;
535 - $error = true;
536 - if ( ! $pAllowDisconnect ) {
537 - $sync_errors = '';
538 - }
526 + $error = true;
527 + if ( ! $pAllowDisconnect ) {
528 + $sync_errors = '';
529 + }
539 530
540 - $websiteSyncValues['sync_errors'] = $sync_errors;
541 - } else {
542 - MainWP_Logger::instance()->warning_for_website( $pWebsite, 'SYNC ERROR', '[Undefined error]' );
543 - $error = true;
544 - if ( $pAllowDisconnect ) {
545 - $sync_errors = esc_html__( 'Undefined error! Please, reinstall the MainWP Child plugin on the child site.', 'mainwp' );
546 - $websiteSyncValues['sync_errors'] = $sync_errors;
547 - $_error = $sync_errors;
548 - }
549 - }
550 - }
531 + $websiteSyncValues['sync_errors'] = $sync_errors;
532 + } else {
533 + MainWP_Logger::instance()->warning_for_website( $pWebsite, 'SYNC ERROR', '[Undefined error]' );
534 + $error = true;
535 + if ( $pAllowDisconnect ) {
536 + $websiteSyncValues['sync_errors'] = __( 'Undefined error! Please, reinstall the MainWP Child plugin on the child site.', 'mainwp' );
537 + }
538 + }
539 + }
551 540
552 - $act_success = false;
553 - if ( $done ) {
554 - $act_success = true;
555 - $websiteSyncValues['dtsSync'] = time();
556 - }
557 - MainWP_DB::instance()->update_website_sync_values( $pWebsite->id, $websiteSyncValues );
558 - MainWP_DB::instance()->update_website_values( $pWebsite->id, $websiteValues );
541 + if ( $done ) {
542 + $websiteSyncValues['dtsSync'] = time();
543 + }
544 + MainWP_DB::instance()->update_website_sync_values( $pWebsite->id, $websiteSyncValues );
545 + MainWP_DB::instance()->update_website_values( $pWebsite->id, $websiteValues );
559 546
560 - // Sync action.
561 - if ( ! $error ) {
562 - do_action_deprecated( 'mainwp-site-synced', array( $pWebsite, $information ), '4.0.7.2', 'mainwp_site_synced' ); // @deprecated Use 'mainwp_site_synced' instead. NOSONAR - not IP.
547 + // Sync action.
548 + if ( ! $error ) {
549 + do_action_deprecated( 'mainwp-site-synced', array( $pWebsite, $information ), '4.0.7.2', 'mainwp_site_synced' ); // @deprecated Use 'mainwp_site_synced' instead.
563 550
564 - /**
565 - * Action: mainwp_site_synced
566 - *
567 - * Fires upon successful site synchronization.
568 - *
569 - * @param object $pWebsite Object containing child site info.
570 - * @param array $information Array containing information returned from child site.
571 - *
572 - * @since 3.4
573 - */
574 - do_action( 'mainwp_site_synced', $pWebsite, $information );
575 - }
551 + /**
552 + * Action: mainwp_site_synced
553 + *
554 + * Fires upon successful site synchronization.
555 + *
556 + * @param object $pWebsite Object containing child site info.
557 + * @param array $information Array containing information returned from child site.
558 + *
559 + * @since 3.4
560 + */
561 + do_action( 'mainwp_site_synced', $pWebsite, $information );
562 + }
576 563
577 - $post_data = array();
564 + return ( ! $error );
565 + }
578 566
579 - /**
580 - * Action: mainwp_site_sync
581 - *
582 - * Fires upon successful site synchronization.
583 - *
584 - * @param object $pWebsite Object containing child site info.
585 - * @param array $information Array containing information returned from child site.
586 - * @param bool $act_success action success or failed.
587 - * @param string $_error Sync error message if existed.
588 - * @param array $post_data Addition post data.
589 - *
590 - * @since 3.4
591 - */
592 - do_action( 'mainwp_site_sync', $pWebsite, $information, $act_success, $_error, $post_data );
567 + /**
568 + * Method sync_site_icon()
569 + *
570 + * Get site's icon.
571 + *
572 + * @param mixed $siteId site's id.
573 + *
574 + * @return array result error or success
575 + * @throws \Exception Error message.
576 + *
577 + * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
578 + * @uses \MainWP\Dashboard\MainWP_Connect::get_file_content()
579 + * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
580 + * @uses \MainWP\Dashboard\MainWP_DB_Common::update_website_option()
581 + * @uses \MainWP\Dashboard\MainWP_Exception
582 + * @uses \MainWP\Dashboard\MainWP_Logger::debug()
583 + * @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website()
584 + * @uses \MainWP\Dashboard\MainWP_System_Utility::get_wp_file_system()
585 + * @uses \MainWP\Dashboard\MainWP_System_Utility::get_mainwp_dir()
586 + * @uses \MainWP\Dashboard\MainWP_Utility::ctype_digit()
587 + */
588 + public static function sync_site_icon( $siteId = null ) {
589 + if ( MainWP_Utility::ctype_digit( $siteId ) ) {
590 + $website = MainWP_DB::instance()->get_website_by_id( $siteId );
591 + if ( MainWP_System_Utility::can_edit_website( $website ) ) {
592 + $error = '';
593 + try {
594 + $information = MainWP_Connect::fetch_url_authed( $website, 'get_site_icon' );
595 + } catch ( MainWP_Exception $e ) {
596 + $error = $e->getMessage();
597 + }
593 598
594 - return ! $error;
595 - }
599 + if ( '' != $error ) {
600 + return array( 'error' => $error );
601 + } elseif ( isset( $information['faviIconUrl'] ) && ! empty( $information['faviIconUrl'] ) ) {
602 + MainWP_Logger::instance()->debug( 'Downloading icon :: ' . esc_html( $information['faviIconUrl'] ) );
603 + $content = MainWP_Connect::get_file_content( $information['faviIconUrl'] );
604 + if ( ! empty( $content ) ) {
596 605
597 - /**
598 - * Method get_wp_icon()
599 - *
600 - * Get site's icon.
601 - *
602 - * @param mixed $siteId site's id.
603 - *
604 - * @return array result error or success
605 - * @throws \MainWP_Exception Error message.
606 - *
607 - * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
608 - * @uses \MainWP\Dashboard\MainWP_Connect::get_file_content()
609 - * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
610 - * @uses \MainWP\Dashboard\MainWP_DB_Common::update_website_option()
611 - * @uses \MainWP\Dashboard\MainWP_Exception
612 - * @uses \MainWP\Dashboard\MainWP_Logger::debug()
613 - * @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website()
614 - * @uses \MainWP\Dashboard\MainWP_System_Utility::get_wp_file_system()
615 - * @uses \MainWP\Dashboard\MainWP_System_Utility::get_mainwp_dir()
616 - * @uses \MainWP\Dashboard\MainWP_Utility::ctype_digit()
617 - */
618 - public static function get_wp_icon( $siteId = null ) { // phpcs:ignore -- NOSONAR - complex.
619 - if ( MainWP_Utility::ctype_digit( $siteId ) ) {
620 - $website = MainWP_DB::instance()->get_website_by_id( $siteId );
621 - if ( MainWP_System_Utility::can_edit_website( $website ) ) {
622 - $error = '';
623 - try {
624 - $information = MainWP_Connect::fetch_url_authed( $website, 'get_site_icon' );
625 - } catch ( MainWP_Exception $e ) {
626 - $error = $e->getMessage();
627 - }
606 + $hasWPFileSystem = MainWP_System_Utility::get_wp_file_system();
628 607
629 - if ( ! empty( $error ) ) {
630 - return array( 'error' => $error );
631 - } elseif ( isset( $information['faviIconUrl'] ) && ! empty( $information['faviIconUrl'] ) ) {
632 - MainWP_Logger::instance()->debug( 'Downloading icon :: ' . esc_html( $information['faviIconUrl'] ) );
633 - $content = MainWP_Connect::get_file_content( $information['faviIconUrl'] );
634 - if ( ! empty( $content ) ) {
608 + /**
609 + * WordPress files system object.
610 + *
611 + * @global object
612 + */
613 + global $wp_filesystem;
635 614
636 - MainWP_System_Utility::get_wp_file_system();
615 + $dirs = MainWP_System_Utility::get_mainwp_dir( 'icons', true );
616 + $iconsDir = $dirs[0];
617 + $filename = basename( $information['faviIconUrl'] );
618 + $filename = strtok( $filename, '?' );
619 + if ( $filename ) {
620 + $filename = 'favi-' . $siteId . '-' . $filename;
621 + $size = false;
622 + if ( MainWP_Utility::check_image_file_name( $filename ) ) {
623 + $size = $wp_filesystem->put_contents( $iconsDir . $filename, $content ); // phpcs:ignore --
624 + }
625 + if ( $size ) {
626 + MainWP_Logger::instance()->debug( 'Icon size :: ' . $size );
627 + MainWP_DB::instance()->update_website_option( $website, 'favi_icon', $filename );
628 + return array( 'result' => 'success' );
629 + } else {
630 + return array( 'error' => 'Save icon file failed.' );
631 + }
632 + }
633 + return array( 'undefined_error' => true );
634 + } else {
635 + return array( 'error' => esc_html__( 'Download icon file failed', 'mainwp' ) );
636 + }
637 + } else {
638 + return array( 'undefined_error' => true );
639 + }
640 + }
641 + }
642 + return array( 'result' => 'NOSITE' );
643 + }
637 644
638 - /**
639 - * WordPress files system object.
640 - *
641 - * @global object
642 - */
643 - global $wp_filesystem;
644 -
645 - $dirs = MainWP_System_Utility::get_mainwp_dir( 'icons', true );
646 - $iconsDir = $dirs[0];
647 - $filename = basename( $information['faviIconUrl'] );
648 - $filename = strtok( $filename, '?' );
649 - if ( $filename ) {
650 - $filename = 'favi-' . $siteId . '-' . $filename;
651 - $size = false;
652 - if ( MainWP_Utility::check_image_file_name( $filename ) ) {
653 - $size = $wp_filesystem->put_contents( $iconsDir . $filename, $content ); // phpcs:ignore --
654 - }
655 - if ( $size ) {
656 - MainWP_Logger::instance()->debug( 'Icon size :: ' . $size );
657 - MainWP_DB::instance()->update_website_option( $website, 'favi_icon', $filename );
658 - return array( 'result' => 'success' );
659 - } else {
660 - return array( 'error' => 'Save icon file failed.' );
661 - }
662 - }
663 - return array( 'undefined_error' => true );
664 - } else {
665 - return array( 'error' => esc_html__( 'Download icon file failed', 'mainwp' ) );
666 - }
667 - } else {
668 - return array( 'undefined_error' => true );
669 - }
670 - }
671 - }
672 - return array( 'result' => 'NOSITE' );
673 - }
674 645 }