Changeset 47835 for trunk/src/wp-admin/includes/ajax-actions.php
- Timestamp:
- 05/20/2020 06:47:24 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/ajax-actions.php
r47818 r47835 4568 4568 check_ajax_referer( 'updates' ); 4569 4569 4570 // Ensure after_plugin_row_{$plugin_file} gets hooked. 4571 wp_plugin_update_rows(); 4572 4570 4573 $pagenow = isset( $_POST['pagenow'] ) ? sanitize_key( $_POST['pagenow'] ) : ''; 4571 4574 if ( 'plugins-network' === $pagenow || 'plugins' === $pagenow ) { … … 5268 5271 exit( wp_create_nonce( 'wp_rest' ) ); 5269 5272 } 5273 5274 /** 5275 * Ajax handler to enable or disable plugin and theme auto-updates. 5276 * 5277 * @since 5.5.0 5278 */ 5279 function wp_ajax_toggle_auto_updates() { 5280 check_ajax_referer( 'updates' ); 5281 5282 if ( empty( $_POST['type'] ) || empty( $_POST['asset'] ) || empty( $_POST['state'] ) ) { 5283 wp_send_json_error( array( 'error' => __( 'Invalid data. No selected item.' ) ) ); 5284 } 5285 5286 $asset = sanitize_text_field( urldecode( $_POST['asset'] ) ); 5287 5288 if ( 'enable' !== $_POST['state'] && 'disable' !== $_POST['state'] ) { 5289 wp_send_json_error( array( 'error' => __( 'Invalid data. Unknown state.' ) ) ); 5290 } 5291 $state = $_POST['state']; 5292 5293 if ( 'plugin' !== $_POST['type'] && 'theme' !== $_POST['type'] ) { 5294 wp_send_json_error( array( 'error' => __( 'Invalid data. Unknown type.' ) ) ); 5295 } 5296 $type = $_POST['type']; 5297 5298 switch ( $type ) { 5299 case 'plugin': 5300 if ( ! current_user_can( 'update_plugins' ) ) { 5301 $error_message = __( 'You do not have permission to modify plugins.' ); 5302 wp_send_json_error( array( 'error' => $error_message ) ); 5303 } 5304 5305 $option = 'auto_update_plugins'; 5306 /** This filter is documented in wp-admin/includes/class-wp-plugins-list-table.php */ 5307 $all_items = apply_filters( 'all_plugins', get_plugins() ); 5308 break; 5309 case 'theme': 5310 if ( ! current_user_can( 'update_themes' ) ) { 5311 $error_message = __( 'You do not have permission to modify themes.' ); 5312 wp_send_json_error( array( 'error' => $error_message ) ); 5313 } 5314 5315 $option = 'auto_update_themes'; 5316 $all_items = wp_get_themes(); 5317 break; 5318 default: 5319 wp_send_json_error( array( 'error' => __( 'Invalid data. Unknown type.' ) ) ); 5320 } 5321 5322 if ( ! array_key_exists( $asset, $all_items ) ) { 5323 $error_message = __( 'Invalid data. The item does not exist.' ); 5324 wp_send_json_error( array( 'error' => $error_message ) ); 5325 } 5326 5327 $auto_updates = (array) get_site_option( $option, array() ); 5328 5329 if ( 'disable' === $state ) { 5330 $auto_updates = array_diff( $auto_updates, array( $asset ) ); 5331 } else { 5332 $auto_updates[] = $asset; 5333 $auto_updates = array_unique( $auto_updates ); 5334 } 5335 5336 // Remove items that have been deleted since the site option was last updated. 5337 $auto_updates = array_intersect( $auto_updates, array_keys( $all_items ) ); 5338 5339 update_site_option( $option, $auto_updates ); 5340 5341 wp_send_json_success(); 5342 }
Note: See TracChangeset
for help on using the changeset viewer.