X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/11be8dc178e77d0b46189bbd8e33a216a9b90942..4f4e083f6f77639c41e2b1ddb200de8e34301cee:/wp-admin/includes/plugin-install.php
diff --git a/wp-admin/includes/plugin-install.php b/wp-admin/includes/plugin-install.php
index 57e24bd7..f81ecc82 100644
--- a/wp-admin/includes/plugin-install.php
+++ b/wp-admin/includes/plugin-install.php
@@ -40,12 +40,14 @@ function plugins_api($action, $args = null) {
if ( ! $res ) {
$request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'body' => array('action' => $action, 'request' => serialize($args))) );
if ( is_wp_error($request) ) {
- $res = new WP_Error('plugins_api_failed', __('An Unexpected HTTP Error occured during the API request.
';
echo wp_generate_tag_cloud($tags, array( 'single_text' => __('%d plugin'), 'multiple_text' => __('%d plugins') ) );
+ echo '
@@ -262,7 +275,7 @@ function display_plugins_table($plugins, $page = 1, $totalpages = 1){
400 )
+ $description = mb_substr($description, 0, 400) . '…';
+ //remove any trailing entities
+ $description = preg_replace('/&[^;\s]{0,6}$/', '', $description);
+ //strip leading/trailing & multiple consecutive lines
+ $description = trim($description);
+ $description = preg_replace("|(\r?\n)+|", "\n", $description);
+ //\n =>
tested, '>') )
+ if ( !empty($api->tested) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->tested)), $api->tested, '>') )
echo '
' . __('Warning: This plugin has not been tested with your current version of WordPress.') . '
';
- else if ( version_compare($GLOBALS['wp_version'], $api->requires, '<') )
- echo '
' . __('Warning: This plugin has not been marked as compatible with your version of WordPress.') . '
';
+
+ else if ( !empty($api->requires) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->requires)), $api->requires, '<') )
+ echo '
' . __('Warning: This plugin has not been marked as compatible with your version of WordPress.') . '
';
+
foreach ( (array)$api->sections as $section_name => $content ) {
$title = $section_name;
$title[0] = strtoupper($title[0]);
@@ -517,7 +546,7 @@ function install_plugin_information() {
$content = links_add_base_url($content, 'http://wordpress.org/extend/plugins/' . $api->slug . '/');
$content = links_add_target($content, '_blank');
- $san_title = attribute_escape(sanitize_title_with_dashes($title));
+ $san_title = esc_attr(sanitize_title_with_dashes($title));
$display = ( $section_name == $section ) ? 'block' : 'none';
@@ -531,364 +560,3 @@ function install_plugin_information() {
iframe_footer();
exit;
}
-
-
-add_action('install_plugins_upload', 'upload_plugin');
-function upload_plugin() {
-
- if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
- wp_die($uploads['error']);
-
- if ( !empty($_FILES) )
- $filename = $_FILES['pluginzip']['name'];
- else if ( isset($_GET['package']) )
- $filename = $_GET['package'];
-
- check_admin_referer('plugin-upload');
-
- echo '
';
- echo '
', sprintf( __('Installing Plugin from file: %s'), basename($filename) ), '
';
-
- //Handle a newly uploaded file, Else assume it was
- if ( !empty($_FILES) ) {
- $filename = wp_unique_filename( $uploads['basedir'], $filename );
- $local_file = $uploads['basedir'] . '/' . $filename;
-
- // Move the file to the uploads dir
- if ( false === @ move_uploaded_file( $_FILES['pluginzip']['tmp_name'], $local_file) )
- wp_die( sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path']));
- } else {
- $local_file = $uploads['basedir'] . '/' . $filename;
- }
-
- do_plugin_install_local_package($local_file, $filename);
- echo '';
-}
-
-add_action('install_plugins_install', 'install_plugin');
-
-/**
- * Display plugin link and execute install.
- *
- * @since 2.7.0
- */
-function install_plugin() {
-
- $plugin = isset($_REQUEST['plugin']) ? stripslashes( $_REQUEST['plugin'] ) : '';
-
- check_admin_referer('install-plugin_' . $plugin);
- $api = plugins_api('plugin_information', array('slug' => $plugin, 'fields' => array('sections' => false) ) ); //Save on a bit of bandwidth.
-
- if ( is_wp_error($api) )
- wp_die($api);
-
- echo '
';
- echo '
', sprintf( __('Installing Plugin: %s'), $api->name . ' ' . $api->version ), '
';
-
- do_plugin_install($api->download_link, $api);
- echo '';
-
-}
-
-/**
- * Retrieve plugin and install.
- *
- * @since 2.7.0
- *
- * @param string $download_url Download URL.
- * @param object $plugin_information Optional. Plugin information
- */
-function do_plugin_install($download_url, $plugin_information = null) {
- global $wp_filesystem;
-
- if ( empty($download_url) ) {
- show_message( __('No plugin Specified') );
- return;
- }
-
- $plugin = isset($_REQUEST['plugin']) ? stripslashes( $_REQUEST['plugin'] ) : '';
-
- $url = 'plugin-install.php?tab=install';
- $url = add_query_arg(array('plugin' => $plugin, 'plugin_name' => stripslashes( $_REQUEST['plugin_name'] ), 'download_url' => stripslashes( $_REQUEST['download_url'] ) ), $url);
-
- $url = wp_nonce_url($url, 'install-plugin_' . $plugin);
- if ( false === ($credentials = request_filesystem_credentials($url)) )
- return;
-
- if ( ! WP_Filesystem($credentials) ) {
- request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again
- return;
- }
-
- if ( $wp_filesystem->errors->get_error_code() ) {
- foreach ( $wp_filesystem->errors->get_error_messages() as $message )
- show_message($message);
- return;
- }
-
- $result = wp_install_plugin( $download_url, 'show_message' );
-
- if ( is_wp_error($result) ) {
- show_message($result);
- show_message( __('Installation Failed') );
- } else {
- show_message( sprintf(__('Successfully installed the plugin
%s %s.'), $plugin_information->name, $plugin_information->version) );
- $plugin_file = $result;
-
- $install_actions = apply_filters('install_plugin_complete_actions', array(
- 'activate_plugin' => '
' . __('Activate Plugin') . '',
- 'plugins_page' => '
' . __('Return to Plugins page') . ''
- ), $plugin_information, $plugin_file);
- if ( ! empty($install_actions) )
- show_message('
' . __('Actions:') . ' ' . implode(' | ', (array)$install_actions));
- }
-}
-
-/**
- * Install a plugin from a local file.
- *
- * @since 2.7.0
- *
- * @param string $package Local Plugin zip
- * @param string $filename Optional. Original filename
- * @param object $plugin_information Optional. Plugin information
- */
-function do_plugin_install_local_package($package, $filename = '') {
- global $wp_filesystem;
-
- if ( empty($package) ) {
- show_message( __('No plugin Specified') );
- return;
- }
-
- if ( empty($filename) )
- $filename = basename($package);
-
- $url = 'plugin-install.php?tab=upload';
- $url = add_query_arg(array('package' => $filename), $url);
-
- $url = wp_nonce_url($url, 'plugin-upload');
- if ( false === ($credentials = request_filesystem_credentials($url)) )
- return;
-
- if ( ! WP_Filesystem($credentials) ) {
- request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again
- return;
- }
-
- if ( $wp_filesystem->errors->get_error_code() ) {
- foreach ( $wp_filesystem->errors->get_error_messages() as $message )
- show_message($message);
- return;
- }
-
- $result = wp_install_plugin_local_package( $package, 'show_message' );
-
- if ( is_wp_error($result) ) {
- show_message($result);
- show_message( __('Installation Failed') );
- } else {
- show_message( __('Successfully installed the plugin.') );
- $plugin_file = $result;
-
- $install_actions = apply_filters('install_plugin_complete_actions', array(
- 'activate_plugin' => '
' . __('Activate Plugin') . '',
- 'plugins_page' => '
' . __('Return to Plugins page') . ''
- ), array(), $plugin_file);
- if ( ! empty($install_actions) )
- show_message('
' . __('Actions:') . ' ' . implode(' | ', (array)$install_actions));
- }
-}
-
-/**
- * Install plugin.
- *
- * @since 2.7.0
- *
- * @param string $package
- * @param string $feedback Optional.
- * @return mixed.
- */
-function wp_install_plugin($package, $feedback = '') {
- global $wp_filesystem;
-
- if ( !empty($feedback) )
- add_filter('install_feedback', $feedback);
-
- // Is a filesystem accessor setup?
- if ( ! $wp_filesystem || ! is_object($wp_filesystem) )
- WP_Filesystem();
-
- if ( ! is_object($wp_filesystem) )
- return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
-
- if ( $wp_filesystem->errors->get_error_code() )
- return new WP_Error('fs_error', __('Filesystem error'), $wp_filesystem->errors);
-
- //Get the base plugin folder
- $plugins_dir = $wp_filesystem->wp_plugins_dir();
- if ( empty($plugins_dir) )
- return new WP_Error('fs_no_plugins_dir', __('Unable to locate WordPress Plugin directory.'));
-
- //And the same for the Content directory.
- $content_dir = $wp_filesystem->wp_content_dir();
- if( empty($content_dir) )
- return new WP_Error('fs_no_content_dir', __('Unable to locate WordPress Content directory (wp-content).'));
-
- $plugins_dir = trailingslashit( $plugins_dir );
- $content_dir = trailingslashit( $content_dir );
-
- if ( empty($package) )
- return new WP_Error('no_package', __('Install package not available.'));
-
- // Download the package
- apply_filters('install_feedback', sprintf(__('Downloading plugin package from %s'), $package));
- $download_file = download_url($package);
-
- if ( is_wp_error($download_file) )
- return new WP_Error('download_failed', __('Download failed.'), $download_file->get_error_message());
-
- $working_dir = $content_dir . 'upgrade/' . basename($package, '.zip');
-
- // Clean up working directory
- if ( $wp_filesystem->is_dir($working_dir) )
- $wp_filesystem->delete($working_dir, true);
-
- apply_filters('install_feedback', __('Unpacking the plugin package'));
- // Unzip package to working directory
- $result = unzip_file($download_file, $working_dir);
-
- // Once extracted, delete the package
- @unlink($download_file);
-
- if ( is_wp_error($result) ) {
- $wp_filesystem->delete($working_dir, true);
- return $result;
- }
-
- //Get a list of the directories in the working directory before we delete it, We need to know the new folder for the plugin
- $filelist = array_keys( $wp_filesystem->dirlist($working_dir) );
-
- if( $wp_filesystem->exists( $plugins_dir . $filelist[0] ) ) {
- $wp_filesystem->delete($working_dir, true);
- return new WP_Error('install_folder_exists', __('Folder already exists.'), $filelist[0] );
- }
-
- apply_filters('install_feedback', __('Installing the plugin'));
- // Copy new version of plugin into place.
- $result = copy_dir($working_dir, $plugins_dir);
- if ( is_wp_error($result) ) {
- $wp_filesystem->delete($working_dir, true);
- return $result;
- }
-
- //Get a list of the directories in the working directory before we delete it, We need to know the new folder for the plugin
- $filelist = array_keys( $wp_filesystem->dirlist($working_dir) );
-
- // Remove working directory
- $wp_filesystem->delete($working_dir, true);
-
- if( empty($filelist) )
- return false; //We couldnt find any files in the working dir, therefor no plugin installed? Failsafe backup.
-
- $folder = $filelist[0];
- $plugin = get_plugins('/' . $folder); //Ensure to pass with leading slash
- $pluginfiles = array_keys($plugin); //Assume the requested plugin is the first in the list
-
- //Return the plugin files name.
- return $folder . '/' . $pluginfiles[0];
-}
-
-/**
- * Install plugin from local package
- *
- * @since 2.7.0
- *
- * @param string $package
- * @param string $feedback Optional.
- * @return mixed.
- */
-function wp_install_plugin_local_package($package, $feedback = '') {
- global $wp_filesystem;
-
- if ( !empty($feedback) )
- add_filter('install_feedback', $feedback);
-
- // Is a filesystem accessor setup?
- if ( ! $wp_filesystem || ! is_object($wp_filesystem) )
- WP_Filesystem();
-
- if ( ! is_object($wp_filesystem) )
- return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
-
- if ( $wp_filesystem->errors->get_error_code() )
- return new WP_Error('fs_error', __('Filesystem error'), $wp_filesystem->errors);
-
- //Get the base plugin folder
- $plugins_dir = $wp_filesystem->wp_plugins_dir();
- if ( empty($plugins_dir) )
- return new WP_Error('fs_no_plugins_dir', __('Unable to locate WordPress Plugin directory.'));
-
- //And the same for the Content directory.
- $content_dir = $wp_filesystem->wp_content_dir();
- if( empty($content_dir) )
- return new WP_Error('fs_no_content_dir', __('Unable to locate WordPress Content directory (wp-content).'));
-
- $plugins_dir = trailingslashit( $plugins_dir );
- $content_dir = trailingslashit( $content_dir );
-
- if ( empty($package) )
- return new WP_Error('no_package', __('Install package not available.'));
-
- $working_dir = $content_dir . 'upgrade/' . basename($package, '.zip');
-
- // Clean up working directory
- if ( $wp_filesystem->is_dir($working_dir) )
- $wp_filesystem->delete($working_dir, true);
-
- apply_filters('install_feedback', __('Unpacking the plugin package'));
- // Unzip package to working directory
- $result = unzip_file($package, $working_dir);
-
- // Once extracted, delete the package
- unlink($package);
-
- if ( is_wp_error($result) ) {
- $wp_filesystem->delete($working_dir, true);
- return $result;
- }
-
- //Get a list of the directories in the working directory before we delete it, We need to know the new folder for the plugin
- $filelist = array_keys( $wp_filesystem->dirlist($working_dir) );
-
- if( $wp_filesystem->exists( $plugins_dir . $filelist[0] ) ) {
- $wp_filesystem->delete($working_dir, true);
- return new WP_Error('install_folder_exists', __('Folder already exists.'), $filelist[0] );
- }
-
- apply_filters('install_feedback', __('Installing the plugin'));
- // Copy new version of plugin into place.
- $result = copy_dir($working_dir, $plugins_dir);
- if ( is_wp_error($result) ) {
- $wp_filesystem->delete($working_dir, true);
- return $result;
- }
-
- //Get a list of the directories in the working directory before we delete it, We need to know the new folder for the plugin
- $filelist = array_keys( $wp_filesystem->dirlist($working_dir) );
-
- // Remove working directory
- $wp_filesystem->delete($working_dir, true);
-
- if( empty($filelist) )
- return false; //We couldnt find any files in the working dir, therefor no plugin installed? Failsafe backup.
-
- $folder = $filelist[0];
- $plugin = get_plugins('/' . $folder); //Ensure to pass with leading slash
- $pluginfiles = array_keys($plugin); //Assume the requested plugin is the first in the list
-
- //Return the plugin files name.
- return $folder . '/' . $pluginfiles[0];
-}
-
-?>