Ticket #43992: 43992.24.diff
File 43992.24.diff, 4.0 KB (added by , 4 years ago) |
---|
-
src/wp-admin/includes/plugin.php
597 597 * ensure that the success redirection will update the error redirection. 598 598 * 599 599 * @since 2.5.0 600 * @since 5.2.0 Test for WordPress version and PHP version compatibility. 600 601 * 601 602 * @param string $plugin Path to the plugin file relative to the plugins directory. 602 603 * @param string $redirect Optional. URL to redirect to. … … 621 622 return $valid; 622 623 } 623 624 625 $requirements = validate_plugin_requirements( $plugin ); 626 if ( is_wp_error( $requirements ) ) { 627 return $requirements; 628 } 629 624 630 if ( ( $network_wide && ! isset( $current[ $plugin ] ) ) || ( ! $network_wide && ! in_array( $plugin, $current ) ) ) { 625 631 if ( ! empty( $redirect ) ) { 626 632 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 … … 1061 1067 } 1062 1068 1063 1069 /** 1070 * Validate the plugin requirements for WP version and PHP version. 1071 * 1072 * @since 5.2.0 1073 * 1074 * @param string $plugin Path to the plugin file relative to the plugins directory. 1075 * @return true|WP_Error True if requirements are met, WP_Error on failure. 1076 */ 1077 function validate_plugin_requirements( $plugin ) { 1078 $readme_file = WP_PLUGIN_DIR . '/' . dirname( $plugin ) . '/readme.txt'; 1079 1080 if ( file_exists( $readme_file ) ) { 1081 $plugin_data = get_file_data( 1082 $readme_file, 1083 array( 1084 'requires' => 'Requires at least', 1085 'requires_php' => 'Requires PHP', 1086 ), 1087 'plugin' 1088 ); 1089 } else { 1090 return true; 1091 } 1092 1093 $plugin_data['wp_compatible'] = wp_is_wp_compatible( $plugin_data['requires'] ); 1094 $plugin_data['php_compatible'] = wp_is_php_compatible( $plugin_data['requires_php'] ); 1095 1096 $plugin_data = array_merge( $plugin_data, get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ) ); 1097 1098 if ( ! $plugin_data['wp_compatible'] && ! $plugin_data['php_compatible'] ) { 1099 return new WP_Error( 'plugin_wp_php_incompatible', sprintf( 1100 /* translators: %s: plugin name */ 1101 __( '<strong>Error:</strong> Current WordPress and PHP versions do not meet minimum requirements for %s.' ), $plugin_data['Name'] ) 1102 ); 1103 } elseif ( ! $plugin_data['php_compatible'] ) { 1104 return new WP_Error( 'plugin_php_incompatible', sprintf( 1105 /* translators: %s: plugin name */ 1106 __( '<strong>Error:</strong> Current PHP version does not meet minimum requirements for %s.' ), $plugin_data['Name'] ) 1107 ); 1108 } elseif ( ! $plugin_data['wp_compatible'] ) { 1109 return new WP_Error( 'plugin_wp_incompatible', sprintf( 1110 /* translators: %s: plugin name */ 1111 __( '<strong>Error:</strong> Current WordPress version does not meet minimum requirements for %s.' ), $plugin_data['Name'] ) 1112 ); 1113 } 1114 1115 return true; 1116 } 1117 1118 /** 1064 1119 * Whether the plugin can be uninstalled. 1065 1120 * 1066 1121 * @since 2.7.0 -
src/wp-includes/functions.php
6897 6897 ); 6898 6898 echo '</p>'; 6899 6899 } 6900 6901 /** 6902 * Checks compatibility with the current WordPress version. 6903 * 6904 * @since 5.2.0 6905 * 6906 * @param string $required Minimum required WordPress version. 6907 * @return bool True if required version is compatible or empty, false if not. 6908 */ 6909 function wp_is_wp_compatible( $required ) { 6910 $wp_version = get_bloginfo( 'version' ); 6911 6912 return empty( $required ) || version_compare( $wp_version, $required, '>=' ); 6913 } 6914 6915 /** 6916 * Checks compatibility with the current PHP version. 6917 * 6918 * @since 5.2.0 6919 * 6920 * @param string $required Minimum required PHP version. 6921 * @return bool True if required version is compatible or empty, false if not. 6922 */ 6923 function wp_is_php_compatible( $required ) { 6924 return empty( $required ) || version_compare( phpversion(), $required, '>=' ); 6925 }