X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/899389d1e4043331309c0433543419258b230b60..3194d1bb103c2d8db4f44feeced5e58ee2756658:/wp-admin/includes/file.php diff --git a/wp-admin/includes/file.php b/wp-admin/includes/file.php index 6c12b3f3..3b4d1c6e 100644 --- a/wp-admin/includes/file.php +++ b/wp-admin/includes/file.php @@ -1,11 +1,14 @@ __( 'RTL Stylesheet' ), 'comments.php' => __( 'Comments' ), 'comments-popup.php' => __( 'Popup Comments' ), - 'footer.php' => __( 'Footer' ), - 'header.php' => __( 'Header' ), + 'footer.php' => __( 'Theme Footer' ), + 'header.php' => __( 'Theme Header' ), 'sidebar.php' => __( 'Sidebar' ), 'archive.php' => __( 'Archives' ), 'author.php' => __( 'Author Template' ), @@ -50,20 +53,23 @@ $wp_file_descriptions = array( * * @since 1.5.0 * - * @uses $wp_file_descriptions + * @global array $wp_file_descriptions * @param string $file Filesystem path or filename - * @return string Description of file from $wp_file_descriptions or basename of $file if description doesn't exist + * @return string Description of file from $wp_file_descriptions or basename of $file if description doesn't exist. + * Appends 'Page Template' to basename of $file if the file is a page template */ function get_file_description( $file ) { - global $wp_file_descriptions; - - if ( isset( $wp_file_descriptions[basename( $file )] ) ) { - return $wp_file_descriptions[basename( $file )]; - } - elseif ( file_exists( $file ) && is_file( $file ) ) { - $template_data = implode( '', file( $file ) ); - if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name )) - return sprintf( __( '%s Page Template' ), _cleanup_header_comment($name[1]) ); + global $wp_file_descriptions, $allowed_files; + + $relative_pathinfo = pathinfo( $file ); + $file_path = $allowed_files[ $file ]; + if ( isset( $wp_file_descriptions[ basename( $file ) ] ) && '.' === $relative_pathinfo['dirname'] ) { + return $wp_file_descriptions[ basename( $file ) ]; + } elseif ( file_exists( $file_path ) && is_file( $file_path ) ) { + $template_data = implode( '', file( $file_path ) ); + if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name ) ) { + return sprintf( __( '%s Page Template' ), _cleanup_header_comment( $name[1] ) ); + } } return trim( basename( $file ) ); @@ -154,14 +160,23 @@ function wp_tempnam( $filename = '', $dir = '' ) { $temp_filename = basename( $filename ); $temp_filename = preg_replace( '|\.[^.]*$|', '', $temp_filename ); - // If the folder is falsey, use it's parent directory name instead + // If the folder is falsey, use its parent directory name instead. if ( ! $temp_filename ) { return wp_tempnam( dirname( $filename ), $dir ); } + // Suffix some random data to avoid filename conflicts + $temp_filename .= '-' . wp_generate_password( 6, false ); $temp_filename .= '.tmp'; $temp_filename = $dir . wp_unique_filename( $dir, $temp_filename ); - touch( $temp_filename ); + + $fp = @fopen( $temp_filename, 'x' ); + if ( ! $fp && is_writable( $dir ) && file_exists( $temp_filename ) ) { + return wp_tempnam( $filename, $dir ); + } + if ( $fp ) { + fclose( $fp ); + } return $temp_filename; } @@ -340,7 +355,9 @@ function _wp_handle_upload( &$file, $overrides, $time, $action ) { if ( 'wp_handle_upload' === $action ) { $move_new_file = @ move_uploaded_file( $file['tmp_name'], $new_file ); } else { - $move_new_file = @ rename( $file['tmp_name'], $new_file ); + // use copy and unlink because rename breaks streams. + $move_new_file = @ copy( $file['tmp_name'], $new_file ); + unlink( $file['tmp_name'] ); } if ( false === $move_new_file ) { @@ -516,6 +533,8 @@ function verify_file_md5( $filename, $expected_md5 ) { * * @since 2.5.0 * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * * @param string $file Full path and filename of zip archive * @param string $to Full path on the filesystem to extract archive to * @return mixed WP_Error on failure, True on success @@ -558,7 +577,7 @@ function unzip_file($file, $to) { * * @param bool $ziparchive Whether to use ZipArchive. Default true. */ - if ( class_exists( 'ZipArchive' ) && apply_filters( 'unzip_file_use_ziparchive', true ) ) { + if ( class_exists( 'ZipArchive', false ) && apply_filters( 'unzip_file_use_ziparchive', true ) ) { $result = _unzip_file_ziparchive($file, $to, $needed_dirs); if ( true === $result ) { return $result; @@ -579,6 +598,8 @@ function unzip_file($file, $to) { * @see unzip_file * @access private * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * * @param string $file Full path and filename of zip archive * @param string $to Full path on the filesystem to extract archive to * @param array $needed_dirs A partial list of required folders needed to be created. @@ -677,6 +698,8 @@ function _unzip_file_ziparchive($file, $to, $needed_dirs = array() ) { * @see unzip_file * @access private * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * * @param string $file Full path and filename of zip archive * @param string $to Full path on the filesystem to extract archive to * @param array $needed_dirs A partial list of required folders needed to be created. @@ -769,6 +792,8 @@ function _unzip_file_pclzip($file, $to, $needed_dirs = array()) { * * @since 2.5.0 * + * @global WP_Filesystem_Base $wp_filesystem Subclass + * * @param string $from source directory * @param string $to destination directory * @param array $skip_list a list of files/folders to skip copying @@ -823,13 +848,13 @@ function copy_dir($from, $to, $skip_list = array() ) { * * @since 2.5.0 * - * @param array $args Optional. Connection args, These are passed directly to - * the `WP_Filesystem_*()` classes. Default false. - * @param string $context Optional. Context for {@see get_filesystem_method()}. - * Default false. - * @param bool $allow_relaxed_file_ownership Optional. Whether to allow Group/World writable. - * Default false. - * @return null|boolean false on failure, true on success. + * @global WP_Filesystem_Base $wp_filesystem Subclass + * + * @param array|false $args Optional. Connection args, These are passed directly to + * the `WP_Filesystem_*()` classes. Default false. + * @param string|false $context Optional. Context for get_filesystem_method(). Default false. + * @param bool $allow_relaxed_file_ownership Optional. Whether to allow Group/World writable. Default false. + * @return null|bool false on failure, true on success. */ function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_ownership = false ) { global $wp_filesystem; @@ -841,7 +866,7 @@ function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_own if ( ! $method ) return false; - if ( ! class_exists("WP_Filesystem_$method") ) { + if ( ! class_exists( "WP_Filesystem_$method" ) ) { /** * Filter the path for a specific filesystem method class file. @@ -902,6 +927,8 @@ function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_own * * @since 2.5.0 * + * @global callable $_wp_filesystem_direct_method + * * @param array $args Optional. Connection details. Default empty array. * @param string $context Optional. Full path to the directory that is tested * for being writable. Default false. @@ -986,15 +1013,18 @@ function get_filesystem_method( $args = array(), $context = false, $allow_relaxe * * @todo Properly mark optional arguments as such * - * @param string $form_post the URL to post the form to - * @param string $type the chosen Filesystem method in use - * @param boolean $error if the current request has failed to connect - * @param string $context The directory which is needed access to, The write-test will be performed on this directory by get_filesystem_method() - * @param array $extra_fields Extra POST fields which should be checked for to be included in the post. - * @param bool $allow_relaxed_file_ownership Whether to allow Group/World writable. - * @return boolean False on failure. True on success. + * @global string $pagenow + * + * @param string $form_post the URL to post the form to + * @param string $type the chosen Filesystem method in use + * @param bool $error if the current request has failed to connect + * @param string $context The directory which is needed access to, The write-test will be performed on this directory by get_filesystem_method() + * @param array $extra_fields Extra POST fields which should be checked for to be included in the post. + * @param bool $allow_relaxed_file_ownership Whether to allow Group/World writable. + * @return bool False on failure. True on success. */ function request_filesystem_credentials($form_post, $type = '', $error = false, $context = false, $extra_fields = null, $allow_relaxed_file_ownership = false ) { + global $pagenow; /** * Filter the filesystem credentials form output. @@ -1069,7 +1099,7 @@ function request_filesystem_credentials($form_post, $type = '', $error = false, $stored_credentials['hostname'] .= ':' . $stored_credentials['port']; unset($stored_credentials['password'], $stored_credentials['port'], $stored_credentials['private_key'], $stored_credentials['public_key']); - if ( ! defined( 'WP_INSTALLING' ) ) { + if ( ! wp_installing() ) { update_option( 'ftp_credentials', $stored_credentials ); } return $credentials; @@ -1126,7 +1156,14 @@ jQuery(function($){
-

+" . __( 'Connection Information' ) . ""; +?>

-

+
+ +
-

-
+
+ $text ) : ?> @@ -1222,7 +1261,7 @@ function wp_print_request_filesystem_credentials_modal() {