PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 4.2
MainWP Dashboard: Self-hosted WordPress Management for Agencies v4.2
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-post-handler.php +982 -1325 5.24.2 View file →
@@ -13,1446 +13,1103 @@
13 13 * @package MainWP\Dashboard
14 14 *
15 15 * @uses \MainWP\Dashboard\MainWP_Post_Base_Handler
16 16 */
17 -class MainWP_Post_Handler extends MainWP_Post_Base_Handler { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR.
17 +class MainWP_Post_Handler extends MainWP_Post_Base_Handler {
18 + // phpcs:disable Generic.Metrics.CyclomaticComplexity -- This is the only way to achieve desired results, pull request solutions appreciated.
18 19
19 - // phpcs:disable Generic.Metrics.CyclomaticComplexity -- This is the only way to achieve desired results, pull request solutions appreciated.
20 + /**
21 + * Private static variable to hold the single instance of the class.
22 + *
23 + * @static
24 + *
25 + * @var mixed Default null
26 + */
27 + private static $instance = null;
20 28
21 - /**
22 - * Private static variable to hold the single instance of the class.
23 - *
24 - * @static
25 - *
26 - * @var mixed Default null
27 - */
28 - private static $instance = null;
29 + /**
30 + * Method instance()
31 + *
32 + * Create a public static instance.
33 + *
34 + * @static
35 + * @return MainWP_Post_Handler
36 + */
37 + public static function instance() {
38 + if ( null == self::$instance ) {
39 + self::$instance = new self();
40 + }
41 + return self::$instance;
42 + }
29 43
30 - /**
31 - * Method instance()
32 - *
33 - * Create a public static instance.
34 - *
35 - * @static
36 - * @return MainWP_Post_Handler
37 - */
38 - public static function instance() {
39 - if ( null === static::$instance ) {
40 - static::$instance = new self();
41 - }
42 - return static::$instance;
43 - }
44 + /**
45 + * Initiate all actions.
46 + *
47 + * @uses \MainWP\Dashboard\MainWP_Post_Page_Handler::get_class_name()
48 + */
49 + public function init() {
50 + // Page: ManageSites.
51 + $this->add_action( 'mainwp_notes_save', array( &$this, 'mainwp_notes_save' ) );
44 52
45 - /**
46 - * Initiate all actions.
47 - *
48 - * @uses \MainWP\Dashboard\MainWP_Post_Page_Handler::get_class_name()
49 - */
50 - public function init() {
51 - // Page: ManageSites.
52 - $this->add_action( 'mainwp_notes_save', array( &$this, 'mainwp_notes_save' ) );
53 + // Page: BulkAddUser.
54 + $this->add_action( 'mainwp_bulkadduser', array( &$this, 'mainwp_bulkadduser' ) );
55 + $this->add_action( 'mainwp_importuser', array( &$this, 'mainwp_importuser' ) );
53 56
54 - // Page: BulkAddUser.
55 - $this->add_action( 'mainwp_bulkadduser', array( &$this, 'mainwp_bulkadduser' ) );
56 - $this->add_action( 'mainwp_importuser', array( &$this, 'mainwp_importuser' ) );
57 + // Widget: RightNow.
58 + $this->add_action( 'mainwp_syncerrors_dismiss', array( &$this, 'mainwp_syncerrors_dismiss' ) );
57 59
58 - // Widget: RightNow.
59 - $this->add_action( 'mainwp_syncerrors_dismiss', array( &$this, 'mainwp_syncerrors_dismiss' ) );
60 + if ( mainwp_current_user_have_right( 'dashboard', 'manage_security_issues' ) ) {
61 + // Page: SecurityIssues.
62 + $this->add_action( 'mainwp_security_issues_request', array( &$this, 'mainwp_security_issues_request' ) );
63 + $this->add_action( 'mainwp_security_issues_fix', array( &$this, 'mainwp_security_issues_fix' ) );
64 + $this->add_action( 'mainwp_security_issues_unfix', array( &$this, 'mainwp_security_issues_unfix' ) );
65 + }
60 66
61 - if ( mainwp_current_user_have_right( 'dashboard', 'manage_security_issues' ) ) {
62 - // Page: SecurityIssues.
63 - $this->add_action( 'mainwp_security_issues_request', array( &$this, 'mainwp_security_issues_request' ) );
64 - $this->add_action( 'mainwp_security_issues_fix', array( &$this, 'mainwp_security_issues_fix' ) );
65 - $this->add_action( 'mainwp_security_issues_unfix', array( &$this, 'mainwp_security_issues_unfix' ) );
66 - }
67 + $this->add_action( 'mainwp_notice_status_update', array( &$this, 'mainwp_notice_status_update' ) );
68 + $this->add_action( 'mainwp_dismiss_twit', array( &$this, 'mainwp_dismiss_twit' ) );
69 + $this->add_action( 'mainwp_dismiss_activate_notice', array( &$this, 'dismiss_activate_notice' ) );
70 + $this->add_action( 'mainwp_status_saving', array( &$this, 'mainwp_status_saving' ) );
71 + $this->add_action( 'mainwp_leftmenu_filter_group', array( &$this, 'mainwp_leftmenu_filter_group' ) );
72 + $this->add_action( 'mainwp_widgets_order', array( &$this, 'ajax_widgets_order' ) );
73 + $this->add_action( 'mainwp_save_settings', array( &$this, 'ajax_mainwp_save_settings' ) );
67 74
68 - $this->add_action( 'mainwp_notice_status_update', array( &$this, 'mainwp_notice_status_update' ) );
69 - $this->add_action( 'mainwp_dismiss_activate_notice', array( &$this, 'dismiss_activate_notice' ) );
70 - $this->add_action( 'mainwp_status_saving', array( &$this, 'mainwp_status_saving' ) );
71 - $this->add_action( 'mainwp_leftmenu_filter_group', array( &$this, 'mainwp_leftmenu_filter_group' ) );
72 - $this->add_action( 'mainwp_widgets_order', array( &$this, 'ajax_widgets_order' ) );
73 - $this->add_action( 'mainwp_save_settings', array( &$this, 'ajax_mainwp_save_settings' ) );
74 - $this->add_action( 'mainwp_guided_tours_option_update', array( &$this, 'ajax_guided_tours_option_update' ) );
75 + $this->add_action( 'mainwp_twitter_dashboard_action', array( &$this, 'mainwp_twitter_dashboard_action' ) );
75 76
76 - // Page: Recent Posts.
77 - if ( mainwp_current_user_have_right( 'dashboard', 'manage_posts' ) ) {
78 - $this->add_action( 'mainwp_post_unpublish', array( &$this, 'mainwp_post_unpublish' ) );
79 - $this->add_action( 'mainwp_post_publish', array( &$this, 'mainwp_post_publish' ) );
80 - $this->add_action( 'mainwp_post_trash', array( &$this, 'mainwp_post_trash' ) );
81 - $this->add_action( 'mainwp_post_delete', array( &$this, 'mainwp_post_delete' ) );
82 - $this->add_action( 'mainwp_post_restore', array( &$this, 'mainwp_post_restore' ) );
83 - $this->add_action( 'mainwp_post_approve', array( &$this, 'mainwp_post_approve' ) );
84 - }
85 - $this->add_action( 'mainwp_post_addmeta', array( MainWP_Post_Page_Handler::get_class_name(), 'ajax_add_meta' ) );
86 - // Page: Pages.
87 - if ( mainwp_current_user_have_right( 'dashboard', 'manage_pages' ) ) {
88 - $this->add_action( 'mainwp_page_unpublish', array( &$this, 'mainwp_page_unpublish' ) );
89 - $this->add_action( 'mainwp_page_publish', array( &$this, 'mainwp_page_publish' ) );
90 - $this->add_action( 'mainwp_page_trash', array( &$this, 'mainwp_page_trash' ) );
91 - $this->add_action( 'mainwp_page_delete', array( &$this, 'mainwp_page_delete' ) );
92 - $this->add_action( 'mainwp_page_restore', array( &$this, 'mainwp_page_restore' ) );
93 - }
94 - // Page: Users.
95 - $this->add_action( 'mainwp_user_delete', array( &$this, 'mainwp_user_delete' ) );
96 - $this->add_action( 'mainwp_user_edit', array( &$this, 'mainwp_user_edit' ) );
97 - $this->add_action( 'mainwp_user_update_password', array( &$this, 'mainwp_user_update_password' ) );
98 - $this->add_action( 'mainwp_user_update_user', array( &$this, 'mainwp_user_update_user' ) );
77 + // Page: Recent Posts.
78 + if ( mainwp_current_user_have_right( 'dashboard', 'manage_posts' ) ) {
79 + $this->add_action( 'mainwp_post_unpublish', array( &$this, 'mainwp_post_unpublish' ) );
80 + $this->add_action( 'mainwp_post_publish', array( &$this, 'mainwp_post_publish' ) );
81 + $this->add_action( 'mainwp_post_trash', array( &$this, 'mainwp_post_trash' ) );
82 + $this->add_action( 'mainwp_post_delete', array( &$this, 'mainwp_post_delete' ) );
83 + $this->add_action( 'mainwp_post_restore', array( &$this, 'mainwp_post_restore' ) );
84 + $this->add_action( 'mainwp_post_approve', array( &$this, 'mainwp_post_approve' ) );
85 + }
86 + $this->add_action( 'mainwp_post_addmeta', array( MainWP_Post_Page_Handler::get_class_name(), 'ajax_add_meta' ) );
87 + // Page: Pages.
88 + if ( mainwp_current_user_have_right( 'dashboard', 'manage_pages' ) ) {
89 + $this->add_action( 'mainwp_page_unpublish', array( &$this, 'mainwp_page_unpublish' ) );
90 + $this->add_action( 'mainwp_page_publish', array( &$this, 'mainwp_page_publish' ) );
91 + $this->add_action( 'mainwp_page_trash', array( &$this, 'mainwp_page_trash' ) );
92 + $this->add_action( 'mainwp_page_delete', array( &$this, 'mainwp_page_delete' ) );
93 + $this->add_action( 'mainwp_page_restore', array( &$this, 'mainwp_page_restore' ) );
94 + }
95 + // Page: Users.
96 + $this->add_action( 'mainwp_user_delete', array( &$this, 'mainwp_user_delete' ) );
97 + $this->add_action( 'mainwp_user_edit', array( &$this, 'mainwp_user_edit' ) );
98 + $this->add_action( 'mainwp_user_update_password', array( &$this, 'mainwp_user_update_password' ) );
99 + $this->add_action( 'mainwp_user_update_user', array( &$this, 'mainwp_user_update_user' ) );
99 100
100 - // Page: Posts.
101 - $this->add_action( 'mainwp_posts_search', array( &$this, 'mainwp_posts_search' ) );
102 - $this->add_action( 'mainwp_get_categories', array( &$this, 'mainwp_get_categories' ) );
103 - $this->add_action( 'mainwp_post_get_edit', array( &$this, 'mainwp_post_get_edit' ) );
104 - $this->add_action( 'mainwp_post_postingbulk', array( MainWP_Post_Page_Handler::get_class_name(), 'ajax_posting_posts' ) );
105 - $this->add_action( 'mainwp_get_sites_of_groups', array( MainWP_Post_Page_Handler::get_class_name(), 'ajax_get_sites_of_groups' ) );
101 + // Page: Posts.
102 + $this->add_action( 'mainwp_posts_search', array( &$this, 'mainwp_posts_search' ) );
103 + $this->add_action( 'mainwp_get_categories', array( &$this, 'mainwp_get_categories' ) );
104 + $this->add_action( 'mainwp_post_get_edit', array( &$this, 'mainwp_post_get_edit' ) );
105 + $this->add_action( 'mainwp_post_postingbulk', array( MainWP_Post_Page_Handler::get_class_name(), 'ajax_posting_posts' ) );
106 + $this->add_action( 'mainwp_get_sites_of_groups', array( MainWP_Post_Page_Handler::get_class_name(), 'ajax_get_sites_of_groups' ) );
106 107
107 - // Page: Pages.
108 - $this->add_action( 'mainwp_pages_search', array( &$this, 'mainwp_pages_search' ) );
109 - // Page: User.
110 - $this->add_action( 'mainwp_users_search', array( &$this, 'mainwp_users_search' ) );
108 + // Page: Pages.
109 + $this->add_action( 'mainwp_pages_search', array( &$this, 'mainwp_pages_search' ) );
110 + // Page: User.
111 + $this->add_action( 'mainwp_users_search', array( &$this, 'mainwp_users_search' ) );
111 112
112 - $this->add_action( 'mainwp_events_notice_hide', array( &$this, 'mainwp_events_notice_hide' ) );
113 - $this->add_action( 'mainwp_showhide_sections', array( &$this, 'mainwp_showhide_sections' ) );
114 - $this->add_action( 'mainwp_saving_status', array( &$this, 'mainwp_saving_status' ) );
115 - $this->add_action( 'mainwp_autoupdate_and_trust_child', array( &$this, 'mainwp_autoupdate_and_trust_child' ) );
116 - $this->add_action( 'mainwp_installation_warning_hide', array( &$this, 'mainwp_installation_warning_hide' ) );
117 - $this->add_action( 'mainwp_force_destroy_sessions', array( &$this, 'mainwp_force_destroy_sessions' ) );
118 - $this->add_action( 'mainwp_recheck_http', array( &$this, 'ajax_recheck_http' ) );
119 - $this->add_action( 'mainwp_ignore_http_response', array( &$this, 'mainwp_ignore_http_response' ) );
120 - $this->add_action( 'mainwp_disconnect_site', array( &$this, 'ajax_disconnect_site' ) );
121 - $this->add_action( 'mainwp_manage_sites_display_rows', array( &$this, 'ajax_sites_display_rows' ) );
122 - $this->add_action( 'mainwp_monitoring_sites_display_rows', array( &$this, 'ajax_monitoring_display_rows' ) );
113 + $this->add_action( 'mainwp_events_notice_hide', array( &$this, 'mainwp_events_notice_hide' ) );
114 + $this->add_action( 'mainwp_showhide_sections', array( &$this, 'mainwp_showhide_sections' ) );
115 + $this->add_action( 'mainwp_saving_status', array( &$this, 'mainwp_saving_status' ) );
116 + $this->add_action( 'mainwp_autoupdate_and_trust_child', array( &$this, 'mainwp_autoupdate_and_trust_child' ) );
117 + $this->add_action( 'mainwp_installation_warning_hide', array( &$this, 'mainwp_installation_warning_hide' ) );
118 + $this->add_action( 'mainwp_force_destroy_sessions', array( &$this, 'mainwp_force_destroy_sessions' ) );
119 + $this->add_action( 'mainwp_recheck_http', array( &$this, 'ajax_recheck_http' ) );
120 + $this->add_action( 'mainwp_ignore_http_response', array( &$this, 'mainwp_ignore_http_response' ) );
121 + $this->add_action( 'mainwp_disconnect_site', array( &$this, 'ajax_disconnect_site' ) );
122 + $this->add_action( 'mainwp_manage_sites_display_rows', array( &$this, 'ajax_sites_display_rows' ) );
123 + $this->add_action( 'mainwp_monitoring_sites_display_rows', array( &$this, 'ajax_monitoring_display_rows' ) );
123 124
124 - $this->add_action_nonce( 'mainwp-common-nonce' );
125 + $this->add_action_nonce( 'mainwp-common-nonce' );
126 + }
125 127
126 - // Page: Clients.
127 - $this->add_action( 'mainwp_clients_add_client', array( &$this, 'mainwp_clients_add_client' ) );
128 - $this->add_action( 'mainwp_clients_delete_client', array( &$this, 'mainwp_clients_delete_client' ) );
128 + /**
129 + * Method add_post_action()
130 + *
131 + * Add ajax action.
132 + *
133 + * @param string $action Action to perform.
134 + * @param string $callback Callback to perform.
135 + */
136 + public function add_post_action( $action, $callback ) {
137 + $this->add_action( $action, $callback );
138 + }
129 139
130 - $this->add_action( 'mainwp_clients_save_field', array( &$this, 'mainwp_clients_save_field' ) );
131 - $this->add_action( 'mainwp_clients_delete_general_field', array( &$this, 'mainwp_clients_delete_general_field' ) );
132 - $this->add_action( 'mainwp_clients_delete_field', array( &$this, 'mainwp_clients_delete_field' ) );
133 - $this->add_action( 'mainwp_clients_notes_save', array( &$this, 'mainwp_clients_notes_save' ) );
134 - $this->add_action( 'mainwp_clients_suspend_client', array( &$this, 'mainwp_clients_suspend_client' ) );
135 - $this->add_action( 'mainwp_refresh_icon', array( &$this, 'ajax_refresh_icon' ) );
136 - $this->add_action( 'mainwp_upload_custom_icon', array( &$this, 'ajax_upload_custom_icon' ) );
137 - $this->add_action( 'mainwp_select_custom_theme', array( &$this, 'ajax_select_custom_theme' ) );
138 - $this->add_action( 'mainwp_site_actions_dismiss', array( &$this, 'ajax_site_actions_dismiss' ) );
139 - $this->add_action( 'mainwp_delete_non_mainwp_actions', array( &$this, 'ajax_delete_non_mainwp_actions' ) );
140 - $this->add_action( 'mainwp_import_demo_data', array( &$this, 'ajax_import_demo_data' ) );
141 - $this->add_action( 'mainwp_delete_demo_data', array( &$this, 'ajax_delete_demo_data' ) );
142 - $this->add_action( 'mainwp_prepare_renew_connections', array( MainWP_Connect_Helper::instance(), 'ajax_prepare_renew_connections' ) );
143 - $this->add_action( 'mainwp_renew_connections', array( MainWP_Connect_Helper::instance(), 'ajax_renew_connections' ) );
144 - }
140 + /**
141 + * Method mainwp_installation_warning_hide()
142 + *
143 + * Hide the installation warning.
144 + */
145 + public function mainwp_installation_warning_hide() {
146 + $this->secure_request( 'mainwp_installation_warning_hide' );
145 147
146 - /**
147 - * Method add_post_action()
148 - *
149 - * Add ajax action.
150 - *
151 - * @param string $action Action to perform.
152 - * @param string $callback Callback to perform.
153 - */
154 - public function add_post_action( $action, $callback ) {
155 - $this->add_action( $action, $callback );
156 - }
148 + update_option( 'mainwp_installation_warning_hide_the_notice', 'yes' );
149 + die( 'ok' );
150 + }
157 151
158 - /**
159 - * Method mainwp_installation_warning_hide()
160 - *
161 - * Hide the installation warning.
162 - */
163 - public function mainwp_installation_warning_hide() {
164 - $this->secure_request( 'mainwp_installation_warning_hide' );
152 + /**
153 + * Method mainwp_users_search()
154 + *
155 + * Search Post handler,
156 + * Page: User.
157 + *
158 + * @uses \MainWP\Dashboard\MainWP_Cache::init_session()
159 + * @uses \MainWP\Dashboard\MainWP_User::render_table()
160 + */
161 + public function mainwp_users_search() {
162 + $this->secure_request( 'mainwp_users_search' );
163 + MainWP_Cache::init_session();
165 164
166 - update_option( 'mainwp_installation_warning_hide_the_notice', 'yes' );
167 - die( 'ok' );
168 - }
165 + $role = isset( $_POST['role'] ) ? sanitize_text_field( wp_unslash( $_POST['role'] ) ) : '';
166 + $groups = isset( $_POST['groups'] ) && is_array( $_POST['groups'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['groups'] ) ) : '';
167 + $sites = isset( $_POST['sites'] ) && is_array( $_POST['sites'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['sites'] ) ) : '';
168 + $search = isset( $_POST['search'] ) ? sanitize_text_field( wp_unslash( $_POST['search'] ) ) : '';
169 169
170 - /**
171 - * Method mainwp_users_search()
172 - *
173 - * Search Post handler,
174 - * Page: User.
175 - *
176 - * @uses \MainWP\Dashboard\MainWP_Cache::init_session()
177 - * @uses \MainWP\Dashboard\MainWP_User::render_table()
178 - */
179 - public function mainwp_users_search() {
180 - $this->secure_request( 'mainwp_users_search' );
181 - MainWP_Cache::init_session();
170 + MainWP_User::render_table( false, $role, $groups, $sites, $search );
171 + die();
172 + }
182 173
183 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
184 - $role = isset( $_POST['role'] ) ? sanitize_text_field( wp_unslash( $_POST['role'] ) ) : '';
185 - $groups = isset( $_POST['groups'] ) && is_array( $_POST['groups'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['groups'] ) ) : '';
186 - $sites = isset( $_POST['sites'] ) && is_array( $_POST['sites'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['sites'] ) ) : '';
187 - $clients = isset( $_POST['clients'] ) && is_array( $_POST['clients'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['clients'] ) ) : '';
188 - $search = isset( $_POST['search'] ) ? sanitize_text_field( wp_unslash( $_POST['search'] ) ) : '';
189 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
190 - MainWP_User::render_table( false, $role, $groups, $sites, $search, $clients );
191 - die();
192 - }
174 + /**
175 + * Method mainwp_posts_search()
176 + *
177 + * Search Post handler,
178 + * Page: Posts.
179 + *
180 + * @uses \MainWP\Dashboard\MainWP_Cache::init_session()
181 + * @uses \MainWP\Dashboard\MainWP_Post::render_table()
182 + * @uses \MainWP\Dashboard\MainWP_Utility::update_option()
183 + */
184 + public function mainwp_posts_search() {
185 + $this->secure_request( 'mainwp_posts_search' );
186 + $post_type = ( isset( $_POST['post_type'] ) && 0 < strlen( sanitize_text_field( wp_unslash( $_POST['post_type'] ) ) ) ? sanitize_text_field( wp_unslash( $_POST['post_type'] ) ) : 'post' );
187 + if ( isset( $_POST['maximum'] ) ) {
188 + MainWP_Utility::update_option( 'mainwp_maximumPosts', isset( $_POST['maximum'] ) ? intval( $_POST['maximum'] ) : 50 );
189 + }
193 190
194 - /**
195 - * Method mainwp_posts_search()
196 - *
197 - * Search Post handler,
198 - * Page: Posts.
199 - *
200 - * @uses \MainWP\Dashboard\MainWP_Cache::init_session()
201 - * @uses \MainWP\Dashboard\MainWP_Post::render_table()
202 - * @uses \MainWP\Dashboard\MainWP_Utility::update_option()
203 - */
204 - public function mainwp_posts_search() { // phpcs:ignore -- NOSONAR - complex.
205 - $this->secure_request( 'mainwp_posts_search' );
206 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
207 - $post_type = ( isset( $_POST['post_type'] ) && 0 < strlen( sanitize_text_field( wp_unslash( $_POST['post_type'] ) ) ) ? sanitize_text_field( wp_unslash( $_POST['post_type'] ) ) : 'post' );
208 - if ( isset( $_POST['maximum'] ) ) {
209 - MainWP_Utility::update_option( 'mainwp_maximumPosts', isset( $_POST['maximum'] ) ? intval( $_POST['maximum'] ) : 50 );
210 - }
211 - $keyword = isset( $_POST['keyword'] ) ? sanitize_text_field( wp_unslash( $_POST['keyword'] ) ) : '';
212 - $dtsstart = isset( $_POST['dtsstart'] ) ? sanitize_text_field( trim( wp_unslash( $_POST['dtsstart'] ) ) ) : '';
213 - $dtsstop = isset( $_POST['dtsstop'] ) ? sanitize_text_field( trim( wp_unslash( $_POST['dtsstop'] ) ) ) : '';
214 - $status = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : '';
215 - $groups = isset( $_POST['groups'] ) && is_array( $_POST['groups'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['groups'] ) ) : '';
216 - $sites = isset( $_POST['sites'] ) && is_array( $_POST['sites'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['sites'] ) ) : '';
217 - $clients = isset( $_POST['clients'] ) && is_array( $_POST['clients'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['clients'] ) ) : '';
218 - $postId = isset( $_POST['postId'] ) ? sanitize_text_field( wp_unslash( $_POST['postId'] ) ) : '';
219 - $userId = isset( $_POST['userId'] ) ? sanitize_text_field( wp_unslash( $_POST['userId'] ) ) : '';
220 - $search_on = isset( $_POST['search_on'] ) ? sanitize_text_field( wp_unslash( $_POST['search_on'] ) ) : '';
221 - $table_content_only = isset( $_POST['table_content'] ) && wp_unslash( $_POST['table_content'] ) ? true : false;
222 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
191 + $keyword = isset( $_POST['keyword'] ) ? sanitize_text_field( wp_unslash( $_POST['keyword'] ) ) : '';
192 + $dtsstart = isset( $_POST['dtsstart'] ) ? sanitize_text_field( wp_unslash( trim( $_POST['dtsstart'] ) ) ) : '';
193 + $dtsstop = isset( $_POST['dtsstop'] ) ? sanitize_text_field( wp_unslash( trim( $_POST['dtsstop'] ) ) ) : '';
194 + $status = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : '';
195 + $groups = isset( $_POST['groups'] ) && is_array( $_POST['groups'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['groups'] ) ) : '';
196 + $sites = isset( $_POST['sites'] ) && is_array( $_POST['sites'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['sites'] ) ) : '';
197 + $postId = isset( $_POST['postId'] ) ? sanitize_text_field( wp_unslash( $_POST['postId'] ) ) : '';
198 + $userId = isset( $_POST['userId'] ) ? sanitize_text_field( wp_unslash( $_POST['userId'] ) ) : '';
199 + $search_on = isset( $_POST['search_on'] ) ? sanitize_text_field( wp_unslash( $_POST['search_on'] ) ) : '';
200 + $table_content_only = isset( $_POST['table_content'] ) && $_POST['table_content'] ? true : false;
223 201
224 - MainWP_Cache::init_session();
225 - if ( $table_content_only ) {
226 - MainWP_Post::render_table_body( $keyword, $dtsstart, $dtsstop, $status, $groups, $sites, $postId, $userId, $post_type, $search_on, true, $clients );
227 - } else {
228 - $params = array(
229 - 'groups' => $groups,
230 - 'sites' => $sites,
231 - 'postId' => $postId,
232 - 'userId' => $userId,
233 - 'post_type' => $post_type,
234 - 'search_on' => $search_on,
235 - 'clients' => $clients,
236 - );
237 - MainWP_Post::render_table( false, $keyword, $dtsstart, $dtsstop, $status, $params );
238 - }
239 - die();
240 - }
241 - /**
242 - * Method mainwp_pages_search()
243 - *
244 - * Search Post handler,
245 - * Page: Pages.
246 - *
247 - * @uses \MainWP\Dashboard\MainWP_Cache::init_session()
248 - * @uses \MainWP\Dashboard\MainWP_Page::render_table()
249 - *
250 - * @uses \MainWP\Dashboard\MainWP_Utility::update_option()
251 - */
252 - public function mainwp_pages_search() {
253 - $this->secure_request( 'mainwp_pages_search' );
254 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
255 - if ( isset( $_POST['maximum'] ) ) {
256 - MainWP_Utility::update_option( 'mainwp_maximumPages', intval( $_POST['maximum'] ) ? intval( $_POST['maximum'] ) : 50 );
257 - }
258 - $keyword = isset( $_POST['keyword'] ) ? sanitize_text_field( wp_unslash( $_POST['keyword'] ) ) : '';
259 - $dtsstart = isset( $_POST['dtsstart'] ) ? sanitize_text_field( wp_unslash( $_POST['dtsstart'] ) ) : '';
260 - $dtsstop = isset( $_POST['dtsstop'] ) ? sanitize_text_field( wp_unslash( $_POST['dtsstop'] ) ) : '';
261 - $status = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : '';
262 - $groups = isset( $_POST['groups'] ) && is_array( $_POST['groups'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['groups'] ) ) : '';
263 - $sites = isset( $_POST['sites'] ) && is_array( $_POST['sites'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['sites'] ) ) : '';
264 - $clients = isset( $_POST['clients'] ) && is_array( $_POST['clients'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['clients'] ) ) : '';
265 - $search_on = isset( $_POST['search_on'] ) ? sanitize_text_field( wp_unslash( $_POST['search_on'] ) ) : '';
266 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
267 - MainWP_Cache::init_session();
202 + MainWP_Cache::init_session();
203 + if ( $table_content_only ) {
204 + MainWP_Post::render_table_body( $keyword, $dtsstart, $dtsstop, $status, $groups, $sites, $postId, $userId, $post_type, $search_on, true );
205 + } else {
206 + MainWP_Post::render_table( false, $keyword, $dtsstart, $dtsstop, $status, $groups, $sites, $postId, $userId, $post_type, $search_on );
207 + }
208 + die();
209 + }
210 + /**
211 + * Method mainwp_pages_search()
212 + *
213 + * Search Post handler,
214 + * Page: Pages.
215 + *
216 + * @uses \MainWP\Dashboard\MainWP_Cache::init_session()
217 + * @uses \MainWP\Dashboard\MainWP_Page::render_table()
218 + *
219 + * @uses \MainWP\Dashboard\MainWP_Utility::update_option()
220 + */
221 + public function mainwp_pages_search() {
222 + $this->secure_request( 'mainwp_pages_search' );
223 + if ( isset( $_POST['maximum'] ) ) {
224 + MainWP_Utility::update_option( 'mainwp_maximumPages', intval( $_POST['maximum'] ) ? intval( $_POST['maximum'] ) : 50 );
225 + }
268 226
269 - $params = array(
270 - 'groups' => $groups,
271 - 'sites' => $sites,
272 - 'search_on' => $search_on,
273 - 'clients' => $clients,
274 - );
227 + $keyword = isset( $_POST['keyword'] ) ? sanitize_text_field( wp_unslash( $_POST['keyword'] ) ) : '';
228 + $dtsstart = isset( $_POST['dtsstart'] ) ? sanitize_text_field( wp_unslash( $_POST['dtsstart'] ) ) : '';
229 + $dtsstop = isset( $_POST['dtsstop'] ) ? sanitize_text_field( wp_unslash( $_POST['dtsstop'] ) ) : '';
230 + $status = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : '';
231 + $groups = isset( $_POST['groups'] ) && is_array( $_POST['groups'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['groups'] ) ) : '';
232 + $sites = isset( $_POST['sites'] ) && is_array( $_POST['sites'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['sites'] ) ) : '';
233 + $search_on = isset( $_POST['search_on'] ) ? sanitize_text_field( wp_unslash( $_POST['search_on'] ) ) : '';
275 234
276 - MainWP_Page::render_table( false, $keyword, $dtsstart, $dtsstop, $status, $params );
277 - die();
278 - }
235 + MainWP_Cache::init_session();
236 + MainWP_Page::render_table( false, $keyword, $dtsstart, $dtsstop, $status, $groups, $sites, $search_on );
237 + die();
238 + }
279 239
280 - /**
281 - * Method mainwp_get_categories()
282 - *
283 - * Get post/page categories.
284 - *
285 - * @uses \MainWP\Dashboard\MainWP_Post_Page_Handler::get_categories()
286 - */
287 - public function mainwp_get_categories() {
288 - $this->secure_request( 'mainwp_get_categories' );
289 - MainWP_Post_Page_Handler::ajax_handle_get_categories();
290 - die();
291 - }
240 + /**
241 + * Method mainwp_get_categories()
242 + *
243 + * Get post/page categories.
244 + *
245 + * @uses \MainWP\Dashboard\MainWP_Post_Page_Handler::get_categories()
246 + */
247 + public function mainwp_get_categories() {
248 + $this->secure_request( 'mainwp_get_categories' );
249 + MainWP_Post_Page_Handler::get_categories();
250 + die();
251 + }
292 252
293 - /**
294 - * Method mainwp_post_get_edit()
295 - *
296 - * Get post to edit.
297 - *
298 - * @uses \MainWP\Dashboard\MainWP_Post_Page_Handler::get_post()
299 - */
300 - public function mainwp_post_get_edit() {
301 - $this->secure_request( 'mainwp_post_get_edit' );
302 - MainWP_Post_Page_Handler::get_post();
303 - die();
304 - }
253 + /**
254 + * Method mainwp_post_get_edit()
255 + *
256 + * Get post to edit.
257 + *
258 + * @uses \MainWP\Dashboard\MainWP_Post_Page_Handler::get_post()
259 + */
260 + public function mainwp_post_get_edit() {
261 + $this->secure_request( 'mainwp_post_get_edit' );
262 + MainWP_Post_Page_Handler::get_post();
263 + die();
264 + }
305 265
306 - /**
307 - * Method mainwp_user_delete()
308 - *
309 - * Delete User from Child Site,
310 - * Page: Users.
311 - *
312 - * @uses \MainWP\Dashboard\MainWP_User::delete()
313 - */
314 - public function mainwp_user_delete() {
315 - $this->secure_request( 'mainwp_user_delete' );
316 - MainWP_User::delete();
317 - }
266 + /**
267 + * Method mainwp_user_delete()
268 + *
269 + * Delete User from Child Site,
270 + * Page: Users.
271 + *
272 + * @uses \MainWP\Dashboard\MainWP_User::delete()
273 + */
274 + public function mainwp_user_delete() {
275 + $this->secure_request( 'mainwp_user_delete' );
276 + MainWP_User::delete();
277 + }
318 278
319 - /**
320 - * Method mainwp_user_edit()
321 - *
322 - * Edit User from Child Site,
323 - * Page: Users.
324 - *
325 - * @uses \MainWP\Dashboard\MainWP_User::edit()
326 - */
327 - public function mainwp_user_edit() {
328 - $this->secure_request( 'mainwp_user_edit' );
329 - MainWP_User::edit();
330 - }
279 + /**
280 + * Method mainwp_user_edit()
281 + *
282 + * Edit User from Child Site,
283 + * Page: Users.
284 + *
285 + * @uses \MainWP\Dashboard\MainWP_User::edit()
286 + */
287 + public function mainwp_user_edit() {
288 + $this->secure_request( 'mainwp_user_edit' );
289 + MainWP_User::edit();
290 + }
331 291
332 - /**
333 - * Method mainwp_user_update_password(
334 - *
335 - * Update User password from Child Site,
336 - * Page: Users.
337 - *
338 - * @uses \MainWP\Dashboard\MainWP_User::update_password()
339 - */
340 - public function mainwp_user_update_password() {
341 - $this->secure_request( 'mainwp_user_update_password' );
342 - MainWP_User::update_password();
343 - }
292 + /**
293 + * Method mainwp_user_update_password(
294 + *
295 + * Update User password from Child Site,
296 + * Page: Users.
297 + *
298 + * @uses \MainWP\Dashboard\MainWP_User::update_password()
299 + */
300 + public function mainwp_user_update_password() {
301 + $this->secure_request( 'mainwp_user_update_password' );
302 + MainWP_User::update_password();
303 + }
344 304
345 - /**
346 - * Method mainwp_user_update_user()
347 - *
348 - * Update User from Child Site,
349 - * Page: Users.
350 - *
351 - * @uses \MainWP\Dashboard\MainWP_User::update_user()
352 - */
353 - public function mainwp_user_update_user() {
354 - $this->secure_request( 'mainwp_user_update_user' );
355 - MainWP_User::update_user();
356 - }
305 + /**
306 + * Method mainwp_user_update_user()
307 + *
308 + * Update User from Child Site,
309 + * Page: Users.
310 + *
311 + * @uses \MainWP\Dashboard\MainWP_User::update_user()
312 + */
313 + public function mainwp_user_update_user() {
314 + $this->secure_request( 'mainwp_user_update_user' );
315 + MainWP_User::update_user();
316 + }
357 317
358 - /**
359 - * Method mainwp_post_unpublish()
360 - *
361 - * Unpublish post from Child Site,
362 - * Page: Recent Posts.
363 - *
364 - * @uses \MainWP\Dashboard\MainWP_Recent_Posts::unpublish()
365 - */
366 - public function mainwp_post_unpublish() {
367 - $this->secure_request( 'mainwp_post_unpublish' );
368 - MainWP_Recent_Posts::unpublish();
369 - }
318 + /**
319 + * Method mainwp_post_unpublish()
320 + *
321 + * Unpublish post from Child Site,
322 + * Page: Recent Posts.
323 + *
324 + * @uses \MainWP\Dashboard\MainWP_Recent_Posts::unpublish()
325 + */
326 + public function mainwp_post_unpublish() {
327 + $this->secure_request( 'mainwp_post_unpublish' );
328 + MainWP_Recent_Posts::unpublish();
329 + }
370 330
371 - /**
372 - * Method mainwp_post_publish()
373 - *
374 - * Publish post on Child Site,
375 - * Page: Recent Posts.
376 - *
377 - * @uses \MainWP\Dashboard\MainWP_Recent_Posts::publish()
378 - */
379 - public function mainwp_post_publish() {
380 - $this->secure_request( 'mainwp_post_publish' );
381 - MainWP_Recent_Posts::publish();
382 - }
331 + /**
332 + * Method mainwp_post_publish()
333 + *
334 + * Publish post on Child Site,
335 + * Page: Recent Posts.
336 + *
337 + * @uses \MainWP\Dashboard\MainWP_Recent_Posts::publish()
338 + */
339 + public function mainwp_post_publish() {
340 + $this->secure_request( 'mainwp_post_publish' );
341 + MainWP_Recent_Posts::publish();
342 + }
383 343
384 - /**
385 - * Method mainwp_post_approve()
386 - *
387 - * Approve post on Child Site,
388 - * Page: Recent Posts.
389 - *
390 - * @uses \MainWP\Dashboard\MainWP_Recent_Posts::approve()
391 - */
392 - public function mainwp_post_approve() {
393 - $this->secure_request( 'mainwp_post_approve' );
394 - MainWP_Recent_Posts::approve();
395 - }
344 + /**
345 + * Method mainwp_post_approve()
346 + *
347 + * Approve post on Child Site,
348 + * Page: Recent Posts.
349 + *
350 + * @uses \MainWP\Dashboard\MainWP_Recent_Posts::approve()
351 + */
352 + public function mainwp_post_approve() {
353 + $this->secure_request( 'mainwp_post_approve' );
354 + MainWP_Recent_Posts::approve();
355 + }
396 356
397 - /**
398 - * Method mainwp_post_trash()
399 - *
400 - * Trash post on Child Site,
401 - * Page: Recent Posts.
402 - *
403 - * @uses \MainWP\Dashboard\MainWP_Recent_Posts::trash()
404 - */
405 - public function mainwp_post_trash() {
406 - $this->secure_request( 'mainwp_post_trash' );
357 + /**
358 + * Method mainwp_post_trash()
359 + *
360 + * Trash post on Child Site,
361 + * Page: Recent Posts.
362 + *
363 + * @uses \MainWP\Dashboard\MainWP_Recent_Posts::trash()
364 + */
365 + public function mainwp_post_trash() {
366 + $this->secure_request( 'mainwp_post_trash' );
407 367
408 - MainWP_Recent_Posts::trash();
409 - }
368 + MainWP_Recent_Posts::trash();
369 + }
410 370
411 - /**
412 - * Method mainwp_post_delete()
413 - *
414 - * Delete post on Child Site,
415 - * Page: Recent Posts.
416 - *
417 - * @uses \MainWP\Dashboard\MainWP_Recent_Posts::delete()
418 - */
419 - public function mainwp_post_delete() {
420 - $this->secure_request( 'mainwp_post_delete' );
371 + /**
372 + * Method mainwp_post_delete()
373 + *
374 + * Delete post on Child Site,
375 + * Page: Recent Posts.
376 + *
377 + * @uses \MainWP\Dashboard\MainWP_Recent_Posts::delete()
378 + */
379 + public function mainwp_post_delete() {
380 + $this->secure_request( 'mainwp_post_delete' );
421 381
422 - MainWP_Recent_Posts::delete();
423 - }
382 + MainWP_Recent_Posts::delete();
383 + }
424 384
425 - /**
426 - * Method mainwp_post_restore()
427 - *
428 - * Restore post,
429 - * Page: Recent Posts.
430 - *
431 - * @uses \MainWP\Dashboard\MainWP_Recent_Posts::restore()
432 - */
433 - public function mainwp_post_restore() {
434 - $this->secure_request( 'mainwp_post_restore' );
385 + /**
386 + * Method mainwp_post_restore()
387 + *
388 + * Restore post,
389 + * Page: Recent Posts.
390 + *
391 + * @uses \MainWP\Dashboard\MainWP_Recent_Posts::restore()
392 + */
393 + public function mainwp_post_restore() {
394 + $this->secure_request( 'mainwp_post_restore' );
435 395
436 - MainWP_Recent_Posts::restore();
437 - }
396 + MainWP_Recent_Posts::restore();
397 + }
438 398
439 - /**
440 - * Method mainwp_page_unpublish()
441 - *
442 - * Unpublish page,
443 - * Page: Recent Pages.
444 - *
445 - * @uses \MainWP\Dashboard\MainWP_Page::unpublish()
446 - */
447 - public function mainwp_page_unpublish() {
448 - $this->secure_request( 'mainwp_page_unpublish' );
449 - MainWP_Page::unpublish();
450 - }
399 + /**
400 + * Method mainwp_page_unpublish()
401 + *
402 + * Unpublish page,
403 + * Page: Recent Pages.
404 + *
405 + * @uses \MainWP\Dashboard\MainWP_Page::unpublish()
406 + */
407 + public function mainwp_page_unpublish() {
408 + $this->secure_request( 'mainwp_page_unpublish' );
409 + MainWP_Page::unpublish();
410 + }
451 411
452 - /**
453 - * Method mainwp_page_publish()
454 - *
455 - * Publish page,
456 - * Page: Recent Pages.
457 - *
458 - * @uses \MainWP\Dashboard\MainWP_Page::publish()
459 - */
460 - public function mainwp_page_publish() {
461 - $this->secure_request( 'mainwp_page_publish' );
462 - MainWP_Page::publish();
463 - }
412 + /**
413 + * Method mainwp_page_publish()
414 + *
415 + * Publish page,
416 + * Page: Recent Pages.
417 + *
418 + * @uses \MainWP\Dashboard\MainWP_Page::publish()
419 + */
420 + public function mainwp_page_publish() {
421 + $this->secure_request( 'mainwp_page_publish' );
422 + MainWP_Page::publish();
423 + }
464 424
465 - /**
466 - * Method mainwp_page_trash()
467 - *
468 - * Trash page,
469 - * Page: Recent Pages.
470 - *
471 - * @uses \MainWP\Dashboard\MainWP_Page::trash()
472 - */
473 - public function mainwp_page_trash() {
474 - $this->secure_request( 'mainwp_page_trash' );
475 - MainWP_Page::trash();
476 - }
425 + /**
426 + * Method mainwp_page_trash()
427 + *
428 + * Trash page,
429 + * Page: Recent Pages.
430 + *
431 + * @uses \MainWP\Dashboard\MainWP_Page::trash()
432 + */
433 + public function mainwp_page_trash() {
434 + $this->secure_request( 'mainwp_page_trash' );
435 + MainWP_Page::trash();
436 + }
477 437
478 - /**
479 - * Method mainwp_page_delete()
480 - *
481 - * Delete page,
482 - * Page: Recent Pages.
483 - *
484 - * @uses \MainWP\Dashboard\MainWP_Page::delete()
485 - */
486 - public function mainwp_page_delete() {
487 - $this->secure_request( 'mainwp_page_delete' );
488 - MainWP_Page::delete();
489 - }
438 + /**
439 + * Method mainwp_page_delete()
440 + *
441 + * Delete page,
442 + * Page: Recent Pages.
443 + *
444 + * @uses \MainWP\Dashboard\MainWP_Page::delete()
445 + */
446 + public function mainwp_page_delete() {
447 + $this->secure_request( 'mainwp_page_delete' );
448 + MainWP_Page::delete();
449 + }
490 450
491 - /**
492 - * Method mainwp_page_restor()
493 - *
494 - * Restore page,
495 - * Page: Recent Pages.
496 - *
497 - * @uses \MainWP\Dashboard\MainWP_Page::restore()
498 - */
499 - public function mainwp_page_restore() {
500 - $this->secure_request( 'mainwp_page_restore' );
501 - MainWP_Page::restore();
502 - }
451 + /**
452 + * Method mainwp_page_restor()
453 + *
454 + * Restore page,
455 + * Page: Recent Pages.
456 + *
457 + * @uses \MainWP\Dashboard\MainWP_Page::restore()
458 + */
459 + public function mainwp_page_restore() {
460 + $this->secure_request( 'mainwp_page_restore' );
461 + MainWP_Page::restore();
462 + }
503 463
504 - /**
505 - * Method mainwp_notice_status_update()
506 - *
507 - * Hide after installation notices,
508 - * (PHP version, Trust MainWP Child, Multisite Warning and OpenSSL warning).
509 - *
510 - * @uses \MainWP\Dashboard\MainWP_Utility::update_option()
511 - */
512 - public function mainwp_notice_status_update() {
513 - $this->secure_request( 'mainwp_notice_status_update' );
464 + /**
465 + * Method mainwp_notice_status_update()
466 + *
467 + * Hide after installation notices,
468 + * (PHP version, Trust MainWP Child, Multisite Warning and OpenSSL warning).
469 + *
470 + * @uses \MainWP\Dashboard\MainWP_Utility::update_option()
471 + */
472 + public function mainwp_notice_status_update() {
473 + $this->secure_request( 'mainwp_notice_status_update' );
514 474
515 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
516 - $no_id = isset( $_POST['notice_id'] ) ? sanitize_text_field( wp_unslash( $_POST['notice_id'] ) ) : false;
517 - if ( 'mail_failed' === $no_id ) {
518 - MainWP_Utility::update_option( 'mainwp_notice_wp_mail_failed', 'hide' );
519 - die( 'ok' );
520 - }
475 + $no_id = isset( $_POST['notice_id'] ) ? sanitize_text_field( wp_unslash( $_POST['notice_id'] ) ) : false;
476 + if ( 'mail_failed' === $no_id ) {
477 + MainWP_Utility::update_option( 'mainwp_notice_wp_mail_failed', 'hide' );
478 + die( 'ok' );
479 + }
521 480
522 - /**
523 - * Current user global.
524 - *
525 - * @global string
526 - */
527 - global $current_user;
528 - $user_id = $current_user->ID;
529 - if ( $user_id ) {
530 - $status = get_user_option( 'mainwp_notice_saved_status' );
531 - if ( ! is_array( $status ) ) {
532 - $status = array();
533 - }
534 - if ( ! empty( $no_id ) ) {
535 - $time_set = isset( $_POST['time_set'] ) && 1 === intval( $_POST['time_set'] ) ? true : false;
536 - if ( $time_set ) {
537 - $status[ $no_id ] = time();
538 - } else {
539 - $status[ $no_id ] = 1;
540 - }
541 - update_user_option( $user_id, 'mainwp_notice_saved_status', $status );
542 - }
543 - }
544 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
545 - die( 1 );
546 - }
481 + /**
482 + * Current user global.
483 + *
484 + * @global string
485 + */
486 + global $current_user;
487 + $user_id = $current_user->ID;
488 + if ( $user_id ) {
489 + $status = get_user_option( 'mainwp_notice_saved_status' );
490 + if ( ! is_array( $status ) ) {
491 + $status = array();
492 + }
493 + if ( ! empty( $no_id ) ) {
494 + $status[ $no_id ] = 1;
495 + update_user_option( $user_id, 'mainwp_notice_saved_status', $status );
496 + }
497 + }
498 + die( 1 );
499 + }
547 500
548 - /**
549 - * Method mainwp_status_saving()
550 - *
551 - * Save last_sync_sites time().
552 - */
553 - public function mainwp_status_saving() { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR - complexity.
554 - $this->secure_request( 'mainwp_status_saving' );
555 - $values = get_option( 'mainwp_status_saved_values' );
501 + /**
502 + * Method mainwp_status_saving()
503 + *
504 + * Save last_sync_sites time() or mainwp_status_saved_values.
505 + */
506 + public function mainwp_status_saving() {
507 + $this->secure_request( 'mainwp_status_saving' );
508 + $values = get_option( 'mainwp_status_saved_values' );
556 509
557 - if ( ! is_array( $values ) ) {
558 - $values = array();
559 - }
510 + if ( ! isset( $_POST['status'] ) ) {
511 + die( -1 );
512 + }
560 513
561 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
562 - if ( ! isset( $_POST['status'] ) ) {
563 - die( -1 );
564 - }
514 + if ( 'last_sync_sites' === $_POST['status'] ) {
515 + if ( isset( $_POST['isGlobalSync'] ) && ! empty( $_POST['isGlobalSync'] ) ) {
516 + update_option( 'mainwp_last_synced_all_sites', time() );
565 517
566 - if ( 'last_sync_sites' === $_POST['status'] ) {
567 - if ( isset( $_POST['isGlobalSync'] ) && ! empty( $_POST['isGlobalSync'] ) ) {
568 - update_option( 'mainwp_last_synced_all_sites', time() );
518 + /**
519 + * Action: mainwp_synced_all_sites
520 + *
521 + * Fires upon successfull synchronization process.
522 + *
523 + * @since 3.5.1
524 + */
525 + do_action( 'mainwp_synced_all_sites' );
526 + }
527 + die( 'ok' );
528 + }
569 529
570 - /**
571 - * Action: mainwp_synced_all_sites
572 - *
573 - * Fires upon successfull synchronization process.
574 - *
575 - * @since 3.5.1
576 - */
577 - do_action( 'mainwp_synced_all_sites' );
578 - }
579 - die( 'ok' );
580 - }
530 + $status = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : '';
531 + $value = isset( $_POST['value'] ) ? sanitize_text_field( wp_unslash( $_POST['value'] ) ) : '';
581 532
582 - $status = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : '';
583 - $value = isset( $_POST['value'] ) ? sanitize_text_field( wp_unslash( $_POST['value'] ) ) : '';
584 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
533 + if ( ! empty( $status ) ) {
534 + if ( empty( $value ) ) {
535 + if ( isset( $values[ $status ] ) ) {
536 + unset( $values[ $status ] );
537 + }
538 + } else {
539 + $values[ $status ] = $value;
540 + }
541 + update_option( 'mainwp_status_saved_values', $values );
542 + }
585 543
586 - if ( ! empty( $status ) ) {
587 - if ( empty( $value ) ) {
588 - if ( isset( $values[ $status ] ) ) {
589 - unset( $values[ $status ] );
590 - }
591 - } else {
592 - $values[ $status ] = $value;
593 - }
594 - update_option( 'mainwp_status_saved_values', $values );
595 - }
544 + die( 'ok' );
545 + }
596 546
597 - die( 'ok' );
598 - }
547 + /**
548 + * Method ajax_widget_order()
549 + *
550 + * Update saved widget order.
551 + */
552 + public function ajax_widgets_order() {
599 553
600 - /**
601 - * Method ajax_widget_order()
602 - *
603 - * Update saved widget order.
604 - */
605 - public function ajax_widgets_order() { //phpcs:ignore -- NOSONAR - complex.
554 + $this->secure_request( 'mainwp_widgets_order' );
555 + $user = wp_get_current_user();
556 + if ( $user && ! empty( $_POST['page'] ) ) {
557 + $page = isset( $_POST['page'] ) ? sanitize_text_field( wp_unslash( $_POST['page'] ) ) : '';
558 + $order = isset( $_POST['order'] ) ? sanitize_text_field( wp_unslash( $_POST['order'] ) ) : '';
559 + update_user_option( $user->ID, 'mainwp_widgets_sorted_' . $page, $order, true );
560 + die( 'ok' );
561 + }
562 + die( -1 );
563 + }
606 564
607 - $this->secure_request( 'mainwp_widgets_order' );
608 - $user = wp_get_current_user();
609 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
610 - if ( $user && ! empty( $_POST['page'] ) ) {
611 - $page = isset( $_POST['page'] ) ? sanitize_text_field( wp_unslash( $_POST['page'] ) ) : '';
612 - $order = isset( $_POST['order'] ) ? sanitize_text_field( wp_unslash( $_POST['order'] ) ) : '';
613 - $wgids = isset( $_POST['wgids'] ) ? sanitize_text_field( wp_unslash( $_POST['wgids'] ) ) : '';
565 + /**
566 + * Method ajax_mainwp_save_settings()
567 + *
568 + * Update saved MainWP Settings.
569 + *
570 + * @uses \MainWP\Dashboard\MainWP_Utility::update_option()
571 + */
572 + public function ajax_mainwp_save_settings() {
573 + $this->secure_request( 'mainwp_save_settings' );
574 + $name = isset( $_POST['name'] ) ? sanitize_text_field( wp_unslash( $_POST['name'] ) ) : '';
575 + if ( ! empty( $name ) ) {
576 + $option_name = 'mainwp_' . $name;
577 + $val = isset( $_POST['value'] ) ? sanitize_text_field( wp_unslash( $_POST['value'] ) ) : '';
578 + MainWP_Utility::update_option( $option_name, $val );
579 + }
580 + die( 'ok' );
581 + }
614 582
615 - $wgs_orders = array();
583 + /**
584 + * Method mainwp_leftmenu_filter_group()
585 + *
586 + * MainWP left menu filter by group.
587 + *
588 + * @uses \MainWP\Dashboard\MainWP_DB::query()
589 + * @uses \MainWP\Dashboard\MainWP_DB::get_websites_by_group_id()
590 + * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
591 + * @uses \MainWP\Dashboard\MainWP_DB::free_result()
592 + */
593 + public function mainwp_leftmenu_filter_group() {
594 + $this->secure_request( 'mainwp_leftmenu_filter_group' );
616 595
617 - if ( ! empty( $wgids ) ) {
618 - $wgids = json_decode( $wgids, true );
619 - $order = json_decode( $order, true );
620 - if ( is_array( $wgids ) && is_array( $order ) ) {
621 - foreach ( $wgids as $idx => $wgid ) {
622 - if ( isset( $order[ $idx ] ) ) {
623 - $pre = 'widget-';
624 - if ( 0 === strpos( $wgid, $pre ) ) {
625 - $wgid = substr( $wgid, strlen( $pre ) );
626 - }
627 - $wgs_orders[ $wgid ] = $order[ $idx ];
628 - }
629 - }
630 - }
631 - }
596 + $gid = isset( $_POST['group_id'] ) ? intval( $_POST['group_id'] ) : false;
632 597
633 - if ( 'mainwp_page_manageclients' === $page ) {
634 - $item_id = isset( $_POST['item_id'] ) ? intval( $_POST['item_id'] ) : 0;
635 - $sorted_array = get_user_option( 'mainwp_widgets_sorted_' . strtolower( $page ) );
636 - if ( ! empty( $sorted_array ) ) {
637 - $sorted_array = json_decode( $sorted_array, true );
638 - }
639 - if ( ! is_array( $sorted_array ) ) {
640 - $sorted_array = array();
641 - }
642 - $sorted_array[ $item_id ] = $wgs_orders;
643 - update_user_option( $user->ID, 'mainwp_widgets_sorted_' . $page, wp_json_encode( $sorted_array ), true );
644 - } else {
645 - update_user_option( $user->ID, 'mainwp_widgets_sorted_' . $page, wp_json_encode( $wgs_orders ), true );
646 - }
647 - die( 'ok' );
648 - }
649 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
650 - die( -1 );
651 - }
598 + if ( ! empty( $gid ) ) {
599 + $ids = '';
600 + $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_by_group_id( $gid, true ) );
601 + while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
602 + $ids .= $website->id . ',';
603 + }
604 + MainWP_DB::free_result( $websites );
605 + $ids = rtrim( $ids, ',' );
606 + die( $ids );
607 + }
608 + die( '' );
609 + }
652 610
653 - /**
654 - * Method ajax_mainwp_save_settings()
655 - *
656 - * Update saved MainWP Settings.
657 - *
658 - * @uses \MainWP\Dashboard\MainWP_Utility::update_option()
659 - */
660 - public function ajax_mainwp_save_settings() {
661 - $this->secure_request( 'mainwp_save_settings' );
662 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
663 - $name = isset( $_POST['name'] ) ? sanitize_text_field( wp_unslash( $_POST['name'] ) ) : '';
664 - if ( ! empty( $name ) ) {
665 - $option_name = 'mainwp_' . $name;
666 - $val = isset( $_POST['value'] ) ? sanitize_text_field( wp_unslash( $_POST['value'] ) ) : '';
667 - MainWP_Utility::update_option( $option_name, $val );
668 - }
669 - // phpcs:enable
670 - die( 'ok' );
671 - }
611 + /**
612 + * Method mainwp_dismiss_twit()
613 + *
614 + * Dismiss the twitter bragger.
615 + *
616 + * @uses \MainWP\Dashboard\MainWP_Twitter::clear_twitter_info()
617 + */
618 + public function mainwp_dismiss_twit() {
619 + $this->secure_request( 'mainwp_dismiss_twit' );
672 620
673 - /**
674 - * Method ajax_guided_tours_option_update()
675 - *
676 - * Update saved MainWP Settings.
677 - *
678 - * @uses \MainWP\Dashboard\MainWP_Utility::update_option()
679 - */
680 - public function ajax_guided_tours_option_update() {
681 - $this->secure_request( 'mainwp_guided_tours_option_update' );
682 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
683 - $enable = isset( $_POST['enable'] ) ? intval( $_POST['enable'] ) : 0;
684 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
685 - MainWP_Utility::update_option( 'mainwp_enable_guided_tours', $enable );
686 - die( 'ok ' . intval( $enable ) );
687 - }
621 + /**
622 + * Current user global.
623 + *
624 + * @global string
625 + */
626 + global $current_user;
688 627
689 - /**
690 - * Method mainwp_leftmenu_filter_group()
691 - *
692 - * MainWP left menu filter by group.
693 - *
694 - * @uses \MainWP\Dashboard\MainWP_DB::query()
695 - * @uses \MainWP\Dashboard\MainWP_DB::get_websites_by_group_id()
696 - * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
697 - * @uses \MainWP\Dashboard\MainWP_DB::free_result()
698 - */
699 - public function mainwp_leftmenu_filter_group() {
700 - $this->secure_request( 'mainwp_leftmenu_filter_group' );
628 + $user_id = $current_user->ID;
629 + if ( $user_id && isset( $_POST['twitId'] ) && ! empty( $_POST['twitId'] ) && isset( $_POST['what'] ) && ! empty( $_POST['what'] ) ) {
630 + MainWP_Twitter::clear_twitter_info( sanitize_text_field( wp_unslash( $_POST['what'] ) ), sanitize_text_field( wp_unslash( $_POST['twitId'] ) ) );
631 + }
632 + die( 1 );
633 + }
701 634
702 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
703 - $gid = isset( $_POST['group_id'] ) ? intval( $_POST['group_id'] ) : false;
704 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
635 + /**
636 + * Method dismiss_activate_notice()
637 + *
638 + * Dismiss activate notice.
639 + */
640 + public function dismiss_activate_notice() {
641 + $this->secure_request( 'mainwp_dismiss_activate_notice' );
705 642
706 - if ( ! empty( $gid ) ) {
707 - $ids = '';
708 - $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_by_group_id( $gid, true ) );
709 - while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
710 - $ids .= $website->id . ',';
711 - }
712 - MainWP_DB::free_result( $websites );
713 - $ids = rtrim( $ids, ',' );
714 - die( $ids ); // phpcs:ignore WordPress.Security.EscapeOutput
715 - }
716 - die( '' );
717 - }
643 + /**
644 + * Current user global.
645 + *
646 + * @global string
647 + */
648 + global $current_user;
718 649
719 - /**
720 - * Method dismiss_activate_notice()
721 - *
722 - * Dismiss activate notice.
723 - */
724 - public function dismiss_activate_notice() {
725 - $this->secure_request( 'mainwp_dismiss_activate_notice' );
650 + $user_id = $current_user->ID;
651 + $slug = isset( $_POST['slug'] ) ? sanitize_text_field( wp_unslash( $_POST['slug'] ) ) : '';
652 + if ( $user_id && ! empty( $slug ) ) {
653 + $activate_notices = get_user_option( 'mainwp_hide_activate_notices' );
654 + if ( ! is_array( $activate_notices ) ) {
655 + $activate_notices = array();
656 + }
726 657
727 - /**
728 - * Current user global.
729 - *
730 - * @global string
731 - */
732 - global $current_user;
733 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
734 - $user_id = $current_user->ID;
735 - $slug = isset( $_POST['slug'] ) ? sanitize_text_field( wp_unslash( $_POST['slug'] ) ) : '';
736 - if ( $user_id && ! empty( $slug ) ) {
737 - $activate_notices = get_user_option( 'mainwp_hide_activate_notices' );
738 - if ( ! is_array( $activate_notices ) ) {
739 - $activate_notices = array();
740 - }
658 + $activate_notices[ $slug ] = time();
659 + update_user_option( $user_id, 'mainwp_hide_activate_notices', $activate_notices );
660 + }
661 + die( 1 );
662 + }
741 663
742 - $activate_notices[ $slug ] = time();
743 - update_user_option( $user_id, 'mainwp_hide_activate_notices', $activate_notices );
744 - }
745 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
746 - die( 1 );
747 - }
664 + /**
665 + * Method mainwp_twitter_dashboard_action()
666 + *
667 + * Post handler for twitter bragger.
668 + *
669 + * @return mixed $html|$success
670 + *
671 + * @uses \MainWP\Dashboard\MainWP_Twitter
672 + * @uses \MainWP\Dashboard\MainWP_Twitter::update_twitter_info()
673 + * @uses \MainWP\Dashboard\MainWP_Twitter::enabled_twitter_messages()
674 + * @uses \MainWP\Dashboard\MainWP_Twitter::get_twitter_notice()
675 + * @uses \MainWP\Dashboard\MainWP_Twitter::get_twit_to_send()
676 + */
677 + public function mainwp_twitter_dashboard_action() {
678 + $this->secure_request( 'mainwp_twitter_dashboard_action' );
748 679
680 + $success = false;
681 + $actionName = isset( $_POST['actionName'] ) ? sanitize_text_field( wp_unslash( $_POST['actionName'] ) ) : '';
682 + $countSites = isset( $_POST['countSites'] ) ? intval( $_POST['countSites'] ) : 0;
683 + $countRealItems = isset( $_POST['countRealItems'] ) ? intval( $_POST['countRealItems'] ) : 0;
684 + $countItems = isset( $_POST['countItems'] ) ? intval( $_POST['countItems'] ) : 0;
685 + $countSeconds = isset( $_POST['countSeconds'] ) ? intval( $_POST['countSeconds'] ) : 0;
749 686
687 + if ( ! empty( $actionName ) && ! empty( $countSites ) ) {
688 + $success = MainWP_Twitter::update_twitter_info( $actionName, $countSites, $countSeconds, $countRealItems, time(), $countItems );
689 + }
750 690
751 - /**
752 - * Method mainwp_security_issues_request()
753 - *
754 - * Post handler for,
755 - * Page: SecurityIssues.
756 - *
757 - * @uses \MainWP\Dashboard\MainWP_Exception
758 - * @uses \MainWP\Dashboard\MainWP_Security_Issues::fetch_security_issues()
759 - */
760 - public function mainwp_security_issues_request() {
761 - $this->secure_request( 'mainwp_security_issues_request' );
691 + if ( ! empty( $_POST['showNotice'] ) ) {
692 + if ( MainWP_Twitter::enabled_twitter_messages() ) {
693 + $twitters = MainWP_Twitter::get_twitter_notice( $actionName );
694 + $html = '';
695 + if ( is_array( $twitters ) ) {
696 + foreach ( $twitters as $timeid => $twit_mess ) {
697 + if ( ! empty( $twit_mess ) ) {
698 + $sendText = MainWP_Twitter::get_twit_to_send( $actionName, $timeid );
699 + $html .= '<div class="mainwp-tips mainwp-notice mainwp-notice-blue twitter"><span class="mainwp-tip" twit-what="' . esc_attr( $actionName ) . '" twit-id="' . $timeid . '">' . $twit_mess . '</span>&nbsp;' . MainWP_Twitter::gen_twitter_button( $sendText, false ) . '<span><a href="#" class="mainwp-dismiss-twit mainwp-right" ><i class="fa fa-times-circle"></i> ' . __( 'Dismiss', 'mainwp' ) . '</a></span></div>';
700 + }
701 + }
702 + }
703 + die( $html );
704 + }
705 + } elseif ( $success ) {
706 + die( 'ok' );
707 + }
762 708
763 - try {
764 - wp_send_json( array( 'result' => MainWP_Security_Issues::fetch_security_issues() ) );
765 - } catch ( MainWP_Exception $e ) {
766 - die(
767 - wp_json_encode(
768 - array(
769 - 'error' => array(
770 - 'message' => $e->getMessage(),
771 - 'extra' => $e->get_message_extra(),
772 - ),
773 - )
774 - )
775 - );
776 - }
777 - }
709 + die( '' );
710 + }
778 711
779 - /**
780 - * Method mainwp_security_issues_fix()
781 - *
782 - * Post handler for 'fix issues',
783 - * Page: SecurityIssues.
784 - *
785 - * @uses \MainWP\Dashboard\MainWP_Exception
786 - * @uses \MainWP\Dashboard\MainWP_Security_Issues::fix_security_issue()
787 - */
788 - public function mainwp_security_issues_fix() {
789 - $this->secure_request( 'mainwp_security_issues_fix' );
712 + /**
713 + * Method mainwp_security_issues_request()
714 + *
715 + * Post handler for,
716 + * Page: SecurityIssues.
717 + *
718 + * @uses \MainWP\Dashboard\MainWP_Exception
719 + * @uses \MainWP\Dashboard\MainWP_Security_Issues::fetch_security_issues()
720 + */
721 + public function mainwp_security_issues_request() {
722 + $this->secure_request( 'mainwp_security_issues_request' );
790 723
791 - try {
792 - wp_send_json( array( 'result' => MainWP_Security_Issues::fix_security_issue() ) );
793 - } catch ( MainWP_Exception $e ) {
794 - die(
795 - wp_json_encode(
796 - array(
797 - 'error' => array(
798 - 'message' => $e->getMessage(),
799 - 'extra' => $e->get_message_extra(),
800 - ),
801 - )
802 - )
803 - );
804 - }
805 - }
724 + try {
725 + wp_send_json( array( 'result' => MainWP_Security_Issues::fetch_security_issues() ) );
726 + } catch ( MainWP_Exception $e ) {
727 + die(
728 + wp_json_encode(
729 + array(
730 + 'error' => array(
731 + 'message' => $e->getMessage(),
732 + 'extra' => $e->get_message_extra(),
733 + ),
734 + )
735 + )
736 + );
737 + }
738 + }
806 739
807 - /**
808 - * Method mainwp_security_issues_unfix()
809 - *
810 - * Post handler for 'unfix issues',
811 - * Page: SecurityIssues.
812 - *
813 - * @uses \MainWP\Dashboard\MainWP_Exception
814 - * @uses \MainWP\Dashboard\MainWP_Security_Issues::unfix_security_issue()
815 - */
816 - public function mainwp_security_issues_unfix() {
817 - $this->secure_request( 'mainwp_security_issues_unfix' );
740 + /**
741 + * Method mainwp_security_issues_fix()
742 + *
743 + * Post handler for 'fix issues',
744 + * Page: SecurityIssues.
745 + *
746 + * @uses \MainWP\Dashboard\MainWP_Exception
747 + * @uses \MainWP\Dashboard\MainWP_Security_Issues::fix_security_issue()
748 + */
749 + public function mainwp_security_issues_fix() {
750 + $this->secure_request( 'mainwp_security_issues_fix' );
818 751
819 - try {
820 - wp_send_json( array( 'result' => MainWP_Security_Issues::unfix_security_issue() ) );
821 - } catch ( MainWP_Exception $e ) {
822 - die(
823 - wp_json_encode(
824 - array(
825 - 'error' => array(
826 - 'message' => $e->getMessage(),
827 - 'extra' => $e->get_message_extra(),
828 - ),
829 - )
830 - )
831 - );
832 - }
833 - }
752 + try {
753 + wp_send_json( array( 'result' => MainWP_Security_Issues::fix_security_issue() ) );
754 + } catch ( MainWP_Exception $e ) {
755 + die(
756 + wp_json_encode(
757 + array(
758 + 'error' => array(
759 + 'message' => $e->getMessage(),
760 + 'extra' => $e->get_message_extra(),
761 + ),
762 + )
763 + )
764 + );
765 + }
766 + }
834 767
835 - /**
836 - * Method ajax_disconnect_site()
837 - *
838 - * Disconnect Child Site.
839 - *
840 - * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
841 - * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
842 - */
843 - public function ajax_disconnect_site() {
844 - $this->secure_request( 'mainwp_disconnect_site' );
845 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
846 - $siteid = isset( $_POST['wp_id'] ) ? intval( $_POST['wp_id'] ) : 0;
847 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
768 + /**
769 + * Method mainwp_security_issues_unfix()
770 + *
771 + * Post handler for 'unfix issues',
772 + * Page: SecurityIssues.
773 + *
774 + * @uses \MainWP\Dashboard\MainWP_Exception
775 + * @uses \MainWP\Dashboard\MainWP_Security_Issues::unfix_security_issue()
776 + */
777 + public function mainwp_security_issues_unfix() {
778 + $this->secure_request( 'mainwp_security_issues_unfix' );
848 779
849 - if ( empty( $siteid ) ) {
850 - die( wp_json_encode( array( 'error' => 'Error: site id empty' ) ) );
851 - }
780 + try {
781 + wp_send_json( array( 'result' => MainWP_Security_Issues::unfix_security_issue() ) );
782 + } catch ( MainWP_Exception $e ) {
783 + die(
784 + wp_json_encode(
785 + array(
786 + 'error' => array(
787 + 'message' => $e->getMessage(),
788 + 'extra' => $e->get_message_extra(),
789 + ),
790 + )
791 + )
792 + );
793 + }
794 + }
852 795
853 - $website = MainWP_DB::instance()->get_website_by_id( $siteid );
796 + /**
797 + * Method ajax_disconnect_site()
798 + *
799 + * Disconnect Child Site.
800 + *
801 + * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
802 + * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
803 + */
804 + public function ajax_disconnect_site() {
805 + $this->secure_request( 'mainwp_disconnect_site' );
854 806
855 - if ( ! $website ) {
856 - die( wp_json_encode( array( 'error' => 'Not found site' ) ) );
857 - }
807 + $siteid = isset( $_POST['wp_id'] ) ? intval( $_POST['wp_id'] ) : 0;
858 808
859 - try {
860 - $information = MainWP_Connect::fetch_url_authed( $website, 'disconnect' );
861 - } catch ( \Exception $e ) {
862 - $information = array( 'error' => esc_html__( 'fetch_url_authed exception', 'mainwp' ) );
863 - }
809 + if ( empty( $siteid ) ) {
810 + die( wp_json_encode( array( 'error' => 'Error: site id empty' ) ) );
811 + }
864 812
865 - wp_send_json( $information );
866 - }
813 + $website = MainWP_DB::instance()->get_website_by_id( $siteid );
867 814
868 - /**
869 - * Method ajax_sites_display_rows()
870 - *
871 - * Display rows via ajax,
872 - * Page: Manage Sites.
873 - *
874 - * @uses \MainWP\Dashboard\MainWP_Manage_Sites::ajax_optimize_display_rows()
875 - */
876 - public function ajax_sites_display_rows() {
877 - $this->secure_request( 'mainwp_manage_sites_display_rows' );
878 - MainWP_Manage_Sites::ajax_optimize_display_rows();
879 - }
815 + if ( ! $website ) {
816 + die( wp_json_encode( array( 'error' => 'Not found site' ) ) );
817 + }
880 818
881 - /**
882 - * Method ajax_monitoring_display_rows()
883 - *
884 - * Display rows via ajax,
885 - * Page: Monitoring Sites.
886 - *
887 - * @uses \MainWP\Dashboard\MainWP_Monitoring::ajax_optimize_display_rows()
888 - */
889 - public function ajax_monitoring_display_rows() {
890 - $this->secure_request( 'mainwp_monitoring_sites_display_rows' );
891 - MainWP_Monitoring::ajax_optimize_display_rows();
892 - }
819 + try {
820 + $information = MainWP_Connect::fetch_url_authed( $website, 'disconnect' );
821 + } catch ( \Exception $e ) {
822 + $information = array( 'error' => __( 'fetch_url_authed exception', 'mainwp' ) );
823 + }
893 824
825 + wp_send_json( $information );
826 + }
894 827
895 - /**
896 - * Method mainwp_bulkadduser()
897 - *
898 - * Bulk Add User for,
899 - * Page: BulkAddUser.
900 - *
901 - * @uses \MainWP\Dashboard\MainWP_User::do_bulk_add()
902 - */
903 - public function mainwp_bulkadduser() {
904 - $this->check_security( 'mainwp_bulkadduser' );
905 - MainWP_User::do_bulk_add();
906 - die();
907 - }
828 + /**
829 + * Method ajax_sites_display_rows()
830 + *
831 + * Display rows via ajax,
832 + * Page: Manage Sites.
833 + *
834 + * @uses \MainWP\Dashboard\MainWP_Manage_Sites::ajax_optimize_display_rows()
835 + */
836 + public function ajax_sites_display_rows() {
837 + $this->secure_request( 'mainwp_manage_sites_display_rows' );
838 + MainWP_Manage_Sites::ajax_optimize_display_rows();
839 + }
908 840
909 - /**
910 - * Method mainwp_importuser()
911 - *
912 - * Import user.
913 - *
914 - * @uses \MainWP\Dashboard\MainWP_User::do_import()
915 - */
916 - public function mainwp_importuser() {
917 - $this->secure_request( 'mainwp_importuser' );
918 - MainWP_User::do_import();
919 - }
841 + /**
842 + * Method ajax_sites_display_rows()
843 + *
844 + * Display rows via ajax,
845 + * Page: Monitoring Sites.
846 + *
847 + * @uses \MainWP\Dashboard\MainWP_Monitoring::ajax_optimize_display_rows()
848 + */
849 + public function ajax_monitoring_display_rows() {
850 + $this->secure_request( 'mainwp_monitoring_sites_display_rows' );
851 + MainWP_Monitoring::ajax_optimize_display_rows();
852 + }
920 853
921 - /**
922 - * Method mainwp_clients_add_client()
923 - *
924 - * Add Client for,
925 - * Page: BulkAddClient.
926 - */
927 - public function mainwp_clients_add_client() {
928 - $this->check_security( 'mainwp_clients_add_client' );
929 - MainWP_Client::add_client();
930 - die();
931 - }
932 854
933 - /**
934 - * Method mainwp_clients_delete_client()
935 - *
936 - * Add Client for,
937 - * Page: BulkAddClient.
938 - */
939 - public function mainwp_clients_delete_client() {
940 - $this->check_security( 'mainwp_clients_delete_client' );
941 - $ret = array( 'success' => false );
942 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
943 - $client_id = isset( $_POST['clientid'] ) ? intval( $_POST['clientid'] ) : 0;
944 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
945 - if ( $client_id ) {
946 - MainWP_DB_Client::instance()->delete_client( $client_id );
947 - $ret['success'] = 'SUCCESS';
948 - $ret['result'] = esc_html__( 'Client removed successfully.', 'mainwp' );
949 - } else {
950 - $ret['result'] = esc_html__( 'Client ID empty.', 'mainwp' );
951 - }
855 + /**
856 + * Method mainwp_bulkadduser()
857 + *
858 + * Bulk Add User for,
859 + * Page: BulkAddUser.
860 + *
861 + * @uses \MainWP\Dashboard\MainWP_User::do_bulk_add()
862 + */
863 + public function mainwp_bulkadduser() {
864 + $this->check_security( 'mainwp_bulkadduser' );
865 + MainWP_User::do_bulk_add();
866 + die();
867 + }
952 868
953 - echo wp_json_encode( $ret );
954 - exit;
955 - }
869 + /**
870 + * Method mainwp_importuser()
871 + *
872 + * Import user.
873 + *
874 + * @uses \MainWP\Dashboard\MainWP_User::do_import()
875 + */
876 + public function mainwp_importuser() {
877 + $this->secure_request( 'mainwp_importuser' );
878 + MainWP_User::do_import();
879 + }
956 880
957 - /**
958 - * Method mainwp_clients_save_field()
959 - *
960 - * Save client custom fields.
961 - */
962 - public function mainwp_clients_save_field() {
963 - $this->check_security( 'mainwp_clients_save_field' );
964 - MainWP_Client::save_client_field();
965 - die();
966 - }
881 + /**
882 + * Method mainwp_notes_save()
883 + *
884 + * Post handler for save notes on,
885 + * Page: Manage Sites.
886 + *
887 + * @uses \MainWP\Dashboard\MainWP_Manage_Sites_Handler::save_note()
888 + */
889 + public function mainwp_notes_save() {
890 + $this->secure_request( 'mainwp_notes_save' );
891 + MainWP_Manage_Sites_Handler::save_note();
892 + }
967 893
894 + /**
895 + * Method mainwp_syncerrors_dismiss()
896 + *
897 + * Dismiss Sync errors for,
898 + * Widget: RightNow.
899 + *
900 + * @uses \MainWP\Dashboard\MainWP_Updates_Overview::dismiss_sync_errors()
901 + */
902 + public function mainwp_syncerrors_dismiss() {
968 903
969 - /**
970 - * Method mainwp_clients_delete_general_field()
971 - *
972 - * Delete client general fields.
973 - */
974 - public function mainwp_clients_delete_general_field() {
975 - $this->check_security( 'mainwp_clients_delete_general_field' );
976 - $ret = array( 'success' => false );
977 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
978 - $field_id = isset( $_POST['field_id'] ) ? intval( $_POST['field_id'] ) : 0;
979 - $client_id = 0; // 0 general fields.
980 - if ( MainWP_DB_Client::instance()->delete_client_field_by( 'field_id', $field_id, $client_id ) ) {
981 - $ret['success'] = true;
982 - }
983 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
984 - echo wp_json_encode( $ret );
985 - exit;
986 - }
904 + $this->secure_request( 'mainwp_syncerrors_dismiss' );
987 905
906 + try {
907 + die( wp_json_encode( array( 'result' => MainWP_Updates_Overview::dismiss_sync_errors() ) ) );
908 + } catch ( \Exception $e ) {
909 + die( wp_json_encode( array( 'error' => $e->getMessage() ) ) );
910 + }
911 + }
988 912
989 - /**
990 - * Method mainwp_clients_delete_field()
991 - *
992 - * Delete client custom fields.
993 - */
994 - public function mainwp_clients_delete_field() {
995 - $this->check_security( 'mainwp_clients_delete_field' );
996 - $ret = array( 'success' => false );
997 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
998 - $field_id = isset( $_POST['field_id'] ) ? intval( $_POST['field_id'] ) : 0;
999 - $client_id = isset( $_POST['client_id'] ) ? intval( $_POST['client_id'] ) : 0; // $client_id > 0, individual token.
1000 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1001 - if ( $client_id && MainWP_DB_Client::instance()->delete_client_field_by( 'field_id', $field_id, $client_id ) ) {
1002 - $ret['success'] = true;
1003 - }
1004 - echo wp_json_encode( $ret );
1005 - exit;
1006 - }
913 + /**
914 + * Method mainwp_events_notice_hide()
915 + *
916 + * Hide events notice.
917 + */
918 + public function mainwp_events_notice_hide() {
919 + $this->secure_request( 'mainwp_events_notice_hide' );
1007 920
1008 - /**
1009 - * Method mainwp_notes_save()
1010 - *
1011 - * Post handler for save notes on,
1012 - * Page: Manage Sites.
1013 - *
1014 - * @uses \MainWP\Dashboard\MainWP_Manage_Sites_Handler::save_note()
1015 - */
1016 - public function mainwp_notes_save() {
1017 - $this->secure_request( 'mainwp_notes_save' );
1018 - MainWP_Manage_Sites_Handler::save_note();
1019 - }
921 + if ( isset( $_POST['notice'] ) ) {
922 + $current_options = get_option( 'mainwp_showhide_events_notice' );
923 + if ( ! is_array( $current_options ) ) {
924 + $current_options = array();
925 + }
926 + if ( 'first_site' === $_POST['notice'] ) {
927 + update_option( 'mainwp_first_site_events_notice', '' );
928 + } elseif ( 'request_reviews1' === $_POST['notice'] ) {
929 + $current_options['request_reviews1'] = 15;
930 + $current_options['request_reviews1_starttime'] = time();
931 + } elseif ( 'request_reviews1_forever' === $_POST['notice'] || 'request_reviews2_forever' === $_POST['notice'] ) {
932 + $current_options['request_reviews1'] = 'forever';
933 + $current_options['request_reviews2'] = 'forever';
934 + } elseif ( 'request_reviews2' === $_POST['notice'] ) {
935 + $current_options['request_reviews2'] = 15;
936 + $current_options['request_reviews2_starttime'] = time();
937 + } elseif ( 'trust_child' === $_POST['notice'] ) {
938 + $current_options['trust_child'] = 1;
939 + } elseif ( 'multi_site' === $_POST['notice'] ) {
940 + $current_options['hide_multi_site_notice'] = 1;
941 + }
942 + update_option( 'mainwp_showhide_events_notice', $current_options );
943 + }
944 + die( 'ok' );
945 + }
1020 946
1021 - /**
1022 - * Method mainwp_clients_notes_save()
1023 - *
1024 - * Post handler for save notes on,
1025 - * Page: Manage Sites.
1026 - *
1027 - * @uses \MainWP\Dashboard\MainWP_Manage_Sites_Handler::save_note()
1028 - */
1029 - public function mainwp_clients_notes_save() {
1030 - $this->secure_request( 'mainwp_clients_notes_save' );
1031 - MainWP_Client::save_note();
1032 - }
947 + /**
948 + * Method mainwp_showhide_sections()
949 + *
950 + * Show/Hide sections.
951 + */
952 + public function mainwp_showhide_sections() {
953 + if ( isset( $_POST['sec'] ) && isset( $_POST['status'] ) ) {
954 + $opts = get_option( 'mainwp_opts_showhide_sections' );
955 + if ( ! is_array( $opts ) ) {
956 + $opts = array();
957 + }
958 + $opts[ sanitize_text_field( wp_unslash( $_POST['sec'] ) ) ] = sanitize_text_field( wp_unslash( $_POST['status'] ) );
959 + update_option( 'mainwp_opts_showhide_sections', $opts );
960 + die( 'ok' );
961 + }
962 + die( 'failed' );
963 + }
1033 964
1034 - /**
1035 - * Method mainwp_clients_suspend_client()
1036 - *
1037 - * Post handler for suspend client,
1038 - * Page: Manage Sites.
1039 - *
1040 - * @uses \MainWP\Dashboard\MainWP_Manage_Sites_Handler::save_note()
1041 - */
1042 - public function mainwp_clients_suspend_client() {
1043 - $this->secure_request( 'mainwp_clients_suspend_client' );
1044 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1045 - $clientid = isset( $_POST['clientid'] ) ? intval( $_POST['clientid'] ) : 0;
1046 - $suspended = isset( $_POST['suspend_status'] ) && ! empty( $_POST['suspend_status'] ) ? 1 : 0;
1047 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
965 + /**
966 + * Method mainwp_saving_status()
967 + *
968 + * MainWP Saving Status.
969 + */
970 + public function mainwp_saving_status() {
971 + if ( ! isset( $_REQUEST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST['nonce'] ), 'mainwp_ajax' ) ) {
972 + die( __( 'WP nonce could not be verified. Please reload the page and try again.', 'mainwp' ) );
973 + }
974 + $saving_status = isset( $_POST['saving_status'] ) ? sanitize_text_field( wp_unslash( $_POST['saving_status'] ) ) : false;
975 + if ( ! empty( $saving_status ) ) {
976 + $current_options = get_option( 'mainwp_opts_saving_status' );
977 + if ( ! is_array( $current_options ) ) {
978 + $current_options = array();
979 + }
980 + if ( isset( $_POST['value'] ) ) {
981 + $current_options[ $saving_status ] = sanitize_text_field( wp_unslash( $_POST['value'] ) );
982 + }
983 + update_option( 'mainwp_opts_saving_status', $current_options );
984 + }
985 + die( 'ok' );
986 + }
1048 987
1049 - if ( empty( $clientid ) ) {
1050 - wp_die( 'Error - empty client id!' );
1051 - }
988 + /**
989 + * Method ajax_recheck_http()
990 + *
991 + * Recheck Child Site http status code & message.
992 + *
993 + * @uses \MainWP\Dashboard\MainWP_Connect::check_ignored_http_code()
994 + * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
995 + * @uses \MainWP\Dashboard\MainWP_Monitoring_Handler::handle_check_website()
996 + */
997 + public function ajax_recheck_http() {
998 + $this->check_security( 'mainwp_recheck_http' );
1052 999
1053 - $params = array(
1054 - 'client_id' => $clientid,
1055 - 'suspended' => $suspended,
1056 - );
1000 + if ( ! isset( $_POST['websiteid'] ) || empty( $_POST['websiteid'] ) ) {
1001 + die( -1 );
1002 + }
1057 1003
1058 - MainWP_DB_Client::instance()->update_client( $params );
1004 + $website = MainWP_DB::instance()->get_website_by_id( intval( $_POST['websiteid'] ) );
1005 + if ( empty( $website ) ) {
1006 + die( -1 );
1007 + }
1059 1008
1060 - $client = MainWP_DB_Client::instance()->get_wp_client_by( 'client_id', $clientid );
1009 + $result = MainWP_Monitoring_Handler::handle_check_website( $website );
1010 + $http_code = ( is_array( $result ) && isset( $result['httpCode'] ) ) ? $result['httpCode'] : 0;
1011 + $check_result = MainWP_Connect::check_ignored_http_code( $http_code );
1012 + die(
1013 + wp_json_encode(
1014 + array(
1015 + 'httpcode' => esc_html( $http_code ),
1016 + 'status' => $check_result ? 1 : 0,
1017 + )
1018 + )
1019 + );
1020 + }
1061 1021
1062 - /**
1063 - * Fires immediately after update client suspend/unsuspend.
1064 - *
1065 - * @since 4.5.1.1
1066 - *
1067 - * @param object $client client data.
1068 - * @param bool $suspended true|false.
1069 - */
1070 - do_action( 'mainwp_client_suspend', $client, $suspended );
1022 + /**
1023 + * Method mainwp_ignore_http_response()
1024 + *
1025 + * Ignore Child Site https response.
1026 + *
1027 + * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
1028 + * @uses \MainWP\Dashboard\MainWP_DB::update_website_values()
1029 + */
1030 + public function mainwp_ignore_http_response() {
1031 + $this->check_security( 'mainwp_ignore_http_response' );
1032 + $siteid = isset( $_POST['websiteid'] ) ? intval( $_POST['websiteid'] ) : false;
1071 1033
1072 - MainWP_DB_Client::instance()->suspend_unsuspend_websites_by_client_id( $clientid, $suspended );
1034 + if ( empty( $siteid ) ) {
1035 + die( -1 );
1036 + }
1073 1037
1074 - wp_die( 'success' );
1075 - }
1038 + $website = MainWP_DB::instance()->get_website_by_id( $siteid );
1039 + if ( empty( $website ) ) {
1040 + die( -1 );
1041 + }
1076 1042
1077 - /**
1078 - * Method mainwp_syncerrors_dismiss()
1079 - *
1080 - * Dismiss Sync errors for,
1081 - * Widget: RightNow.
1082 - *
1083 - * @uses \MainWP\Dashboard\MainWP_Updates_Overview::dismiss_sync_errors()
1084 - */
1085 - public function mainwp_syncerrors_dismiss() {
1043 + MainWP_DB::instance()->update_website_values( $website->id, array( 'http_response_code' => '-1' ) );
1044 + die( wp_json_encode( array( 'ok' => 1 ) ) );
1045 + }
1086 1046
1087 - $this->secure_request( 'mainwp_syncerrors_dismiss' );
1047 + /**
1048 + * Method mainwp_autoupdate_and_trust_child()
1049 + *
1050 + * Set MainWP Child Plugin to Trusted & AutoUpdate.
1051 + *
1052 + * @uses \MainWP\Dashboard\MainWP_Plugins_Handler::trust_plugin()
1053 + */
1054 + public function mainwp_autoupdate_and_trust_child() {
1055 + $this->secure_request( 'mainwp_autoupdate_and_trust_child' );
1056 + if ( get_option( 'mainwp_automaticDailyUpdate' ) != 1 ) {
1057 + update_option( 'mainwp_automaticDailyUpdate', 1 );
1058 + }
1059 + MainWP_Plugins_Handler::trust_plugin( 'mainwp-child/mainwp-child.php' );
1060 + die( 'ok' );
1061 + }
1088 1062
1089 - try {
1090 - die( wp_json_encode( array( 'result' => MainWP_Updates_Overview::dismiss_sync_errors() ) ) );
1091 - } catch ( \Exception $e ) {
1092 - die( wp_json_encode( array( 'error' => $e->getMessage() ) ) );
1093 - }
1094 - }
1063 + /**
1064 + * Method mainwp_force_destroy_sessions()
1065 + *
1066 + * Force destroy sessions.
1067 + *
1068 + * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
1069 + * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
1070 + *
1071 + * @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website()
1072 + */
1073 + public function mainwp_force_destroy_sessions() {
1074 + $this->secure_request( 'mainwp_force_destroy_sessions' );
1095 1075
1096 - /**
1097 - * Method mainwp_events_notice_hide()
1098 - *
1099 - * Hide events notice.
1100 - */
1101 - public function mainwp_events_notice_hide() {
1102 - $this->secure_request( 'mainwp_events_notice_hide' );
1103 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1104 - if ( isset( $_POST['notice'] ) ) {
1105 - $current_options = get_option( 'mainwp_showhide_events_notice' );
1106 - if ( ! is_array( $current_options ) ) {
1107 - $current_options = array();
1108 - }
1109 - if ( 'first_site' === $_POST['notice'] ) {
1110 - update_option( 'mainwp_first_site_events_notice', '' );
1111 - } elseif ( 'request_reviews1' === $_POST['notice'] ) {
1112 - $current_options['request_reviews1'] = 15;
1113 - $current_options['request_reviews1_starttime'] = time();
1114 - } elseif ( 'request_reviews1_forever' === $_POST['notice'] || 'request_reviews2_forever' === $_POST['notice'] ) {
1115 - $current_options['request_reviews1'] = 'forever';
1116 - $current_options['request_reviews2'] = 'forever';
1117 - } elseif ( 'request_reviews2' === $_POST['notice'] ) {
1118 - $current_options['request_reviews2'] = 15;
1119 - $current_options['request_reviews2_starttime'] = time();
1120 - } elseif ( 'trust_child' === $_POST['notice'] ) {
1121 - $current_options['trust_child'] = 1;
1122 - } elseif ( 'multi_site' === $_POST['notice'] ) {
1123 - $current_options['hide_multi_site_notice'] = 1;
1124 - }
1125 - update_option( 'mainwp_showhide_events_notice', $current_options );
1126 - }
1127 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1128 - die( 'ok' );
1129 - }
1076 + $website_id = ( isset( $_POST['website_id'] ) ? (int) $_POST['website_id'] : 0 );
1130 1077
1131 - /**
1132 - * Method mainwp_showhide_sections()
1133 - *
1134 - * Show/Hide sections.
1135 - */
1136 - public function mainwp_showhide_sections() {
1137 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1138 - if ( isset( $_POST['sec'] ) && isset( $_POST['status'] ) ) {
1139 - $opts = get_option( 'mainwp_opts_showhide_sections' );
1140 - if ( ! is_array( $opts ) ) {
1141 - $opts = array();
1142 - }
1143 - $opts[ sanitize_text_field( wp_unslash( $_POST['sec'] ) ) ] = sanitize_text_field( wp_unslash( $_POST['status'] ) );
1144 - update_option( 'mainwp_opts_showhide_sections', $opts );
1145 - die( 'ok' );
1146 - }
1147 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1148 - die( 'failed' );
1149 - }
1078 + if ( ! MainWP_DB::instance()->get_website_by_id( $website_id ) ) {
1079 + die( wp_json_encode( array( 'error' => array( 'message' => __( 'This website does not exist.', 'mainwp' ) ) ) ) );
1080 + }
1150 1081
1151 - /**
1152 - * Method mainwp_saving_status()
1153 - *
1154 - * MainWP Saving Status.
1155 - */
1156 - public function mainwp_saving_status() {
1157 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1158 - if ( ! isset( $_REQUEST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST['nonce'] ), 'mainwp_ajax' ) ) {
1159 - die( esc_html__( 'WP nonce could not be verified. Please reload the page and try again.', 'mainwp' ) );
1160 - }
1161 - $saving_status = isset( $_POST['saving_status'] ) ? sanitize_text_field( wp_unslash( $_POST['saving_status'] ) ) : false;
1162 - if ( ! empty( $saving_status ) ) {
1163 - $current_options = get_option( 'mainwp_opts_saving_status' );
1164 - if ( ! is_array( $current_options ) ) {
1165 - $current_options = array();
1166 - }
1167 - if ( isset( $_POST['value'] ) ) {
1168 - $current_options[ $saving_status ] = sanitize_text_field( wp_unslash( $_POST['value'] ) );
1169 - }
1170 - update_option( 'mainwp_opts_saving_status', $current_options );
1171 - }
1172 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1173 - die( 'ok' );
1174 - }
1082 + $website = MainWP_DB::instance()->get_website_by_id( $website_id );
1083 + if ( ! MainWP_System_Utility::can_edit_website( $website ) ) {
1084 + die( wp_json_encode( array( 'error' => array( 'message' => __( 'You cannot edit this website.', 'mainwp' ) ) ) ) );
1085 + }
1175 1086
1176 - /**
1177 - * Method ajax_recheck_http()
1178 - *
1179 - * Recheck Child Site http status code & message.
1180 - *
1181 - * @uses \MainWP\Dashboard\MainWP_Connect::check_ignored_http_code()
1182 - * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
1183 - * @uses \MainWP\Dashboard\MainWP_Monitoring_Handler::handle_check_website()
1184 - */
1185 - public function ajax_recheck_http() {
1186 - $this->check_security( 'mainwp_recheck_http' );
1187 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1188 - if ( ! isset( $_POST['websiteid'] ) || empty( $_POST['websiteid'] ) ) {
1189 - die( -1 );
1190 - }
1087 + try {
1088 + $information = MainWP_Connect::fetch_url_authed(
1089 + $website,
1090 + 'settings_tools',
1091 + array(
1092 + 'action' => 'force_destroy_sessions',
1093 + )
1094 + );
1191 1095
1192 - $website = MainWP_DB::instance()->get_website_by_id( intval( $_POST['websiteid'] ) );
1193 - if ( empty( $website ) ) {
1194 - die( -1 );
1195 - }
1196 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1096 + /**
1097 + * MainWP information array.
1098 + *
1099 + * @global object $mainWP
1100 + */
1101 + global $mainWP;
1197 1102
1198 - $result = MainWP_Monitoring_Handler::handle_check_website( $website );
1199 - $http_code = ( is_array( $result ) && isset( $result['httpCode'] ) ) ? $result['httpCode'] : 0;
1200 - $check_result = MainWP_Connect::check_ignored_http_code( $http_code );
1201 - die(
1202 - wp_json_encode(
1203 - array(
1204 - 'httpcode' => esc_html( $http_code ),
1205 - 'status' => $check_result ? 1 : 0,
1206 - )
1207 - )
1208 - );
1209 - }
1103 + if ( ( '2.0.22' === $mainWP->get_version() ) || ( '2.0.23' === $mainWP->get_version() ) ) {
1104 + if ( 1 != get_option( 'mainwp_fixed_security_2022' ) ) {
1105 + update_option( 'mainwp_fixed_security_2022', 1 );
1106 + }
1107 + }
1108 + } catch ( \Exception $e ) {
1109 + $information = array( 'error' => __( 'fetch_url_authed exception', 'mainwp' ) );
1110 + }
1210 1111
1211 - /**
1212 - * Method mainwp_ignore_http_response()
1213 - *
1214 - * Ignore Child Site https response.
1215 - *
1216 - * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
1217 - * @uses \MainWP\Dashboard\MainWP_DB::update_website_values()
1218 - */
1219 - public function mainwp_ignore_http_response() {
1220 - $this->check_security( 'mainwp_ignore_http_response' );
1221 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1222 - $siteid = isset( $_POST['websiteid'] ) ? intval( $_POST['websiteid'] ) : false;
1223 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1224 - if ( empty( $siteid ) ) {
1225 - die( -1 );
1226 - }
1112 + wp_send_json( $information );
1113 + }
1227 1114
1228 - $website = MainWP_DB::instance()->get_website_by_id( $siteid );
1229 - if ( empty( $website ) ) {
1230 - die( -1 );
1231 - }
1232 -
1233 - MainWP_DB::instance()->update_website_values( $website->id, array( 'http_response_code' => '-1' ) );
1234 - die( wp_json_encode( array( 'ok' => 1 ) ) );
1235 - }
1236 -
1237 - /**
1238 - * Method mainwp_autoupdate_and_trust_child()
1239 - *
1240 - * Set MainWP Child Plugin to Trusted & AutoUpdate.
1241 - *
1242 - * @uses \MainWP\Dashboard\MainWP_Plugins_Handler::trust_plugin()
1243 - */
1244 - public function mainwp_autoupdate_and_trust_child() {
1245 - $this->secure_request( 'mainwp_autoupdate_and_trust_child' );
1246 - if ( 1 !== (int) get_option( 'mainwp_pluginAutomaticDailyUpdate' ) ) {
1247 - update_option( 'mainwp_pluginAutomaticDailyUpdate', 1 );
1248 - }
1249 - MainWP_Plugins_Handler::trust_plugin( 'mainwp-child/mainwp-child.php' );
1250 - die( 'ok' );
1251 - }
1252 -
1253 - /**
1254 - * Method mainwp_force_destroy_sessions()
1255 - *
1256 - * Force destroy sessions.
1257 - *
1258 - * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
1259 - * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
1260 - *
1261 - * @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website()
1262 - */
1263 - public function mainwp_force_destroy_sessions() {
1264 - $this->secure_request( 'mainwp_force_destroy_sessions' );
1265 -
1266 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1267 - $website_id = ( isset( $_POST['website_id'] ) ? (int) $_POST['website_id'] : 0 );
1268 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1269 - if ( ! MainWP_DB::instance()->get_website_by_id( $website_id ) ) {
1270 - die( wp_json_encode( array( 'error' => array( 'message' => esc_html__( 'This website does not exist.', 'mainwp' ) ) ) ) );
1271 - }
1272 -
1273 - $website = MainWP_DB::instance()->get_website_by_id( $website_id );
1274 - if ( ! MainWP_System_Utility::can_edit_website( $website ) ) {
1275 - die( wp_json_encode( array( 'error' => array( 'message' => esc_html__( 'You cannot edit this website.', 'mainwp' ) ) ) ) );
1276 - }
1277 -
1278 - try {
1279 - $information = MainWP_Connect::fetch_url_authed(
1280 - $website,
1281 - 'settings_tools',
1282 - array(
1283 - 'action' => 'force_destroy_sessions',
1284 - )
1285 - );
1286 - } catch ( \Exception $e ) {
1287 - $information = array( 'error' => esc_html__( 'fetch_url_authed exception', 'mainwp' ) );
1288 - }
1289 -
1290 - wp_send_json( $information );
1291 - }
1292 -
1293 - /**
1294 - * Method ajax_refresh_icon()
1295 - */
1296 - public function ajax_refresh_icon() {
1297 - $this->secure_request( 'mainwp_refresh_icon' );
1298 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1299 - $slug = isset( $_POST['slug'] ) ? sanitize_text_field( wp_unslash( $_POST['slug'] ) ) : '';
1300 - $type = isset( $_POST['type'] ) ? sanitize_text_field( wp_unslash( $_POST['type'] ) ) : '';
1301 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1302 -
1303 - if ( empty( $slug ) ) {
1304 - wp_die( 'failed' );
1305 - }
1306 -
1307 - $fet_icon = MainWP_System_Utility::handle_get_icon( $slug, $type );
1308 -
1309 - if ( ! empty( $fet_icon ) ) {
1310 - wp_die( 'success' );
1311 - } else {
1312 - wp_die( 'failed' );
1313 - }
1314 - }
1315 -
1316 - /**
1317 - * Method ajax_upload_custom_icon()
1318 - */
1319 - public function ajax_upload_custom_icon() {
1320 - $this->secure_request( 'mainwp_upload_custom_icon' );
1321 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1322 - $slug = isset( $_POST['slug'] ) ? sanitize_text_field( wp_unslash( $_POST['slug'] ) ) : '';
1323 - $type = isset( $_POST['type'] ) ? sanitize_text_field( wp_unslash( $_POST['type'] ) ) : '';
1324 - $delete = isset( $_POST['delete'] ) ? intval( $_POST['delete'] ) : 0;
1325 -
1326 - if ( empty( $slug ) || ( 'plugin' !== $type && 'theme' !== $type ) ) {
1327 - wp_die( 'invalid data!' );
1328 - }
1329 -
1330 - $sub_folder = '';
1331 -
1332 - if ( 'plugin' === $type ) {
1333 - $sub_folder = 'plugin-icons';
1334 - } elseif ( 'theme' === $type ) {
1335 - $sub_folder = 'theme-icons';
1336 - } else {
1337 - wp_die( wp_json_encode( array( 'result' => 'invalid' ) ) );
1338 - }
1339 -
1340 - if ( $delete ) {
1341 - MainWP_System_Utility::update_cached_icons( '', $slug, $type, true );
1342 - wp_die( wp_json_encode( array( 'result' => 'success' ) ) );
1343 - }
1344 -
1345 - $output = isset( $_FILES['mainwp_upload_icon_uploader'] ) ? MainWP_System_Utility::handle_upload_image( $sub_folder, $_FILES['mainwp_upload_icon_uploader'], 0 ) : null;
1346 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1347 -
1348 - $uploaded_icon = 'NOTCHANGE';
1349 - if ( is_array( $output ) && isset( $output['filename'] ) && ! empty( $output['filename'] ) ) {
1350 - $uploaded_icon = $output['filename'];
1351 - }
1352 -
1353 - if ( 'NOTCHANGE' !== $uploaded_icon ) {
1354 - MainWP_System_Utility::update_cached_icons( $uploaded_icon, $slug, $type, true );
1355 - wp_die( wp_json_encode( array( 'result' => 'success' ) ) );
1356 - } else {
1357 - wp_die( wp_json_encode( array( 'result' => 'failed' ) ) );
1358 - }
1359 - }
1360 -
1361 - /**
1362 - * Method ajax_select_custom_theme()
1363 - */
1364 - public function ajax_select_custom_theme() {
1365 - $this->secure_request( 'mainwp_select_custom_theme' );
1366 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1367 - $theme = isset( $_POST['theme'] ) ? sanitize_text_field( wp_unslash( $_POST['theme'] ) ) : '';
1368 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1369 - if ( empty( $theme ) ) {
1370 - wp_die( 'failed' );
1371 - }
1372 -
1373 - $user = wp_get_current_user();
1374 - if ( empty( $user ) || empty( $user->ID ) ) {
1375 - wp_die( 'failed' );
1376 - }
1377 -
1378 - update_user_option( $user->ID, 'mainwp_selected_theme', $theme );
1379 - wp_die( 'success' );
1380 - }
1381 -
1382 -
1383 - /**
1384 - * Method ajax_site_actions_dismiss()
1385 - */
1386 - public function ajax_site_actions_dismiss() {
1387 - $this->secure_request( 'mainwp_site_actions_dismiss' );
1388 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1389 - $action_id = isset( $_POST['action_id'] ) ? intval( $_POST['action_id'] ) : 0;
1390 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1391 -
1392 - if ( empty( $action_id ) ) {
1393 - wp_die( 'failed' );
1394 - }
1395 - $update = array(
1396 - 'dismiss' => 1,
1397 - );
1398 - MainWP_DB_Site_Actions::instance()->update_action_by_id( $action_id, $update );
1399 - wp_die( 'success' );
1400 - }
1401 -
1402 - /**
1403 - * Method ajax_site_actions_dismiss()
1404 - */
1405 - public function ajax_delete_non_mainwp_actions() {
1406 - $this->secure_request( 'mainwp_delete_non_mainwp_actions' );
1407 - // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1408 - $siteid = isset( $_POST['wp_id'] ) ? intval( $_POST['wp_id'] ) : 0;
1409 - if ( empty( $siteid ) ) {
1410 - wp_die( wp_json_encode( array( 'error' => 'Empty site ID' ) ) );
1411 - }
1412 - // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1413 - $website = MainWP_DB::instance()->get_website_by_id( $siteid );
1414 - $success = false;
1415 - $error = '';
1416 - try {
1417 - $response = MainWP_Connect::fetch_url_authed( $website, 'delete_actions', array( 'del' => 'act' ) );
1418 - if ( is_array( $response ) ) {
1419 - if ( isset( $response['success'] ) ) {
1420 - $success = true;
1421 - } elseif ( isset( $response['error'] ) ) {
1422 - $error = $response['error'];
1423 - }
1424 - }
1425 - } catch ( \Exception $e ) {
1426 - // ok!
1427 - }
1428 - if ( $success ) {
1429 - MainWP_DB_Site_Actions::instance()->delete_action_by( 'wpid', $siteid );
1430 - wp_die( wp_json_encode( array( 'success' => 'ok' ) ) );
1431 - }
1432 -
1433 - if ( empty( $error ) ) {
1434 - $error = esc_html__( 'Undefined error. Please try again.', 'mainwp' );
1435 - }
1436 - wp_die( wp_json_encode( array( 'error' => $error ) ) );
1437 - }
1438 -
1439 - /**
1440 - * Method ajax_import_demo_data().
1441 - */
1442 - public function ajax_import_demo_data() {
1443 - $this->secure_request( 'mainwp_import_demo_data' );
1444 - $data = MainWP_Demo_Handle::get_instance()->import_data_demo();
1445 - MainWP_Utility::update_option( 'mainwp_enable_guided_tours', 1 );
1446 - wp_die( wp_json_encode( $data ) );
1447 - }
1448 -
1449 - /**
1450 - * Method ajax_delete_demo_data().
1451 - */
1452 - public function ajax_delete_demo_data() {
1453 - $this->secure_request( 'mainwp_delete_demo_data' );
1454 - $data = MainWP_Demo_Handle::get_instance()->delete_data_demo();
1455 - MainWP_Utility::update_option( 'mainwp_enable_guided_tours', 0 );
1456 - wp_die( wp_json_encode( $data ) );
1457 - }
1458 1115 }