X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/6c8f14c09105d0afa4c1574215c59b5021040e76..fa11948979fd6a4ea5705dc613b239699a459db3:/wp-admin/includes/plugin-install.php?ds=sidebyside diff --git a/wp-admin/includes/plugin-install.php b/wp-admin/includes/plugin-install.php index 63a5f711..7f1e0f2c 100644 --- a/wp-admin/includes/plugin-install.php +++ b/wp-admin/includes/plugin-install.php @@ -34,14 +34,44 @@ function plugins_api($action, $args = null) { if ( !isset($args->per_page) ) $args->per_page = 24; - // Allows a plugin to override the WordPress.org API entirely. - // Use the filter 'plugins_api_result' to merely add results. - // Please ensure that a object is returned from the following filters. - $args = apply_filters('plugins_api_args', $args, $action); - $res = apply_filters('plugins_api', false, $action, $args); + /** + * Override the Plugin Install API arguments. + * + * Please ensure that an object is returned. + * + * @since 2.7.0 + * + * @param object $args Plugin API arguments. + * @param string $action The type of information being requested from the Plugin Install API. + */ + $args = apply_filters( 'plugins_api_args', $args, $action ); + + /** + * Allows a plugin to override the WordPress.org Plugin Install API entirely. + * + * Please ensure that an object is returned. + * + * @since 2.7.0 + * + * @param bool|object The result object. Default is false. + * @param string $action The type of information being requested from the Plugin Install API. + * @param object $args Plugin API arguments. + */ + $res = apply_filters( 'plugins_api', false, $action, $args ); if ( false === $res ) { - $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) ); + $url = 'http://api.wordpress.org/plugins/info/1.0/'; + if ( wp_http_supports( array( 'ssl' ) ) ) + $url = set_url_scheme( $url, 'https' ); + + $request = wp_remote_post( $url, array( + 'timeout' => 15, + 'body' => array( + 'action' => $action, + 'request' => serialize( $args ) + ) + ) ); + if ( is_wp_error($request) ) { $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), $request->get_error_message() ); } else { @@ -53,7 +83,16 @@ function plugins_api($action, $args = null) { $res->external = true; } - return apply_filters('plugins_api_result', $res, $action, $args); + /** + * Filter the Plugin Install API response results. + * + * @since 2.7.0 + * + * @param object|WP_Error $res Response object or WP_Error. + * @param string $action The type of information being requested from the Plugin Install API. + * @param object $args Plugin API arguments. + */ + return apply_filters( 'plugins_api_result', $res, $action, $args ); } /** @@ -81,7 +120,7 @@ function install_popular_tags( $args = array() ) { function install_dashboard() { ?> -
WordPress Plugin Directory or upload a plugin in .zip format via this page.' ), self_admin_url( 'plugin-install.php?tab=upload' ) ); ?>
+WordPress Plugin Directory or upload a plugin in .zip format via this page.' ), 'http://wordpress.org/plugins/', self_admin_url( 'plugin-install.php?tab=upload' ) ); ?>
@@ -116,8 +155,8 @@ add_action('install_plugins_dashboard', 'install_dashboard'); * @since 2.7.0 */ function install_search_form( $type_selector = true ) { - $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : 'term'; - $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : ''; + $type = isset($_REQUEST['type']) ? wp_unslash( $_REQUEST['type'] ) : 'term'; + $term = isset($_REQUEST['s']) ? wp_unslash( $_REQUEST['s'] ) : ''; ?>