diff --git src/wp-admin/includes/plugin.php src/wp-admin/includes/plugin.php
index c898fc5169..5f8674b20e 100644
|
|
|
function _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup |
| 189 | 189 | return $plugin_data; |
| 190 | 190 | } |
| 191 | 191 | |
| | 192 | /** |
| | 193 | * Query the Plugin API to get and return plugin data. |
| | 194 | * |
| | 195 | * @since 5.1.0 |
| | 196 | * @see validate_plugin_requirements() |
| | 197 | * |
| | 198 | * @param string $plugin Path to the plugin file relative to the plugins directory. |
| | 199 | * |
| | 200 | * @return array $plugin_data Array of Plugin API data. |
| | 201 | */ |
| | 202 | function get_plugin_api_data( $plugin_file ) { |
| | 203 | $plugin_data = null; |
| | 204 | $url = 'https://api.wordpress.org/plugins/info/1.2/'; |
| | 205 | $url = add_query_arg( |
| | 206 | array( |
| | 207 | 'action' => 'plugin_information', |
| | 208 | rawurlencode( 'request[slug]' ) => dirname( $plugin_file ), |
| | 209 | ), |
| | 210 | $url |
| | 211 | ); |
| | 212 | $response = wp_remote_get( $url ); |
| | 213 | if ( ! is_wp_error( $response ) ) { |
| | 214 | $plugin_data = json_decode( wp_remote_retrieve_body( $response ) ); |
| | 215 | } |
| | 216 | |
| | 217 | return $plugin_data; |
| | 218 | } |
| | 219 | |
| 192 | 220 | /** |
| 193 | 221 | * Get a list of a plugin's files. |
| 194 | 222 | * |
| … |
… |
function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silen |
| 589 | 617 | return $valid; |
| 590 | 618 | } |
| 591 | 619 | |
| | 620 | if ( validate_plugin_requirements( $plugin ) ) { |
| | 621 | return new WP_Error( 'plugin_invalid', __( 'Plugin does not meet minimum WordPress and/or PHP requirements.' ) ); |
| | 622 | } |
| | 623 | |
| 592 | 624 | if ( ( $network_wide && ! isset( $current[ $plugin ] ) ) || ( ! $network_wide && ! in_array( $plugin, $current ) ) ) { |
| 593 | 625 | if ( ! empty( $redirect ) ) { |
| 594 | 626 | wp_redirect( add_query_arg( '_error_nonce', wp_create_nonce( 'plugin-activation-error_' . $plugin ), $redirect ) ); // we'll override this later if the plugin can be included without fatal error |
| … |
… |
function validate_plugin( $plugin ) { |
| 1023 | 1055 | return 0; |
| 1024 | 1056 | } |
| 1025 | 1057 | |
| | 1058 | /** |
| | 1059 | * Validate the plugin requirements for WP version and PHP version. |
| | 1060 | * Plugin data retrieved from Plugin API call. |
| | 1061 | * Default to true if data not available from Plugin API. |
| | 1062 | * |
| | 1063 | * @since 5.1.0 |
| | 1064 | * @see activate_plugin() |
| | 1065 | * |
| | 1066 | * @param string $plugin Path to the plugin file relative to the plugins directory. |
| | 1067 | * |
| | 1068 | * @return bool |
| | 1069 | */ |
| | 1070 | function validate_plugin_requirements( $plugin ) { |
| | 1071 | $plugin_data = get_plugin_api_data( $plugin ); |
| | 1072 | $wp_requires = isset( $plugin_data->requires ) ? $plugin_data->requires : null; |
| | 1073 | $php_requires = isset( $plugin_data->requires_php ) ? $plugin_data->requires_php : null; |
| | 1074 | |
| | 1075 | return ! ( is_compatible_wp( $wp_requires ) && is_compatible_php( $php_requires ) ); |
| | 1076 | } |
| | 1077 | |
| 1026 | 1078 | /** |
| 1027 | 1079 | * Whether the plugin can be uninstalled. |
| 1028 | 1080 | * |
diff --git src/wp-includes/functions.php src/wp-includes/functions.php
index 471fcbb5d6..d0652ea436 100644
|
|
|
function wp_privacy_delete_old_export_files() { |
| 6553 | 6553 | } |
| 6554 | 6554 | } |
| 6555 | 6555 | } |
| | 6556 | |
| | 6557 | /** |
| | 6558 | * Check compatibility with current WordPress version. |
| | 6559 | * |
| | 6560 | * @since 5.1.0 |
| | 6561 | * |
| | 6562 | * @param string $requires Minimum WordPress version from API. |
| | 6563 | * |
| | 6564 | * @return bool Returns true if requirement met or empty. |
| | 6565 | */ |
| | 6566 | function is_compatible_wp( $requires ) { |
| | 6567 | $wp_version = get_bloginfo( 'version' ); |
| | 6568 | return ( empty( $requires ) || version_compare( substr( $wp_version, 0, strlen( $requires ) ), $requires, '>=' ) ); |
| | 6569 | } |
| | 6570 | |
| | 6571 | // add to wp-includes/functions.php |
| | 6572 | /** |
| | 6573 | * Check compatibility with current PHP version. |
| | 6574 | * |
| | 6575 | * @since 5.1.0 |
| | 6576 | * |
| | 6577 | * @param string $requires Minimum PHP version from API. |
| | 6578 | * |
| | 6579 | * @return bool Returns true if requirement met or empty. |
| | 6580 | */ |
| | 6581 | function is_compatible_php( $requires ) { |
| | 6582 | return ( empty( $requires ) || version_compare( substr( phpversion(), 0, strlen( $requires ) ), $requires, '>=' ) ); |
| | 6583 | } |