PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 4.0.5
MainWP Dashboard: Self-hosted WordPress Management for Agencies v4.0.5
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-post-handler.php

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

1,817 lines 60.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class MainWP_Post_Handler {
4
5 protected $security_nonces;
6 private static $instance = null;
7
8 function __construct() {
9
10 }
11
12 static function Instance() {
13 if ( self::$instance == null ) {
14 self::$instance = new MainWP_Post_Handler();
15 }
16 return self::$instance;
17 }
18
19 function init() {
20 //Page: ManageBackups
21 $this->addAction( 'mainwp_addbackup', array( &$this, 'mainwp_addbackup' ) );
22 if ( mainwp_current_user_can( 'dashboard', 'edit_backup_tasks' ) ) {
23 $this->addAction( 'mainwp_updatebackup', array( &$this, 'mainwp_updatebackup' ) );
24 }
25 if ( mainwp_current_user_can( 'dashboard', 'delete_backup_tasks' ) ) {
26 $this->addAction( 'mainwp_removebackup', array( &$this, 'mainwp_removebackup' ) );
27 }
28 $this->addAction( 'mainwp_pausebackup', array( &$this, 'mainwp_pausebackup' ) );
29 $this->addAction( 'mainwp_resumebackup', array( &$this, 'mainwp_resumebackup' ) );
30
31 add_action( 'wp_ajax_mainwp_backuptask_get_sites', array( &$this, 'mainwp_backuptask_get_sites' ) ); //ok
32
33 if ( mainwp_current_user_can( 'dashboard', 'run_backup_tasks' ) ) {
34 $this->addAction( 'mainwp_backuptask_run_site', array( &$this, 'mainwp_backuptask_run_site' ) );
35 }
36 $this->addAction( 'mainwp_backup_upload_file', array( &$this, 'mainwp_backup_upload_file' ) );
37
38 //Page: ManageSites
39 $this->addAction( 'mainwp_checkwp', array( &$this, 'mainwp_checkwp' ) );
40 $this->addAction( 'mainwp_addwp', array( &$this, 'mainwp_addwp' ) );
41 $this->addAction( 'mainwp_get_site_icon', array( &$this, 'get_site_icon' ) );
42 $this->addAction( 'mainwp_ext_prepareinstallplugintheme', array( &$this, 'mainwp_ext_prepareinstallplugintheme' ) );
43 $this->addAction( 'mainwp_ext_performinstallplugintheme', array( &$this, 'mainwp_ext_performinstallplugintheme' ) );
44 $this->addAction( 'mainwp_ext_applypluginsettings', array( &$this, 'mainwp_ext_applypluginsettings' ) );
45
46 if ( mainwp_current_user_can( 'dashboard', 'test_connection' ) ) {
47 $this->addAction( 'mainwp_testwp', array( &$this, 'mainwp_testwp' ) );
48 }
49
50 $this->addAction( 'mainwp_removesite', array( &$this, 'mainwp_removesite' ) );
51 $this->addAction( 'mainwp_notes_save', array( &$this, 'mainwp_notes_save' ) );
52 add_action( 'wp_ajax_mainwp_reconnectwp', array( &$this, 'mainwp_reconnectwp' ) ); //ok
53 $this->addAction( 'mainwp_updatechildsite_value', array( &$this, 'mainwp_updatechildsite_value' ) ); //ok
54 //Page: ManageGroups
55 $this->addAction( 'mainwp_group_rename', array( &$this, 'mainwp_group_rename' ) );
56 $this->addAction( 'mainwp_group_delete', array( &$this, 'mainwp_group_delete' ) ); //ok
57 $this->addAction( 'mainwp_group_add', array( &$this, 'mainwp_group_add' ) );
58 add_action( 'wp_ajax_mainwp_group_getsites', array( &$this, 'mainwp_group_getsites' ) ); //ok
59 $this->addAction( 'mainwp_group_updategroup', array( &$this, 'mainwp_group_updategroup' ) );
60
61 //Page: InstallPlugins/Themes
62 add_action( 'wp_ajax_mainwp_preparebulkinstallplugintheme', array(
63 &$this,
64 'mainwp_preparebulkinstallplugintheme',
65 ) ); //ok
66 $this->addAction( 'mainwp_installbulkinstallplugintheme', array(
67 &$this,
68 'mainwp_installbulkinstallplugintheme',
69 ) );
70 add_action( 'wp_ajax_mainwp_preparebulkuploadplugintheme', array(
71 &$this,
72 'mainwp_preparebulkuploadplugintheme',
73 ) ); //ok
74 $this->addAction( 'mainwp_installbulkuploadplugintheme', array(
75 &$this,
76 'mainwp_installbulkuploadplugintheme',
77 ) );
78 $this->addAction( 'mainwp_cleanbulkuploadplugintheme', array( &$this, 'mainwp_cleanbulkuploadplugintheme' ) );
79
80 //Page: BulkAddUser
81 $this->addAction( 'mainwp_bulkadduser', array( &$this, 'mainwp_bulkadduser' ) );
82 add_action( 'wp_ajax_mainwp_bulkuploadadduser', array( &$this, 'mainwp_bulkuploadadduser' ) ); //ok - to check
83 $this->addAction( 'mainwp_importuser', array( &$this, 'mainwp_importuser' ) );
84
85 //Widget: RightNow
86 $this->addAction( 'mainwp_syncsites', array( &$this, 'mainwp_syncsites' ) );
87 $this->addAction( 'mainwp_upgradewp', array( &$this, 'mainwp_upgradewp' ) );
88 $this->addAction( 'mainwp_upgradeplugintheme', array( &$this, 'mainwp_upgradeplugintheme' ) );
89 $this->addAction( 'mainwp_ignoreplugintheme', array( &$this, 'mainwp_ignoreplugintheme' ) ); //ok
90 $this->addAction( 'mainwp_unignoreplugintheme', array( &$this, 'mainwp_unignoreplugintheme' ) ); //ok
91 $this->addAction( 'mainwp_ignorepluginsthemes', array( &$this, 'mainwp_ignorepluginsthemes' ) ); //ok
92 $this->addAction( 'mainwp_unignorepluginsthemes', array(
93 &$this,
94 'mainwp_unignorepluginsthemes',
95 ) ); //ok
96 $this->addAction( 'mainwp_unignoreabandonedplugintheme', array(
97 &$this,
98 'mainwp_unignoreabandonedplugintheme',
99 ) ); //ok
100 $this->addAction( 'mainwp_unignoreabandonedpluginsthemes', array(
101 &$this,
102 'mainwp_unignoreabandonedpluginsthemes',
103 ) ); //ok
104 $this->addAction( 'mainwp_dismissoutdateplugintheme', array(
105 &$this,
106 'mainwp_dismissoutdateplugintheme',
107 ) ); //ok
108 $this->addAction( 'mainwp_dismissoutdatepluginsthemes', array(
109 &$this,
110 'mainwp_dismissoutdatepluginsthemes',
111 ) ); //ok
112 $this->addAction( 'mainwp_trust_plugin', array( &$this, 'mainwp_trust_plugin' ) );
113 $this->addAction( 'mainwp_trust_theme', array( &$this, 'mainwp_trust_theme' ) );
114 $this->addAction( 'mainwp_checkbackups', array( &$this, 'mainwp_checkbackups' ) );
115 $this->addAction( 'mainwp_syncerrors_dismiss', array( &$this, 'mainwp_syncerrors_dismiss' ) );
116 //Page: backup
117 if ( mainwp_current_user_can( 'dashboard', 'run_backup_tasks' ) ) {
118 $this->addAction( 'mainwp_backup_run_site', array( &$this, 'mainwp_backup_run_site' ) );
119 }
120 if ( mainwp_current_user_can( 'dashboard', 'execute_backups' ) ) {
121 $this->addAction( 'mainwp_backup', array( &$this, 'mainwp_backup' ) );
122 }
123 $this->addAction( 'mainwp_backup_checkpid', array( &$this, 'mainwp_backup_checkpid' ) );
124 $this->addAction( 'mainwp_createbackup_getfilesize', array( &$this, 'mainwp_createbackup_getfilesize' ) );
125 $this->addAction( 'mainwp_backup_download_file', array( &$this, 'mainwp_backup_download_file' ) );
126 $this->addAction( 'mainwp_backup_delete_file', array( &$this, 'mainwp_backup_delete_file' ) );
127 $this->addAction( 'mainwp_backup_getfilesize', array( &$this, 'mainwp_backup_getfilesize' ) );
128 $this->addAction( 'mainwp_backup_upload_getprogress', array( &$this, 'mainwp_backup_upload_getprogress' ) );
129 $this->addAction( 'mainwp_backup_upload_checkstatus', array( &$this, 'mainwp_backup_upload_checkstatus' ) );
130
131 //Page: CloneSite
132 // add_action('wp_ajax_mainwp_clonesite_check_backups', array(&$this, 'mainwp_clonesite_check_backups'));
133 // add_action('wp_ajax_mainwp_clone', array(&$this, 'mainwp_clone'));
134 // add_action('wp_ajax_mainwp_clone_test_ftp', array(&$this, 'mainwp_clone_test_ftp'));
135
136 if ( mainwp_current_user_can( 'dashboard', 'manage_security_issues' ) ) {
137 //Page: SecurityIssues
138 $this->addAction( 'mainwp_securityIssues_request', array( &$this, 'mainwp_securityIssues_request' ) ); //ok
139 $this->addAction( 'mainwp_securityIssues_fix', array( &$this, 'mainwp_securityIssues_fix' ) ); //ok
140 $this->addAction( 'mainwp_securityIssues_unfix', array( &$this, 'mainwp_securityIssues_unfix' ) ); //ok
141 }
142
143 //Page: ManageTips
144 $this->addAction( 'mainwp_tips_update', array( &$this, 'mainwp_tips_update' ) ); //ok
145 $this->addAction( 'mainwp_notice_status_update', array( &$this, 'mainwp_notice_status_update' ) );
146 $this->addAction( 'mainwp_dismiss_twit', array( &$this, 'mainwp_dismiss_twit' ) );
147 $this->addAction( 'mainwp_dismiss_activate_notice', array( &$this, 'dismiss_activate_notice' ) );
148 $this->addAction( 'mainwp_status_saving', array( &$this, 'mainwp_status_saving' ) );
149 $this->addAction( 'mainwp_leftmenu_filter_group', array( &$this, 'mainwp_leftmenu_filter_group' ) );
150 $this->addAction( 'mainwp_widgets_order', array( &$this, 'ajax_widgets_order' ) );
151 $this->addAction( 'mainwp_save_settings', array( &$this, 'ajax_mainwp_save_settings' ) );
152
153 add_action( 'wp_ajax_mainwp_twitter_dashboard_action', array(
154 &$this,
155 'mainwp_twitter_dashboard_action',
156 ) ); //ok
157
158 add_action( 'wp_ajax_mainwp_reset_usercookies', array( &$this, 'mainwp_reset_usercookies' ) ); //ok
159 //Page: Recent Posts
160 if ( mainwp_current_user_can( 'dashboard', 'manage_posts' ) ) {
161 $this->addAction( 'mainwp_post_unpublish', array( &$this, 'mainwp_post_unpublish' ) );
162 $this->addAction( 'mainwp_post_publish', array( &$this, 'mainwp_post_publish' ) );
163 $this->addAction( 'mainwp_post_trash', array( &$this, 'mainwp_post_trash' ) );
164 $this->addAction( 'mainwp_post_delete', array( &$this, 'mainwp_post_delete' ) );
165 $this->addAction( 'mainwp_post_restore', array( &$this, 'mainwp_post_restore' ) );
166 $this->addAction( 'mainwp_post_approve', array( &$this, 'mainwp_post_approve' ) );
167 }
168 $this->addAction( 'mainwp_post_addmeta', array( MainWP_Post::getClassName(), 'ajax_add_meta', ) );
169 //Page: Pages
170 if ( mainwp_current_user_can( 'dashboard', 'manage_pages' ) ) {
171 $this->addAction( 'mainwp_page_unpublish', array( &$this, 'mainwp_page_unpublish' ) );
172 $this->addAction( 'mainwp_page_publish', array( &$this, 'mainwp_page_publish' ) );
173 $this->addAction( 'mainwp_page_trash', array( &$this, 'mainwp_page_trash' ) );
174 $this->addAction( 'mainwp_page_delete', array( &$this, 'mainwp_page_delete' ) );
175 $this->addAction( 'mainwp_page_restore', array( &$this, 'mainwp_page_restore' ) );
176 }
177 //Page: Users
178 $this->addAction( 'mainwp_user_delete', array( &$this, 'mainwp_user_delete' ) );
179 $this->addAction( 'mainwp_user_edit', array( &$this, 'mainwp_user_edit' ) );
180 $this->addAction( 'mainwp_user_update_password', array( &$this, 'mainwp_user_update_password' ) );
181 $this->addAction( 'mainwp_user_update_user', array( &$this, 'mainwp_user_update_user' ) );
182
183 //Page: Posts
184 add_action( 'wp_ajax_mainwp_posts_search', array( &$this, 'mainwp_posts_search' ) ); //ok
185 add_action( 'wp_ajax_mainwp_get_categories', array( &$this, 'mainwp_get_categories' ) ); //ok
186 add_action( 'wp_ajax_mainwp_posts_get_terms', array( &$this, 'mainwp_posts_get_terms' ) ); //ok
187 add_action( 'wp_ajax_mainwp_posts_test_post', array( &$this, 'mainwp_posts_test_post' ) ); //ok
188 $this->addAction( 'mainwp_post_get_edit', array( &$this, 'mainwp_post_get_edit' ) );
189
190 //Page: Pages
191 add_action( 'wp_ajax_mainwp_pages_search', array( &$this, 'mainwp_pages_search' ) ); //ok
192 //Page: User
193 $this->addAction( 'mainwp_users_search', array( &$this, 'mainwp_users_search' ) );
194
195 //Page: Themes
196 $this->addAction( 'mainwp_themes_search', array( &$this, 'mainwp_themes_search' ) );
197 $this->addAction( 'mainwp_themes_search_all', array( &$this, 'mainwp_themes_search_all' ) );
198 if ( mainwp_current_user_can( 'dashboard', 'activate_themes' ) ) {
199 $this->addAction( 'mainwp_theme_activate', array( &$this, 'mainwp_theme_activate' ) );
200 }
201 if ( mainwp_current_user_can( 'dashboard', 'delete_themes' ) ) {
202 $this->addAction( 'mainwp_theme_delete', array( &$this, 'mainwp_theme_delete' ) );
203 }
204 $this->addAction( 'mainwp_trusted_theme_notes_save', array( &$this, 'mainwp_trusted_theme_notes_save' ) );
205 if ( mainwp_current_user_can( 'dashboard', 'ignore_unignore_updates' ) ) {
206 $this->addAction( 'mainwp_theme_ignore_updates', array( &$this, 'mainwp_theme_ignore_updates' ) );
207 }
208
209 //Page: Plugins
210 $this->addAction( 'mainwp_plugins_search', array( &$this, 'mainwp_plugins_search' ) );
211 $this->addAction( 'mainwp_plugins_search_all_active', array( &$this, 'mainwp_plugins_search_all_active' ) );
212
213 if ( mainwp_current_user_can( 'dashboard', 'activate_deactivate_plugins' ) ) {
214 $this->addAction( 'mainwp_plugin_activate', array( &$this, 'mainwp_plugin_activate' ) );
215 $this->addAction( 'mainwp_plugin_deactivate', array( &$this, 'mainwp_plugin_deactivate' ) );
216 }
217 if ( mainwp_current_user_can( 'dashboard', 'delete_plugins' ) ) {
218 $this->addAction( 'mainwp_plugin_delete', array( &$this, 'mainwp_plugin_delete' ) );
219 }
220
221 if ( mainwp_current_user_can( 'dashboard', 'ignore_unignore_updates' ) ) {
222 $this->addAction( 'mainwp_plugin_ignore_updates', array( &$this, 'mainwp_plugin_ignore_updates' ) );
223 }
224 $this->addAction( 'mainwp_trusted_plugin_notes_save', array( &$this, 'mainwp_trusted_plugin_notes_save' ) );
225
226 //Widget: Plugins
227 $this->addAction( 'mainwp_widget_plugin_activate', array( &$this, 'mainwp_widget_plugin_activate' ) );
228 $this->addAction( 'mainwp_widget_plugin_deactivate', array( &$this, 'mainwp_widget_plugin_deactivate' ) );
229 $this->addAction( 'mainwp_widget_plugin_delete', array( &$this, 'mainwp_widget_plugin_delete' ) );
230
231 //Widget: Themes
232 $this->addAction( 'mainwp_widget_theme_activate', array( &$this, 'mainwp_widget_theme_activate' ) );
233 $this->addAction( 'mainwp_widget_theme_delete', array( &$this, 'mainwp_widget_theme_delete' ) );
234
235 $this->addAction( 'mainwp_events_notice_hide', array( &$this, 'mainwp_events_notice_hide' ) );
236 $this->addAction( 'mainwp_showhide_sections', array( &$this, 'mainwp_showhide_sections' ) );
237 $this->addAction( 'mainwp_saving_status', array( &$this, 'mainwp_saving_status' ) );
238 $this->addAction( 'mainwp_autoupdate_and_trust_child', array( &$this, 'mainwp_autoupdate_and_trust_child' ) );
239 $this->addAction( 'mainwp_installation_warning_hide', array( &$this, 'mainwp_installation_warning_hide' ) );
240 $this->addAction( 'mainwp_force_destroy_sessions', array( &$this, 'mainwp_force_destroy_sessions' ) );
241 $this->addAction( 'mainwp_recheck_http', array( &$this, 'mainwp_recheck_http' ) );
242 $this->addAction( 'mainwp_ignore_http_response', array( &$this, 'mainwp_ignore_http_response' ) );
243 $this->addAction( 'mainwp_disconnect_site', array( &$this, 'ajax_disconnect_site' ) );
244 $this->addAction( 'mainwp_manage_display_rows', array( &$this, 'ajax_display_rows' ) );
245
246 $this->addSecurityNonce( 'mainwp-common-nonce' );
247
248 MainWP_Extensions::initAjaxHandlers();
249
250 add_action( 'wp_ajax_mainwp_childscan', array( &$this, 'mainwp_childscan' ) ); //ok
251 }
252
253 function mainwp_childscan() {
254 //todo: RS: secure action
255 MainWP_Child_Scan::scan();
256 }
257
258 // Hide the installation warning
259 function mainwp_installation_warning_hide() {
260 $this->secure_request( 'mainwp_installation_warning_hide' );
261
262 update_option( 'mainwp_installation_warning_hide_the_notice', 'yes' );
263 die( 'ok' );
264 }
265
266 /**
267 * Page: Users
268 */
269 function mainwp_users_search() {
270 $this->secure_request( 'mainwp_users_search' );
271 MainWP_Cache::initSession();
272 MainWP_User::renderTable( false, $_POST[ 'role' ], ( isset( $_POST[ 'groups' ] ) ? $_POST[ 'groups' ] : '' ), ( isset( $_POST[ 'sites' ] ) ? $_POST[ 'sites' ] : '' ), $_POST[ 'search' ] );
273 die();
274 }
275
276 /**
277 * Page: Themes
278 */
279 function mainwp_themes_search() {
280 $this->secure_request( 'mainwp_themes_search' );
281 MainWP_Cache::initSession();
282 $result = MainWP_Themes::renderTable( $_POST[ 'keyword' ], $_POST[ 'status' ], ( isset( $_POST[ 'groups' ] ) ? $_POST[ 'groups' ] : '' ), ( isset( $_POST[ 'sites' ] ) ? $_POST[ 'sites' ] : '' ) );
283 wp_send_json( $result );
284 }
285
286 function mainwp_theme_activate() {
287 $this->secure_request( 'mainwp_theme_activate' );
288
289 MainWP_Themes::activateTheme();
290 die();
291 }
292
293 function mainwp_theme_delete() {
294 $this->secure_request( 'mainwp_theme_delete' );
295
296 MainWP_Themes::deleteThemes();
297 die();
298 }
299
300 function mainwp_theme_ignore_updates() {
301 $this->secure_request( 'mainwp_theme_ignore_updates' );
302
303 MainWP_Themes::ignoreUpdates();
304 die();
305 }
306
307 function mainwp_themes_search_all() {
308 $this->secure_request( 'mainwp_themes_search_all' );
309 MainWP_Cache::initSession();
310 MainWP_Themes::renderAllThemesTable();
311 die();
312 }
313
314 function mainwp_trusted_theme_notes_save() {
315 $this->secure_request( 'mainwp_trusted_theme_notes_save' );
316
317 MainWP_Themes::saveTrustedThemeNote();
318 die( json_encode( array( 'result' => 'SUCCESS' ) ) );
319 }
320
321 /**
322 * Page: Plugins
323 */
324 function mainwp_plugins_search() {
325 $this->secure_request( 'mainwp_plugins_search' );
326 MainWP_Cache::initSession();
327 $result = MainWP_Plugins::renderTable( $_POST[ 'keyword' ], $_POST[ 'status' ], ( isset( $_POST[ 'groups' ] ) ? $_POST[ 'groups' ] : '' ), ( isset( $_POST[ 'sites' ] ) ? $_POST[ 'sites' ] : '' ) );
328 wp_send_json( $result );
329 }
330
331 function mainwp_plugins_search_all_active() {
332 $this->secure_request( 'mainwp_plugins_search_all_active' );
333 MainWP_Cache::initSession();
334 MainWP_Plugins::renderAllActiveTable();
335 die();
336 }
337
338 function mainwp_plugin_activate() {
339 $this->secure_request( 'mainwp_plugin_activate' );
340
341 MainWP_Plugins::activatePlugins();
342 die();
343 }
344
345 function mainwp_plugin_deactivate() {
346 $this->secure_request( 'mainwp_plugin_deactivate' );
347
348 MainWP_Plugins::deactivatePlugins();
349 die();
350 }
351
352 function mainwp_plugin_delete() {
353 $this->secure_request( 'mainwp_plugin_delete' );
354
355 MainWP_Plugins::deletePlugins();
356 die();
357 }
358
359 function mainwp_plugin_ignore_updates() {
360 $this->secure_request( 'mainwp_plugin_ignore_updates' );
361
362 MainWP_Plugins::ignoreUpdates();
363 die();
364 }
365
366 function mainwp_trusted_plugin_notes_save() {
367 $this->secure_request( 'mainwp_trusted_plugin_notes_save' );
368
369 MainWP_Plugins::saveTrustedPluginNote();
370 die( json_encode( array( 'result' => 'SUCCESS' ) ) );
371 }
372
373 /**
374 * Widget: Plugins
375 */
376 function mainwp_widget_plugin_activate() {
377 $this->secure_request( 'mainwp_widget_plugin_activate' );
378 MainWP_Widget_Plugins::activatePlugin();
379 }
380
381 function mainwp_widget_plugin_deactivate() {
382 $this->secure_request( 'mainwp_widget_plugin_deactivate' );
383 MainWP_Widget_Plugins::deactivatePlugin();
384 }
385
386 function mainwp_widget_plugin_delete() {
387 $this->secure_request( 'mainwp_widget_plugin_delete' );
388 MainWP_Widget_Plugins::deletePlugin();
389 }
390
391 /**
392 * Widget: Themes
393 */
394 function mainwp_widget_theme_activate() {
395 $this->secure_request( 'mainwp_widget_theme_activate' );
396 MainWP_Widget_Themes::activateTheme();
397 }
398
399 function mainwp_widget_theme_delete() {
400 $this->secure_request( 'mainwp_widget_theme_delete' );
401 MainWP_Widget_Themes::deleteTheme();
402 }
403
404 /**
405 * Page: Posts
406 */
407 function mainwp_posts_search() {
408 $this->secure_request();
409
410 $post_type = (isset( $_POST[ 'post_type' ] ) && strlen( trim( $_POST[ 'post_type' ] ) ) > 0 ? $_POST[ 'post_type' ] : 'post');
411
412 if ( isset( $_POST[ 'maximum' ] ) ) {
413 MainWP_Utility::update_option( 'mainwp_maximumPosts', MainWP_Utility::ctype_digit( $_POST[ 'maximum' ] ) ? intval( $_POST[ 'maximum' ] ) : 50 );
414 }
415
416 MainWP_Cache::initSession();
417
418 MainWP_Post::renderTable( false, $_POST[ 'keyword' ], $_POST[ 'dtsstart' ], $_POST[ 'dtsstop' ], $_POST[ 'status' ], (isset( $_POST[ 'groups' ] ) ? $_POST[ 'groups' ] : '' ), (isset( $_POST[ 'sites' ] ) ? $_POST[ 'sites' ] : '' ), $_POST[ 'postId' ], $_POST[ 'userId' ], $post_type, $_POST[ 'search_on' ] );
419
420 die();
421 }
422
423 function mainwp_posts_get_terms() {
424 $this->secure_request();
425 MainWP_Post::getTerms( $_POST[ 'selected_site' ], $_POST[ 'prefix' ], $_POST[ 'what' ], $_POST[ 'generate_type' ] );
426 die();
427 }
428
429 function mainwp_posts_test_post() {
430 $this->secure_request();
431 MainWP_Post::testPost();
432 die();
433 }
434
435 function mainwp_get_categories() {
436 $this->secure_request();
437 MainWP_Post::getCategories();
438 die();
439 }
440
441 function mainwp_post_get_edit() {
442 $this->secure_request( 'mainwp_post_get_edit' );
443 MainWP_Post::getPost(); // to edit
444 die();
445 }
446
447 /**
448 * Page: Pages
449 */
450 function mainwp_pages_search() {
451 $this->secure_request();
452 if ( isset( $_POST[ 'maximum' ] ) ) {
453 MainWP_Utility::update_option( 'mainwp_maximumPages', MainWP_Utility::ctype_digit( $_POST[ 'maximum' ] ) ? intval( $_POST[ 'maximum' ] ) : 50 );
454 }
455
456 MainWP_Cache::initSession();
457
458 MainWP_Page::renderTable( false, $_POST[ 'keyword' ], $_POST[ 'dtsstart' ], $_POST[ 'dtsstop' ], $_POST[ 'status' ], ( isset( $_POST[ 'groups' ] ) ? $_POST[ 'groups' ] : '' ), ( isset( $_POST[ 'sites' ] ) ? $_POST[ 'sites' ] : '' ), $_POST[ 'search_on' ] );
459 die();
460 }
461
462 /**
463 * Page: Users
464 */
465 function mainwp_user_delete() {
466 $this->secure_request( 'mainwp_user_delete' );
467
468 MainWP_User::delete();
469 }
470
471 function mainwp_user_edit() {
472 $this->secure_request( 'mainwp_user_edit' );
473
474 MainWP_User::edit();
475 }
476
477 function mainwp_user_update_password() {
478 $this->secure_request( 'mainwp_user_update_password' );
479
480 MainWP_User::updatePassword();
481 }
482
483 function mainwp_user_update_user() {
484 $this->secure_request( 'mainwp_user_update_user' );
485
486 MainWP_User::updateUser();
487 }
488
489 /**
490 * Page: Recent Posts
491 */
492 function mainwp_post_unpublish() {
493 $this->secure_request( 'mainwp_post_unpublish' );
494
495 MainWP_Recent_Posts::unpublish();
496 }
497
498 function mainwp_post_publish() {
499 $this->secure_request( 'mainwp_post_publish' );
500
501 MainWP_Recent_Posts::publish();
502 }
503
504 function mainwp_post_approve() {
505 $this->secure_request( 'mainwp_post_approve' );
506
507 MainWP_Recent_Posts::approve();
508 }
509
510 function mainwp_post_trash() {
511 $this->secure_request( 'mainwp_post_trash' );
512
513 MainWP_Recent_Posts::trash();
514 }
515
516 function mainwp_post_delete() {
517 $this->secure_request( 'mainwp_post_delete' );
518
519 MainWP_Recent_Posts::delete();
520 }
521
522 function mainwp_post_restore() {
523 $this->secure_request( 'mainwp_post_restore' );
524
525 MainWP_Recent_Posts::restore();
526 }
527
528 /**
529 * Page: Recent Pages
530 */
531 function mainwp_page_unpublish() {
532 $this->secure_request( 'mainwp_page_unpublish' );
533
534 MainWP_Page::unpublish();
535 }
536
537 function mainwp_page_publish() {
538 $this->secure_request( 'mainwp_page_publish' );
539
540 MainWP_Page::publish();
541 }
542
543 function mainwp_page_trash() {
544 $this->secure_request( 'mainwp_page_trash' );
545
546 MainWP_Page::trash();
547 }
548
549 function mainwp_page_delete() {
550 $this->secure_request( 'mainwp_page_delete' );
551
552 MainWP_Page::delete();
553 }
554
555 function mainwp_page_restore() {
556 $this->secure_request( 'mainwp_page_restore' );
557
558 MainWP_Page::restore();
559 }
560
561 /**
562 * Page: ManageTips
563 */
564 function mainwp_managetips_update() {
565 $this->secure_request( 'mainwp_managetips_update' );
566
567 MainWP_Manage_Tips::updateTipSettings();
568 die();
569 }
570
571 // Hide after installtion notices (PHP version, Trust MainWP Child, Multisite Warning and OpenSSL warning)
572 function mainwp_notice_status_update() {
573 $this->secure_request( 'mainwp_notice_status_update' );
574
575 global $current_user;
576 if ( ( $user_id = $current_user->ID ) ) {
577 $status = get_user_option( 'mainwp_notice_saved_status' );
578 if ( !is_array( $status ) ) {
579 $status = array();
580 }
581 $status[ $_POST[ 'notice_id' ] ] = 1;
582 update_user_option( $user_id, 'mainwp_notice_saved_status', $status );
583 }
584 die( 1 );
585 }
586
587 function mainwp_status_saving() {
588 $this->secure_request( 'mainwp_status_saving' );
589 $values = get_option( 'mainwp_status_saved_values' );
590
591 if ( !isset( $_POST[ 'status' ] ) ) {
592 die( -1 );
593 }
594
595 if ( 'last_sync_sites' == $_POST[ 'status' ] ) {
596 update_option( 'mainwp_last_synced_all_sites', time() );
597 do_action( 'mainwp_synced_all_sites' );
598 die( 'ok' );
599 }
600
601 if ( !isset( $_POST[ 'value' ] ) || empty( $_POST[ 'value' ] ) ) {
602 if ( isset( $values[ $_POST[ 'status' ] ] ) )
603 unset( $values[ $_POST[ 'status' ] ] );
604 } else {
605 $values[ $_POST[ 'status' ] ] = $_POST[ 'value' ];
606 }
607
608 update_option( 'mainwp_status_saved_values', $values );
609 die( 'ok' );
610 }
611
612 function ajax_widgets_order() {
613
614 $this->secure_request( 'mainwp_widgets_order' );
615 if ( $user = wp_get_current_user() ) {
616 update_user_option($user->ID, "mainwp_widgets_sorted_" . $_POST['page'], (isset($_POST['order']) ? $_POST['order'] : ''), true);
617 die( 'ok' );
618 }
619 die( -1 );
620
621 }
622
623 function ajax_mainwp_save_settings() {
624 $this->secure_request( 'mainwp_save_settings' );
625 $option_name = 'mainwp_' . $_POST['name'];
626 $val = $_POST['value'];
627
628 MainWP_Utility::update_option( $option_name, $val );
629
630 die( 'ok' );
631 }
632
633 function mainwp_leftmenu_filter_group() {
634 $this->secure_request( 'mainwp_leftmenu_filter_group' );
635 if ( isset( $_POST[ 'group_id' ] ) && !empty( $_POST[ 'group_id' ] ) ) {
636 $ids = '';
637 $websites = MainWP_DB::Instance()->query( MainWP_DB::Instance()->getSQLWebsitesByGroupId( $_POST[ 'group_id' ], true ) );
638 while ( $websites && ( $website = @MainWP_DB::fetch_object( $websites ) ) ) {
639 $ids .= $website->id . ',';
640 }
641 @MainWP_DB::free_result( $websites );
642 $ids = rtrim( $ids, ',' );
643 die( $ids );
644 }
645 die( '' );
646 }
647
648 function mainwp_tips_update() {
649 $this->secure_request( 'mainwp_tips_update' );
650
651 global $current_user;
652 if ( ( $user_id = $current_user->ID ) && isset( $_POST[ 'tipId' ] ) && !empty( $_POST[ 'tipId' ] ) ) {
653 $user_tips = get_user_option( 'mainwp_hide_user_tips' );
654 if ( !is_array( $user_tips ) ) {
655 $user_tips = array();
656 }
657 $user_tips[ $_POST[ 'tipId' ] ] = time();
658 update_user_option( $user_id, 'mainwp_hide_user_tips', $user_tips );
659 }
660 die( 1 );
661 }
662
663
664 function mainwp_dismiss_twit() {
665 $this->secure_request( 'mainwp_dismiss_twit' );
666
667 global $current_user;
668 if ( ( $user_id = $current_user->ID ) && isset( $_POST['twitId'] ) && ! empty( $_POST['twitId'] ) && isset( $_POST['what'] ) && ! empty( $_POST['what'] ) ) {
669 MainWP_Twitter::clearTwitterInfo( $_POST['what'], $_POST['twitId'] );
670 }
671 die( 1 );
672 }
673
674 function dismiss_activate_notice() {
675 $this->secure_request( 'mainwp_dismiss_activate_notice' );
676
677 global $current_user;
678 if ( ( $user_id = $current_user->ID ) && isset( $_POST[ 'slug' ] ) && !empty( $_POST[ 'slug' ] ) ) {
679 $activate_notices = get_user_option( 'mainwp_hide_activate_notices' );
680 if ( !is_array( $activate_notices ) ) {
681 $activate_notices = array();
682 }
683 $activate_notices[ $_POST[ 'slug' ] ] = time();
684 update_user_option( $user_id, 'mainwp_hide_activate_notices', $activate_notices );
685 }
686 die( 1 );
687 }
688
689 function mainwp_twitter_dashboard_action() {
690
691 $success = false;
692 if ( isset( $_POST['actionName'] ) && isset( $_POST['countSites'] ) && ! empty( $_POST['countSites'] ) ) {
693 $success = MainWP_Twitter::updateTwitterInfo( $_POST['actionName'], $_POST['countSites'], (int) $_POST['countSeconds'], ( isset( $_POST['countRealItems'] ) ? $_POST['countRealItems'] : 0 ), time(), ( isset( $_POST['countItems'] ) ? $_POST['countItems'] : 0 ) );
694 }
695
696 if ( isset( $_POST['showNotice'] ) && ! empty( $_POST['showNotice'] ) ) {
697 if ( MainWP_Twitter::enabledTwitterMessages() ) {
698 $twitters = MainWP_Twitter::getTwitterNotice( $_POST['actionName'] );
699 $html = '';
700 if ( is_array( $twitters ) ) {
701 foreach ( $twitters as $timeid => $twit_mess ) {
702 if ( ! empty( $twit_mess ) ) {
703 $sendText = MainWP_Twitter::getTwitToSend( $_POST['actionName'], $timeid );
704 $html .= '<div class="mainwp-tips mainwp-notice mainwp-notice-blue twitter"><span class="mainwp-tip" twit-what="' . esc_attr($_POST['actionName']) . '" twit-id="' . $timeid . '">' . $twit_mess . '</span>&nbsp;' . MainWP_Twitter::genTwitterButton( $sendText, false ) . '<span><a href="#" class="mainwp-dismiss-twit mainwp-right" ><i class="fa fa-times-circle"></i> ' . __( 'Dismiss', 'mainwp' ) . '</a></span></div>';
705 }
706 }
707 }
708 die( $html );
709 }
710 } else if ( $success ) {
711 die( 'ok' );
712 }
713
714 die( '' );
715 }
716
717 function mainwp_reset_usercookies() {
718 $this->secure_request();
719
720 global $current_user;
721 if ( ( $user_id = $current_user->ID ) && isset( $_POST[ 'what' ] ) && !empty( $_POST[ 'what' ] ) ) {
722 $user_cookies = get_user_option( 'mainwp_saved_user_cookies' );
723 if ( !is_array( $user_cookies ) ) {
724 $user_cookies = array();
725 }
726 if ( !isset( $user_cookies[ $_POST[ 'what' ] ] ) ) {
727 $user_cookies[ $_POST[ 'what' ] ] = 1;
728 update_user_option( $user_id, 'mainwp_saved_user_cookies', $user_cookies );
729 }
730 }
731 die( 1 );
732 }
733
734 /**
735 * Page: SecurityIssues
736 */
737 function mainwp_securityIssues_request() {
738 $this->secure_request( 'mainwp_securityIssues_request' );
739
740 try {
741 //die( json_encode( array( 'result' => MainWP_Security_Issues::fetchSecurityIssues() ) ) );
742 wp_send_json( array( 'result' => MainWP_Security_Issues::fetchSecurityIssues() ) );
743 } catch ( MainWP_Exception $e ) {
744 die( json_encode( array(
745 'error' => array(
746 'message' => $e->getMessage(),
747 'extra' => $e->getMessageExtra(),
748 ),
749 ) ) );
750 }
751 }
752
753 function mainwp_securityIssues_fix() {
754 $this->secure_request( 'mainwp_securityIssues_fix' );
755
756 try {
757 //die( json_encode( array( 'result' => MainWP_Security_Issues::fixSecurityIssue() ) ) );
758 wp_send_json( array( 'result' => MainWP_Security_Issues::fixSecurityIssue() ) );
759 } catch ( MainWP_Exception $e ) {
760 die( json_encode( array(
761 'error' => array(
762 'message' => $e->getMessage(),
763 'extra' => $e->getMessageExtra(),
764 ),
765 ) ) );
766 }
767 }
768
769 function mainwp_securityIssues_unfix() {
770 $this->secure_request( 'mainwp_securityIssues_unfix' );
771
772 try {
773 //die( json_encode( array( 'result' => MainWP_Security_Issues::unfixSecurityIssue() ) ) );
774 wp_send_json( array( 'result' => MainWP_Security_Issues::unfixSecurityIssue() ) );
775 } catch ( MainWP_Exception $e ) {
776 die( json_encode( array(
777 'error' => array(
778 'message' => $e->getMessage(),
779 'extra' => $e->getMessageExtra(),
780 ),
781 ) ) );
782 }
783 }
784
785
786 public function ajax_disconnect_site() {
787 $this->secure_request( 'mainwp_disconnect_site' );
788
789 $siteid = $_POST['wp_id'];
790
791 if ( empty( $siteid ) ) {
792 die( json_encode( array( 'error' => 'Error: site id empty' ) ) );
793 }
794
795 $website = MainWP_DB::Instance()->getWebsiteById( $siteid );
796
797 if ( ! $website ) {
798 die( json_encode( array( 'error' => 'Not found site' ) ) );
799 }
800
801 try {
802 $information = MainWP_Utility::fetchUrlAuthed( $website, 'disconnect');
803 } catch ( Exception $e ) {
804 $information = array( 'error' => __( 'fetchUrlAuthed exception', 'mainwp' ) );
805 }
806
807 //die( json_encode( $information ) );
808 wp_send_json( $information );
809 }
810
811 public function ajax_display_rows() {
812 $this->secure_request( 'mainwp_manage_display_rows' );
813 MainWP_Manage_Sites::display_rows();
814 }
815
816 /**
817 * Page: CloneSite
818 */
819 // function mainwp_clonesite_check_backups()
820 // {
821 // die(MainWPCloneSite::render_check_backups());
822 // }
823 // function mainwp_clone()
824 // {
825 // die(MainWPCloneSite::render_clone());
826 // }
827 // function mainwp_clone_test_ftp()
828 // {
829 // die(MainWPCloneSite::testFTP());
830 // }
831
832 /*
833 * Page: Backup
834 */
835 function mainwp_backup_run_site() {
836 $this->secure_request( 'mainwp_backup_run_site' );
837
838 try {
839 if ( !isset( $_POST[ 'site_id' ] ) || !MainWP_Utility::ctype_digit( $_POST[ 'site_id' ] ) ) {
840 throw new MainWP_Exception( 'Invalid request' );
841 }
842
843 //die( json_encode( array( 'result' => MainWP_Manage_Sites::backup( $_POST[ 'site_id' ], 'full', '', '', 1, 1, 1, 1 ) ) ) );
844 $ret = array( 'result' => MainWP_Manage_Sites::backup( $_POST['site_id'], 'full', '', '', 1, 1, 1, 1 ) );
845 wp_send_json($ret);
846 } catch ( MainWP_Exception $e ) {
847 die( json_encode( array(
848 'error' => array(
849 'message' => $e->getMessage(),
850 'extra' => $e->getMessageExtra(),
851 ),
852 ) ) );
853 }
854 }
855
856 function mainwp_backup() {
857 $this->secure_request( 'mainwp_backup' );
858
859 try {
860 if ( !isset( $_POST[ 'site_id' ] ) || !MainWP_Utility::ctype_digit( $_POST[ 'site_id' ] ) ) {
861 throw new MainWP_Exception( 'Invalid request' );
862 }
863
864 $excludedFolder = trim( $_POST[ 'exclude' ], "\n" );
865 $excludedFolder = explode( "\n", $excludedFolder );
866 $excludedFolder = array_map( array( 'MainWP_Utility', 'trimSlashes' ), $excludedFolder );
867 $excludedFolder = array_map( 'htmlentities', $excludedFolder );
868 $excludedFolder = implode( ',', $excludedFolder );
869
870 $result = MainWP_Manage_Sites::backup( $_POST[ 'site_id' ], $_POST[ 'type' ], ( isset( $_POST[ 'subfolder' ] ) ? $_POST[ 'subfolder' ] : '' ), $excludedFolder, $_POST[ 'excludebackup' ], $_POST[ 'excludecache' ], $_POST[ 'excludenonwp' ], $_POST[ 'excludezip' ], $_POST[ 'filename' ], isset( $_POST[ 'fileNameUID' ] ) ? $_POST[ 'fileNameUID' ] : '', $_POST[ 'archiveFormat' ], ( isset($_POST[ 'maximumFileDescriptorsOverride' ]) && $_POST[ 'maximumFileDescriptorsOverride' ] == 1 ), ( $_POST[ 'maximumFileDescriptorsAuto' ] == 1 ), (isset($_POST[ 'maximumFileDescriptors' ]) ? $_POST[ 'maximumFileDescriptors' ] : '') , ( isset( $_POST[ 'loadFilesBeforeZip' ] ) ? $_POST[ 'loadFilesBeforeZip' ] : '' ), $_POST[ 'pid' ], ( isset( $_POST[ 'append' ] ) && ( $_POST[ 'append' ] == 1 ) ) );
871 //die( json_encode( array( 'result' => $result ) ) );
872 wp_send_json( array( 'result' => $result ) );
873 } catch ( MainWP_Exception $e ) {
874 die( json_encode( array(
875 'error' => array(
876 'message' => $e->getMessage(),
877 'extra' => $e->getMessageExtra(),
878 ),
879 ) ) );
880 }
881 }
882
883 function mainwp_backup_checkpid() {
884 $this->secure_request( 'mainwp_backup_checkpid' );
885
886 try {
887 if ( !isset( $_POST[ 'site_id' ] ) || !MainWP_Utility::ctype_digit( $_POST[ 'site_id' ] ) ) {
888 throw new MainWP_Exception( 'Invalid request' );
889 }
890
891 //die( json_encode( MainWP_Manage_Sites::backupCheckpid( $_POST[ 'site_id' ], $_POST[ 'pid' ], $_POST[ 'type' ], $_POST[ 'subfolder' ], $_POST[ 'filename' ] ) ) );
892 wp_send_json( MainWP_Manage_Sites::backupCheckpid( $_POST['site_id'], $_POST['pid'], $_POST['type'], (isset($_POST['subfolder']) ? $_POST['subfolder'] : ''), $_POST['filename'] ) );
893 } catch ( MainWP_Exception $e ) {
894 die( json_encode( array(
895 'error' => array(
896 'message' => $e->getMessage(),
897 'extra' => $e->getMessageExtra(),
898 ),
899 ) ) );
900 }
901 }
902
903 function mainwp_backup_download_file() {
904 $this->secure_request( 'mainwp_backup_download_file' );
905
906 try {
907 if ( !isset( $_POST[ 'site_id' ] ) || !MainWP_Utility::ctype_digit( $_POST[ 'site_id' ] ) ) {
908 throw new MainWP_Exception( 'Invalid request' );
909 }
910
911 die( json_encode( array( 'result' => MainWP_Manage_Sites::backupDownloadFile( $_POST[ 'site_id' ], $_POST[ 'type' ], $_POST[ 'url' ], $_POST[ 'local' ] ) ) ) );
912 } catch ( MainWP_Exception $e ) {
913 die( json_encode( array(
914 'error' => array(
915 'message' => $e->getMessage(),
916 'extra' => $e->getMessageExtra(),
917 ),
918 ) ) );
919 }
920 }
921
922 function mainwp_backup_delete_file() {
923 $this->secure_request( 'mainwp_backup_delete_file' );
924
925 try {
926 if ( !isset( $_POST[ 'site_id' ] ) || !MainWP_Utility::ctype_digit( $_POST[ 'site_id' ] ) ) {
927 throw new MainWP_Exception( __( 'Invalid request!', 'mainwp' ) );
928 }
929
930 die( json_encode( array( 'result' => MainWP_Manage_Sites::backupDeleteFile( $_POST[ 'site_id' ], $_POST[ 'file' ] ) ) ) );
931 } catch ( MainWP_Exception $e ) {
932 die( json_encode( array(
933 'error' => array(
934 'message' => $e->getMessage(),
935 'extra' => $e->getMessageExtra(),
936 ),
937 ) ) );
938 }
939 }
940
941 function mainwp_createbackup_getfilesize() {
942 $this->secure_request( 'mainwp_createbackup_getfilesize' );
943
944 try {
945 if ( !isset( $_POST[ 'siteId' ] ) ) {
946 throw new Exception( __( 'No site selected!', 'mainwp' ) );
947 }
948 $siteId = $_POST[ 'siteId' ];
949 $fileName = $_POST[ 'fileName' ];
950 $fileNameUID = $_POST[ 'fileNameUID' ];
951 $type = $_POST[ 'type' ];
952
953 $website = MainWP_DB::Instance()->getWebsiteById( $siteId );
954 if ( !$website ) {
955 throw new Exception( __( 'No site selected!', 'mainwp' ) );
956 }
957
958 MainWP_Utility::endSession();
959 //Send request to the childsite!
960 $result = MainWP_Utility::fetchUrlAuthed( $website, 'createBackupPoll', array(
961 'fileName' => $fileName,
962 'fileNameUID' => $fileNameUID,
963 'type' => $type,
964 ) );
965
966 if ( !isset( $result[ 'size' ] ) ) {
967 throw new Exception( __( 'Invalid response!', 'mainwp' ) );
968 }
969
970 if ( MainWP_Utility::ctype_digit( $result[ 'size' ] ) ) {
971 $output = array( 'size' => $result[ 'size' ] );
972 } else {
973 $output = array();
974 }
975 } catch ( Exception $e ) {
976 $output = array( 'error' => $e->getMessage() );
977 }
978
979 die( json_encode( $output ) );
980 }
981
982 function mainwp_backup_getfilesize() {
983 $this->secure_request( 'mainwp_backup_getfilesize' );
984
985 try {
986 die( json_encode( array( 'result' => MainWP_Manage_Sites::backupGetFilesize( $_POST[ 'local' ] ) ) ) );
987 } catch ( MainWP_Exception $e ) {
988 die( json_encode( array(
989 'error' => array(
990 'message' => $e->getMessage(),
991 'extra' => $e->getMessageExtra(),
992 ),
993 ) ) );
994 }
995 }
996
997 function mainwp_backup_upload_checkstatus() {
998 $this->secure_request( 'mainwp_backup_upload_checkstatus' );
999
1000 try {
1001 $array = get_option( 'mainwp_upload_progress' );
1002 $info = apply_filters( 'mainwp_remote_destination_info', array(), $_POST[ 'remote_destination' ] );
1003
1004 if ( !is_array( $array ) || !isset( $array[ $_POST[ 'unique' ] ] ) || !isset( $array[ $_POST[ 'unique' ] ][ 'dts' ] ) ) {
1005 die( json_encode( array( 'status' => 'stalled', 'info' => $info ) ) );
1006 } else if ( isset( $array[ $_POST[ 'unique' ] ][ 'finished' ] ) ) {
1007 die( json_encode( array( 'status' => 'done', 'info' => $info ) ) );
1008 } else {
1009 if ( $array[ $_POST[ 'unique' ] ][ 'dts' ] < ( time() - ( 2 * 60 ) ) ) { //2minutes
1010 die( json_encode( array( 'status' => 'stalled', 'info' => $info ) ) );
1011 } else {
1012 die( json_encode( array( 'status' => 'busy', 'info' => $info ) ) );
1013 }
1014 }
1015 } catch ( MainWP_Exception $e ) {
1016 die( json_encode( array(
1017 'error' => array(
1018 'message' => $e->getMessage(),
1019 'extra' => $e->getMessageExtra(),
1020 ),
1021 ) ) );
1022 }
1023 }
1024
1025 function mainwp_backup_upload_getprogress() {
1026 $this->secure_request( 'mainwp_backup_upload_getprogress' );
1027
1028 try {
1029 $array = get_option( 'mainwp_upload_progress' );
1030
1031 if ( !is_array( $array ) || !isset( $array[ $_POST[ 'unique' ] ] ) ) {
1032 die( json_encode( array( 'result' => 0 ) ) );
1033 } else if ( isset( $array[ $_POST[ 'unique' ] ][ 'finished' ] ) ) {
1034 throw new MainWP_Exception( __( 'finished...', 'maiwnp' ) );
1035 } else {
1036 //die( json_encode( array( 'result' => ( isset( $array[ $_POST[ 'unique' ] ][ 'offset' ] ) ? $array[ $_POST[ 'unique' ] ][ 'offset' ] : $array[ $_POST[ 'unique' ] ] ) ) ) );
1037 wp_send_json( array( 'result' => ( isset( $array[ $_POST['unique'] ]['offset'] ) ? $array[ $_POST['unique'] ]['offset'] : $array[ $_POST['unique'] ] ) ) );
1038 }
1039 } catch ( MainWP_Exception $e ) {
1040 die( json_encode( array(
1041 'error' => array(
1042 'message' => $e->getMessage(),
1043 'extra' => $e->getMessageExtra(),
1044 ),
1045 ) ) );
1046 }
1047 }
1048
1049 /*
1050 * Page: BulkAddUser
1051 */
1052
1053 function mainwp_bulkadduser() {
1054 if ( !$this->check_security( 'mainwp_bulkadduser' ) ) {
1055 die( 'ERROR ' . json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1056 }
1057 MainWP_User::doBukAdd();
1058 die();
1059 }
1060
1061 function mainwp_bulkuploadadduser() {
1062 $this->secure_request();
1063
1064 MainWP_User::renderBulkUpload();
1065 die();
1066 }
1067
1068 function mainwp_importuser() {
1069 $this->secure_request( 'mainwp_importuser' );
1070
1071 MainWP_User::doImport();
1072 }
1073
1074 /*
1075 * Page: InstallPlugins/Themes
1076 */
1077
1078 function mainwp_preparebulkinstallplugintheme() {
1079 $this->secure_request();
1080
1081 MainWP_Install_Bulk::prepareInstall();
1082 }
1083
1084 function mainwp_installbulkinstallplugintheme() {
1085 $this->secure_request( 'mainwp_installbulkinstallplugintheme' );
1086
1087 MainWP_Install_Bulk::performInstall();
1088 }
1089
1090 function mainwp_preparebulkuploadplugintheme() {
1091 $this->secure_request();
1092
1093 MainWP_Install_Bulk::prepareUpload();
1094 }
1095
1096 function mainwp_installbulkuploadplugintheme() {
1097 $this->secure_request( 'mainwp_installbulkuploadplugintheme' );
1098
1099 MainWP_Install_Bulk::performUpload();
1100 }
1101
1102 function mainwp_cleanbulkuploadplugintheme() {
1103 $this->secure_request( 'mainwp_cleanbulkuploadplugintheme' );
1104
1105 MainWP_Install_Bulk::cleanUpload();
1106 }
1107
1108 /*
1109 * Page: ManageGroups
1110 */
1111
1112 function mainwp_group_rename() {
1113 $this->secure_request( 'mainwp_group_rename' );
1114
1115 MainWP_Manage_Groups::renameGroup();
1116 }
1117
1118 function mainwp_group_delete() {
1119 $this->secure_request( 'mainwp_group_delete' );
1120
1121 MainWP_Manage_Groups::deleteGroup();
1122 }
1123
1124 function mainwp_group_add() {
1125 $this->secure_request( 'mainwp_group_add' );
1126
1127 MainWP_Manage_Groups::addGroup();
1128 }
1129
1130 function mainwp_group_getsites() {
1131 $this->secure_request();
1132
1133 die( MainWP_Manage_Groups::getSites() );
1134 }
1135
1136 function mainwp_group_updategroup() {
1137 $this->secure_request( 'mainwp_group_updategroup' );
1138
1139 MainWP_Manage_Groups::updateGroup();
1140 }
1141
1142 /*
1143 * Page: ManageBackups
1144 */
1145
1146 //Add task to the database
1147 function mainwp_addbackup() {
1148 $this->secure_request( 'mainwp_addbackup' );
1149
1150 MainWP_Manage_Backups::addBackup();
1151 }
1152
1153 //Update task
1154 function mainwp_updatebackup() {
1155 $this->secure_request( 'mainwp_updatebackup' );
1156
1157 MainWP_Manage_Backups::updateBackup();
1158 }
1159
1160 //Remove a task from MainWP
1161 function mainwp_removebackup() {
1162 $this->secure_request( 'mainwp_removebackup' );
1163
1164 MainWP_Manage_Backups::removeBackup();
1165 }
1166
1167 function mainwp_resumebackup() {
1168 $this->secure_request( 'mainwp_resumebackup' );
1169
1170 MainWP_Manage_Backups::resumeBackup();
1171 }
1172
1173 function mainwp_pausebackup() {
1174 $this->secure_request( 'mainwp_pausebackup' );
1175
1176 MainWP_Manage_Backups::pauseBackup();
1177 }
1178
1179 function mainwp_backuptask_get_sites() {
1180 $this->secure_request();
1181
1182 $taskID = $_POST[ 'task_id' ];
1183
1184 //die( json_encode( array( 'result' => MainWP_Manage_Backups::getBackupTaskSites( $taskID ) ) ) );
1185 wp_send_json( array( 'result' => MainWP_Manage_Backups::getBackupTaskSites( $taskID ) ) );
1186
1187 }
1188
1189 function mainwp_backuptask_run_site() {
1190 try {
1191 $this->secure_request( 'mainwp_backuptask_run_site' );
1192
1193 if ( !isset( $_POST[ 'site_id' ] ) || !MainWP_Utility::ctype_digit( $_POST[ 'site_id' ] ) || !isset( $_POST[ 'task_id' ] ) || !MainWP_Utility::ctype_digit( $_POST[ 'task_id' ] ) ) {
1194 throw new MainWP_Exception( 'Invalid request' );
1195 }
1196
1197 //die( json_encode( array( 'result' => MainWP_Manage_Backups::backup( $_POST[ 'task_id' ], $_POST[ 'site_id' ], $_POST[ 'fileNameUID' ] ) ) ) );
1198 wp_send_json( array( 'result' => MainWP_Manage_Backups::backup( $_POST['task_id'], $_POST['site_id'], $_POST['fileNameUID'] ) ) );
1199 } catch ( MainWP_Exception $e ) {
1200 die( json_encode( array(
1201 'error' => array(
1202 'message' => $e->getMessage(),
1203 'extra' => $e->getMessageExtra(),
1204 ),
1205 ) ) );
1206 }
1207 }
1208
1209 function mainwp_backup_upload_file() {
1210 try {
1211 $this->secure_request( 'mainwp_backup_upload_file' );
1212
1213 do_action( 'mainwp_remote_backup_extension_backup_upload_file' );
1214
1215 throw new MainWP_Exception( __( 'Remote Backup extension has not been installed or activated.', 'mainwp' ) );
1216 } catch ( MainWP_Exception $e ) {
1217 die( json_encode( array(
1218 'error' => array(
1219 'message' => $e->getMessage(),
1220 'extra' => $e->getMessageExtra(),
1221 ),
1222 ) ) );
1223 }
1224 }
1225
1226 /*
1227 * Page: ManageSites
1228 */
1229
1230 //Check if WP can be added
1231 function mainwp_checkwp() {
1232 if ( $this->check_security( 'mainwp_checkwp', 'security' ) ) {
1233 MainWP_Manage_Sites::checkSite();
1234 } else {
1235 die( json_encode( array( 'response' => __( 'ERROR: Invalid request!', 'mainwp' ) ) ) );
1236 }
1237 }
1238
1239 //Add WP to the database
1240 function mainwp_addwp() {
1241 if ( $this->check_security( 'mainwp_addwp', 'security' ) ) {
1242 MainWP_Manage_Sites::addSite();
1243 } else {
1244 die( json_encode( array( 'response' => __( 'ERROR: Invalid request!', 'mainwp' ) ) ) );
1245 }
1246 }
1247
1248 function get_site_icon() {
1249 if ( $this->check_security( 'mainwp_get_site_icon', 'security' ) ) {
1250 $result = MainWP_System::sync_site_icon();
1251 //die( json_encode( $result ) );
1252 wp_send_json( $result );
1253 } else {
1254 die( json_encode( array( 'error' => __( 'ERROR: Invalid request!', 'mainwp' ) ) ) );
1255 }
1256 }
1257
1258 function mainwp_ext_prepareinstallplugintheme() {
1259
1260 do_action( 'mainwp_prepareinstallplugintheme' );
1261 }
1262
1263 function mainwp_ext_performinstallplugintheme() {
1264
1265 do_action( 'mainwp_performinstallplugintheme' );
1266 }
1267
1268 function mainwp_ext_applypluginsettings() {
1269 if ( $this->check_security( 'mainwp_ext_applypluginsettings', 'security' ) ) {
1270 MainWP_Manage_Sites::apply_plugin_settings();
1271 } else {
1272 die( json_encode( array( 'error' => __( 'ERROR: Invalid request!', 'mainwp' ) ) ) );
1273 }
1274 }
1275
1276 function mainwp_testwp() {
1277 $this->secure_request( 'mainwp_testwp' );
1278
1279 $url = null;
1280 $name = null;
1281 $http_user = null;
1282 $http_pass = null;
1283 $verifyCertificate = 1;
1284 $sslVersion = 0;
1285
1286 if ( isset( $_POST[ 'url' ] ) ) {
1287 $url = $_POST[ 'url' ];
1288
1289 $temp_url = MainWP_Utility::removeHttpPrefix( $url, true );
1290
1291 if ( strpos( $temp_url, ":" ) ) {
1292 die( json_encode( array( 'error' => __( 'Invalid URL.', 'mainwp' ) ) ) );
1293 }
1294
1295 $verifyCertificate = $_POST[ 'test_verify_cert' ];
1296 $forceUseIPv4 = $_POST[ 'test_force_use_ipv4' ];
1297 $sslVersion = $_POST['test_ssl_version'];
1298 $http_user = $_POST[ 'http_user' ];
1299 $http_pass = $_POST[ 'http_pass' ];
1300
1301 } else if ( isset( $_POST[ 'siteid' ] ) ) {
1302 $website = MainWP_DB::Instance()->getWebsiteById( $_POST[ 'siteid' ] );
1303 if ( $website ) {
1304 $url = $website->url;
1305 $name = $website->name;
1306 $verifyCertificate = $website->verify_certificate;
1307 $forceUseIPv4 = $website->force_use_ipv4;
1308 $sslVersion = $website->ssl_version;
1309 $http_user = $website->http_user;
1310 $http_pass = $website->http_pass;
1311 }
1312 }
1313
1314 $rslt = MainWP_Utility::tryVisit( $url, $verifyCertificate, $http_user, $http_pass, $sslVersion, $forceUseIPv4 );
1315
1316 if ( isset( $rslt[ 'error' ] ) && ( $rslt[ 'error' ] != '' ) && ( substr( $url, - 9 ) != 'wp-admin/' ) ) {
1317 if ( substr( $url, - 1 ) != '/' ) {
1318 $url .= '/';
1319 }
1320 $url .= 'wp-admin/';
1321 $newrslt = MainWP_Utility::tryVisit( $url, $verifyCertificate, $http_user, $http_pass, $sslVersion, $forceUseIPv4 );
1322 if ( isset( $newrslt[ 'error' ] ) && ( $rslt[ 'error' ] != '' ) ) {
1323 $rslt = $newrslt;
1324 }
1325 }
1326
1327 if ( $name != null ) {
1328 $rslt[ 'sitename' ] = esc_html($name);
1329 }
1330
1331 //die( json_encode( $rslt ) );
1332 wp_send_json( $rslt );
1333 }
1334
1335 //Remove a website from MainWP
1336 function mainwp_removesite() {
1337 if ( !mainwp_current_user_can( 'dashboard', 'delete_sites' ) ) {
1338 die( json_encode( array( 'error' => mainwp_do_not_have_permissions( __( 'delete sites', 'mainwp' ), false ) ) ) );
1339 }
1340
1341 $this->secure_request( 'mainwp_removesite' );
1342
1343 MainWP_Manage_Sites::removeSite();
1344 }
1345
1346 //Save note
1347 function mainwp_notes_save() {
1348 $this->secure_request( 'mainwp_notes_save' );
1349
1350 MainWP_Manage_Sites::saveNote();
1351 }
1352
1353 function mainwp_reconnectwp() {
1354 $this->secure_request();
1355
1356 MainWP_Manage_Sites::reconnectSite();
1357 }
1358
1359 function mainwp_updatechildsite_value() {
1360 $this->secure_request( 'mainwp_updatechildsite_value' );
1361
1362 MainWP_Manage_Sites::updateChildsiteValue();
1363 }
1364
1365 /*
1366 * Widget: RightNow
1367 */
1368
1369 function mainwp_syncsites() {
1370 $this->secure_request( 'mainwp_syncsites' );
1371 MainWP_Updates_Overview::dismissSyncErrors( false );
1372 MainWP_Updates_Overview::syncSite();
1373 }
1374
1375 //Update a specific WP
1376 function mainwp_upgradewp() {
1377 if ( !mainwp_current_user_can( 'dashboard', 'update_wordpress' ) ) {
1378 die( json_encode( array( 'error' => mainwp_do_not_have_permissions( __( 'update WordPress', 'mainwp' ), $echo = false ) ) ) );
1379 }
1380
1381 $this->secure_request( 'mainwp_upgradewp' );
1382
1383 try {
1384 $id = null;
1385 if ( isset( $_POST[ 'id' ] ) ) {
1386 $id = $_POST[ 'id' ];
1387 }
1388 die( json_encode( array( 'result' => MainWP_Updates::upgradeSite( $id ) ) ) ); //ok
1389 } catch ( MainWP_Exception $e ) {
1390 die( json_encode( array(
1391 'error' => array(
1392 'message' => $e->getMessage(),
1393 'extra' => $e->getMessageExtra(),
1394 ),
1395 ) ) );
1396 }
1397 }
1398
1399 //todo: rename
1400 function mainwp_upgradeplugintheme() {
1401
1402 if ( !isset($_POST['type'] ) )
1403 die( json_encode( array( 'error' => '<i class="red times icon"></i> ' . __( 'Invalid request', 'mainwp' ) ) ) );
1404
1405
1406 if ( $_POST[ 'type' ] == 'plugin' && !mainwp_current_user_can( 'dashboard', 'update_plugins' ) ) {
1407 die( json_encode( array( 'error' => mainwp_do_not_have_permissions( __( 'update plugins', 'mainwp' ), $echo = false ) ) ) );
1408 }
1409
1410 if ( $_POST[ 'type' ] == 'theme' && !mainwp_current_user_can( 'dashboard', 'update_themes' ) ) {
1411 die( json_encode( array( 'error' => mainwp_do_not_have_permissions( __( 'update themes', 'mainwp' ), $echo = false ) ) ) );
1412 }
1413
1414 if ( $_POST[ 'type' ] == 'translation' && !mainwp_current_user_can( 'dashboard', 'update_translations' ) ) {
1415 die( json_encode( array( 'error' => mainwp_do_not_have_permissions( __( 'update translations', 'mainwp' ), $echo = false ) ) ) );
1416 }
1417
1418 $this->secure_request( 'mainwp_upgradeplugintheme' );
1419
1420 // at the moment: support chunk update for manage sites page only
1421 $chunk_support = isset( $_POST['chunk_support'] ) && $_POST['chunk_support'] ? true : false;
1422 $max_update = 0;
1423 $websiteId = null;
1424 $slugs = '';
1425
1426 if ( isset( $_POST['websiteId'] ) ) {
1427 $websiteId = $_POST['websiteId'];
1428
1429 if ($chunk_support) {
1430 $max_update = apply_filters('mainwp_update_plugintheme_max', false, $websiteId );
1431 if (empty($max_update)) {
1432 $chunk_support = false; // there is not hook so disable chunk update support
1433 }
1434 }
1435 if ( $chunk_support ) {
1436 if (isset($_POST['chunk_slugs'])) {
1437 $slugs = $_POST['chunk_slugs']; // chunk slugs send so use this
1438 } else {
1439 $slugs = MainWP_Updates::getPluginThemeSlugs( $websiteId, $_POST['type'] );
1440 }
1441 } else if ( isset( $_POST['slug'] ) ) {
1442 $slugs = $_POST['slug'];
1443 } else {
1444 $slugs = MainWP_Updates::getPluginThemeSlugs( $websiteId, $_POST['type'] );
1445 }
1446 }
1447
1448 if ( MainWP_DB::Instance()->backupFullTaskRunning( $websiteId ) ) {
1449 die( json_encode( array( 'error' => __( 'Backup process in progress on the child site. Please, try again later.', 'mainwp' ) ) ) );
1450 }
1451
1452 $chunk_slugs = array();
1453
1454 if ( $chunk_support ){
1455 // calculate update slugs here
1456 if ( $max_update ) {
1457 $slugs = explode(",", $slugs);
1458 $chunk_slugs = array_slice($slugs, $max_update);
1459 $update_slugs = array_diff($slugs, $chunk_slugs);
1460 $slugs = implode(",", $update_slugs);
1461 }
1462 }
1463
1464 if ( empty( $slugs ) && ! $chunk_support ) {
1465 die( json_encode( array( 'message' => __( 'Item slug could not be found. Update process could not be executed.', 'mainwp' ) ) ) );
1466 }
1467 $website = MainWP_DB::Instance()->getWebsiteById( $websiteId );
1468 try {
1469 $info = array( 'result' => MainWP_Updates::upgradePluginThemeTranslation( $websiteId, $_POST['type'], $slugs ) );
1470
1471 if ( $chunk_support && (count($chunk_slugs) > 0) ) {
1472 $info['chunk_slugs'] = implode(",", $chunk_slugs);
1473 }
1474
1475 if (!empty($website)) {
1476 $info['site_url'] = esc_url($website->url);
1477 }
1478 // die( json_encode( $info ) );
1479 wp_send_json( $info );
1480 } catch ( MainWP_Exception $e ) {
1481 die( json_encode( array(
1482 'error' => array(
1483 'message' => $e->getMessage(),
1484 'extra' => $e->getMessageExtra(),
1485 ),
1486 ) ) );
1487 }
1488
1489 }
1490
1491 function mainwp_ignoreplugintheme() {
1492 $this->secure_request( 'mainwp_ignoreplugintheme' );
1493
1494 if ( !isset( $_POST[ 'id' ] ) ) {
1495 die( json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1496 }
1497 wp_send_json( array( 'result' => MainWP_Updates::ignorePluginTheme( $_POST['type'], $_POST['slug'], $_POST['name'], $_POST['id'] ) ) );
1498 }
1499
1500 function mainwp_unignoreabandonedplugintheme() {
1501 $this->secure_request( 'mainwp_unignoreabandonedplugintheme' );
1502
1503 if ( !isset( $_POST[ 'id' ] ) ) {
1504 die( json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1505 }
1506 die( json_encode( array( 'result' => MainWP_Updates::unIgnoreAbandonedPluginTheme( $_POST[ 'type' ], $_POST[ 'slug' ], $_POST[ 'id' ] ) ) ) ); // ok
1507 }
1508
1509 function mainwp_unignoreabandonedpluginsthemes() {
1510 $this->secure_request( 'mainwp_unignoreabandonedpluginsthemes' );
1511
1512 if ( !isset( $_POST[ 'slug' ] ) ) {
1513 die( json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1514 }
1515 die( json_encode( array( 'result' => MainWP_Updates::unIgnoreAbandonedPluginsThemes( $_POST[ 'type' ], $_POST[ 'slug' ] ) ) ) );
1516 }
1517
1518 function mainwp_dismissoutdateplugintheme() {
1519 $this->secure_request( 'mainwp_dismissoutdateplugintheme' );
1520
1521 if ( !isset( $_POST[ 'id' ] ) ) {
1522 die( json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1523 }
1524 die( json_encode( array( 'result' => MainWP_Updates::dismissPluginTheme( $_POST[ 'type' ], $_POST[ 'slug' ], $_POST[ 'name' ], $_POST[ 'id' ] ) ) ) );
1525 }
1526
1527 function mainwp_dismissoutdatepluginsthemes() {
1528 $this->secure_request( 'mainwp_dismissoutdatepluginsthemes' );
1529
1530 if ( !mainwp_current_user_can( 'dashboard', 'ignore_unignore_updates' ) ) {
1531 die( json_encode( array( 'error' => mainwp_do_not_have_permissions( __( 'ignore/unignore updates', 'mainwp' ) ) ) ) );
1532 }
1533
1534 if ( !isset( $_POST[ 'slug' ] ) ) {
1535 die( json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1536 }
1537 die( json_encode( array( 'result' => MainWP_Updates::dismissPluginsThemes( $_POST[ 'type' ], $_POST[ 'slug' ], $_POST[ 'name' ] ) ) ) );
1538 }
1539
1540 function mainwp_unignoreplugintheme() {
1541 $this->secure_request( 'mainwp_unignoreplugintheme' );
1542
1543 if ( !isset( $_POST[ 'id' ] ) ) {
1544 die( json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1545 }
1546 die( json_encode( array( 'result' => MainWP_Updates::unIgnorePluginTheme( $_POST[ 'type' ], $_POST[ 'slug' ], $_POST[ 'id' ] ) ) ) );
1547 }
1548
1549 function mainwp_ignorepluginsthemes() {
1550 $this->secure_request( 'mainwp_ignorepluginsthemes' );
1551
1552 if ( !mainwp_current_user_can( 'dashboard', 'ignore_unignore_updates' ) ) {
1553 die( json_encode( array( 'error' => mainwp_do_not_have_permissions( __( 'ignore/unignore updates', 'mainwp' ) ) ) ) );
1554 }
1555
1556 if ( !isset( $_POST[ 'slug' ] ) ) {
1557 die( json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1558 }
1559 die( json_encode( array( 'result' => MainWP_Updates::ignorePluginsThemes( $_POST[ 'type' ], $_POST[ 'slug' ], $_POST[ 'name' ] ) ) ) ); //ok
1560 }
1561
1562 function mainwp_unignorepluginsthemes() {
1563 $this->secure_request( 'mainwp_unignorepluginsthemes' );
1564
1565 if ( !isset( $_POST[ 'slug' ] ) ) {
1566 die( json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1567 }
1568 die( json_encode( array( 'result' => MainWP_Updates::unIgnorePluginsThemes( $_POST[ 'type' ], $_POST[ 'slug' ] ) ) ) );
1569 }
1570
1571 function mainwp_trust_plugin() {
1572 $this->secure_request( 'mainwp_trust_plugin' );
1573
1574 MainWP_Plugins::trustPost();
1575 die( json_encode( array( 'result' => true ) ) );
1576 }
1577
1578 function mainwp_trust_theme() {
1579 $this->secure_request( 'mainwp_trust_theme' );
1580
1581 MainWP_Themes::trustPost();
1582 die( json_encode( array( 'result' => true ) ) );
1583 }
1584
1585 function mainwp_checkbackups() {
1586 $this->secure_request( 'mainwp_checkbackups' );
1587
1588 try {
1589 //die( json_encode( array( 'result' => MainWP_Updates_Overview::checkBackups() ) ) );
1590 wp_send_json( array( 'result' => MainWP_Updates_Overview::checkBackups() ) );
1591 } catch ( Exception $e ) {
1592 die( json_encode( array( 'error' => $e->getMessage() ) ) );
1593 }
1594 }
1595
1596 function mainwp_syncerrors_dismiss() {
1597 $this->secure_request( 'mainwp_syncerrors_dismiss' );
1598
1599 try {
1600 die( json_encode( array( 'result' => MainWP_Updates_Overview::dismissSyncErrors() ) ) );
1601 } catch ( Exception $e ) {
1602 die( json_encode( array( 'error' => $e->getMessage() ) ) );
1603 }
1604 }
1605
1606
1607 function mainwp_events_notice_hide() {
1608 $this->secure_request( 'mainwp_events_notice_hide' );
1609
1610 if ( isset( $_POST[ 'notice' ] ) ) {
1611 $current_options = get_option( 'mainwp_showhide_events_notice' );
1612 if ( !is_array( $current_options ) ) {
1613 $current_options = array();
1614 }
1615 if ( $_POST[ 'notice' ] == 'first_site' ) {
1616 update_option( 'mainwp_first_site_events_notice', '' );
1617 } else if ( $_POST[ 'notice' ] == 'request_reviews1' ) {
1618 $current_options[ 'request_reviews1' ] = 15;
1619 $current_options[ 'request_reviews1_starttime' ] = time();
1620 } else if ( $_POST[ 'notice' ] == 'request_reviews1_forever' || $_POST[ 'notice' ] == 'request_reviews2_forever' ) {
1621 $current_options[ 'request_reviews1' ] = 'forever';
1622 $current_options[ 'request_reviews2' ] = 'forever';
1623 } else if ( $_POST[ 'notice' ] == 'request_reviews2' ) {
1624 $current_options[ 'request_reviews2' ] = 15;
1625 $current_options[ 'request_reviews2_starttime' ] = time();
1626 } else if ( $_POST[ 'notice' ] == 'trust_child' ) {
1627 $current_options[ 'trust_child' ] = 1;
1628 } else if ( $_POST[ 'notice' ] == 'multi_site' ) {
1629 $current_options[ 'hide_multi_site_notice' ] = 1;
1630 }
1631 update_option( 'mainwp_showhide_events_notice', $current_options );
1632 }
1633 die( 'ok' );
1634 }
1635
1636 function mainwp_showhide_sections() {
1637 if ( isset( $_POST[ 'sec' ] ) && isset( $_POST[ 'status' ] ) ) {
1638 $opts = get_option( 'mainwp_opts_showhide_sections' );
1639 if ( !is_array( $opts ) ) {
1640 $opts = array();
1641 }
1642 $opts[ $_POST[ 'sec' ] ] = $_POST[ 'status' ];
1643 update_option( 'mainwp_opts_showhide_sections', $opts );
1644 die( 'ok' );
1645 }
1646 die( 'failed' );
1647 }
1648
1649 function mainwp_saving_status() {
1650 if ( !isset( $_REQUEST[ 'nonce' ] ) || !wp_verify_nonce( $_REQUEST[ 'nonce' ], 'mainwp_ajax' ) ) {
1651 die( 'Invalid request.' );
1652 }
1653 if ( isset( $_POST[ 'saving_status' ] ) ) {
1654 $current_options = get_option( 'mainwp_opts_saving_status' );
1655 if ( !is_array( $current_options ) ) {
1656 $current_options = array();
1657 }
1658
1659 if ( !empty( $_POST[ 'saving_status' ] ) ) {
1660 $current_options[ $_POST[ 'saving_status' ] ] = $_POST[ 'value' ];
1661 }
1662
1663 update_option( 'mainwp_opts_saving_status', $current_options );
1664 }
1665 die( 'ok' );
1666 }
1667
1668 function mainwp_recheck_http() {
1669 if ( !$this->check_security( 'mainwp_recheck_http' ) ) {
1670 die( json_encode( array( 'error' => __( 'ERROR: Invalid request!', 'mainwp' ) ) ) );
1671 }
1672
1673 if ( !isset( $_POST[ 'websiteid' ] ) || empty( $_POST[ 'websiteid' ] ) ) {
1674 die( -1 );
1675 }
1676
1677 $website = MainWP_DB::Instance()->getWebsiteById( $_POST[ 'websiteid' ] );
1678 if ( empty( $website ) )
1679 die( -1 );
1680
1681 $result = MainWP_Utility::isWebsiteAvailable( $website );
1682 $http_code = ( is_array( $result ) && isset( $result[ 'httpCode' ] ) ) ? $result[ 'httpCode' ] : 0;
1683 $check_result = MainWP_Utility::check_ignored_http_code( $http_code );
1684 MainWP_DB::Instance()->updateWebsiteValues( $website->id, array(
1685 'offline_check_result' => $check_result ? '1' : '-1',
1686 'offline_checks_last' => time(),
1687 'http_response_code' => $http_code
1688 ) );
1689 die( json_encode( array( 'httpcode' => esc_html($http_code), 'status' => $check_result ? 1 : 0 ) ) );
1690 }
1691
1692 function mainwp_ignore_http_response() {
1693 if ( !$this->check_security( 'mainwp_ignore_http_response' ) ) {
1694 die( json_encode( array( 'error' => __( 'ERROR: Invalid request!', 'mainwp' ) ) ) );
1695 }
1696
1697 if ( !isset( $_POST[ 'websiteid' ] ) || empty( $_POST[ 'websiteid' ] ) ) {
1698 die( -1 );
1699 }
1700
1701 $website = MainWP_DB::Instance()->getWebsiteById( $_POST[ 'websiteid' ] );
1702 if ( empty( $website ) ) {
1703 die( -1 );
1704 }
1705
1706 MainWP_DB::Instance()->updateWebsiteValues( $website->id, array( 'http_response_code' => '-1' ) );
1707 die( json_encode( array( 'ok' => 1 ) ) );
1708 }
1709
1710 function mainwp_autoupdate_and_trust_child() {
1711 $this->secure_request( 'mainwp_autoupdate_and_trust_child' );
1712 if ( get_option( 'mainwp_automaticDailyUpdate' ) != 1 ) {
1713 update_option( 'mainwp_automaticDailyUpdate', 1 );
1714 }
1715 MainWP_Plugins::trustPlugin( 'mainwp-child/mainwp-child.php' );
1716 die( 'ok' );
1717 }
1718
1719 function secure_request( $action = '', $query_arg = 'security' ) {
1720 if ( !MainWP_Utility::isAdmin() ) {
1721 die( 0 );
1722 }
1723 if ( $action == '' ) {
1724 return;
1725 }
1726
1727 if ( !$this->check_security( $action, $query_arg ) ) {
1728 die( json_encode( array( 'error' => __( 'Invalid request!', 'mainwp' ) ) ) );
1729 }
1730
1731 if ( isset( $_POST[ 'dts' ] ) ) {
1732 $ajaxPosts = get_option( 'mainwp_ajaxposts' );
1733 if ( !is_array( $ajaxPosts ) ) {
1734 $ajaxPosts = array();
1735 }
1736
1737 //If already processed, just quit!
1738 if ( isset( $ajaxPosts[ $action ] ) && ( $ajaxPosts[ $action ] == $_POST[ 'dts' ] ) ) {
1739 die( json_encode( array( 'error' => __( 'Double request!', 'mainwp' ) ) ) );
1740 }
1741
1742 $ajaxPosts[ $action ] = $_POST[ 'dts' ];
1743 MainWP_Utility::update_option( 'mainwp_ajaxposts', $ajaxPosts );
1744 }
1745 }
1746
1747 function check_security( $action = - 1, $query_arg = 'security' ) {
1748 if ( $action == - 1 ) {
1749 return false;
1750 }
1751
1752 $adminurl = strtolower( admin_url() );
1753 $referer = strtolower( wp_get_referer() );
1754 $result = isset( $_REQUEST[ $query_arg ] ) ? wp_verify_nonce( $_REQUEST[ $query_arg ], $action ) : false;
1755 if ( !$result && !( - 1 == $action && strpos( $referer, $adminurl ) === 0 ) ) {
1756 return false;
1757 }
1758
1759 return true;
1760 }
1761
1762 function addAction( $action, $callback ) {
1763 add_action( 'wp_ajax_' . $action, $callback );
1764 $this->addSecurityNonce( $action );
1765 }
1766
1767 function addSecurityNonce( $action ) {
1768 if ( !is_array( $this->security_nonces ) ) {
1769 $this->security_nonces = array();
1770 }
1771
1772 if ( !function_exists( 'wp_create_nonce' ) ) {
1773 include_once( ABSPATH . WPINC . '/pluggable.php' );
1774 }
1775 $this->security_nonces[ $action ] = wp_create_nonce( $action );
1776 }
1777
1778 function getSecurityNonces() {
1779 return $this->security_nonces;
1780 }
1781
1782 function mainwp_force_destroy_sessions() {
1783 $this->secure_request( 'mainwp_force_destroy_sessions' );
1784
1785 $website_id = ( isset( $_POST[ 'website_id' ] ) ? (int) $_POST[ 'website_id' ] : 0 );
1786
1787 if ( !MainWP_DB::Instance()->getWebsiteById( $website_id ) ) {
1788 die( json_encode( array( 'error' => array( 'message' => __( 'This website does not exist.', 'mainwp' ) ) ) ) );
1789 }
1790
1791 $website = MainWP_DB::Instance()->getWebsiteById( $website_id );
1792 if ( !MainWP_Utility::can_edit_website( $website ) ) {
1793 die( json_encode( array( 'error' => array( 'message' => __( 'You cannot edit this website.', 'mainwp' ) ) ) ) );
1794 }
1795
1796 try {
1797 $information = MainWP_Utility::fetchUrlAuthed( $website, 'settings_tools', array(
1798 'action' => 'force_destroy_sessions',
1799 ) );
1800 global $mainWP;
1801 if ( ( $mainWP->getVersion() == '2.0.22' ) || ( $mainWP->getVersion() == '2.0.23' ) ) {
1802 if ( get_option( 'mainwp_fixed_security_2022' ) != 1 ) {
1803 update_option( 'mainwp_fixed_security_2022', 1 );
1804 }
1805 }
1806 } catch ( Exception $e ) {
1807 $information = array( 'error' => __( 'fetchUrlAuthed exception', 'mainwp' ) );
1808 }
1809
1810 //die( json_encode( $information ) );
1811 wp_send_json( $information );
1812 }
1813
1814 }
1815
1816 ?>
1817