Changeset 7238

Show
Ignore:
Timestamp:
03/11/08 16:37:44 (4 months ago)
Author:
ryan
Message:

Auto update fixes from DD32. see #5586

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-admin/includes/class-wp-filesystem-direct.php

    r7155 r7238  
    272272            if ( '/' == substr($filename,-1,1) ) 
    273273                $this->rmdir($path.'/'.$filename,$recursive); 
    274             @rmdir($entry); 
     274            @rmdir($filename); 
    275275        } 
    276276        return @rmdir($path); 
  • trunk/wp-admin/includes/class-wp-filesystem-ftpext.php

    r7164 r7238  
    133133    function get_contents($file,$type='',$resumepos=0){ 
    134134        if( empty($type) ){ 
    135             $extension = substr(strrchr($filename, "."), 1); 
     135            $extension = substr(strrchr($file, "."), 1); 
    136136            $type = isset($this->filetypes[ $extension ]) ? $this->filetypes[ $extension ] : FTP_ASCII; 
    137137        } 
     
    349349    function rmdir($path,$recursive=false){ 
    350350        if( ! $recursive ) 
    351             return @ftp_rmdir($this->link, $file); 
     351            return @ftp_rmdir($this->link, $path); 
    352352 
    353353        //TODO: Recursive Directory delete, Have to delete files from the folder first. 
  • trunk/wp-admin/includes/class-wp-filesystem-ftpsockets.php

    r7171 r7238  
    140140 
    141141        if( empty($type) ){ 
    142             $extension = substr(strrchr($filename, "."), 1); 
     142            $extension = substr(strrchr($file, "."), 1); 
    143143            $type = isset($this->filetypes[ $extension ]) ? $this->filetypes[ $extension ] : FTP_AUTOASCII; 
    144144        } 
     
    377377    function rmdir($path,$recursive=false){ 
    378378        if( ! $recursive ) 
    379             return $this->ftp->rmdir($file); 
     379            return $this->ftp->rmdir($path); 
    380380 
    381381        return $this->ftp->mdel($path); 
  • trunk/wp-admin/includes/file.php

    r7172 r7238  
    232232    // Is the archive valid? 
    233233    if ( false == ($archive_files = $archive->extract(PCLZIP_OPT_EXTRACT_AS_STRING)) ) 
    234         return new WP_Error('incompatible_archive', __('Incompatible archive'), $archive->error_string); 
     234        return new WP_Error('incompatible_archive', __('Incompatible archive'), $archive->errorInfo(true)); 
    235235 
    236236    if ( 0 == count($archive_files) ) 
     
    241241    $tmppath = ''; 
    242242    for ( $j = 0; $j < count($path) - 1; $j++ ) { 
    243         $prevpath = $tmppath; 
    244243        $tmppath .= $path[$j] . '/'; 
    245         if ( ! $fs->is_dir($tmppath) ) { 
    246             //$fs->setDefaultPermissions( $fs->getchmod($tmppath) ); 
     244        if ( ! $fs->is_dir($tmppath) ) 
    247245            $fs->mkdir($tmppath, 0755); 
    248         } 
    249246    } 
    250247 
  • trunk/wp-admin/includes/update.php

    r7237 r7238  
    128128 
    129129    echo "<tr><td colspan='5' class='plugin-update'>"; 
    130     printf( __('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> or <a href="%4$s">upgrade automatically</a>.'), $plugin_data['Name'], $r->url, $r->new_version, "update.php?action=upgrade-plugin&amp;plugin=$file" ); 
     130    printf( __('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> or <a href="%4$s">upgrade automatically</a>.'), $plugin_data['Name'], $r->url, $r->new_version, wp_nonce_url("update.php?action=upgrade-plugin&amp;plugin=$file", 'upgrade-plugin_' . $file) ); 
    131131    echo "</td></tr>"; 
    132132} 
     
    168168    // Download the package 
    169169    $package = $r->package; 
    170     apply_filters('update_feedback', sprintf(__("Downloading update from %s"), $package)); 
     170    apply_filters('update_feedback', sprintf(__('Downloading update from %s'), $package)); 
    171171    $file = download_url($package); 
    172172 
     
    174174        return new WP_Error('download_failed', __('Download failed.')); 
    175175 
    176     $name = basename($plugin, '.php'); 
    177     $working_dir = $base . 'wp-content/upgrade/' . $name; 
     176    $working_dir = $base . 'wp-content/upgrade/' . basename($plugin, '.php'); 
    178177 
    179178    // Clean up working directory 
    180     if ( is_dir($working_dir) ) 
     179    if ( $wp_filesystem->is_dir($working_dir) ) 
    181180        $wp_filesystem->delete($working_dir, true); 
    182181 
    183     apply_filters('update_feedback', __("Unpacking the update")); 
     182    apply_filters('update_feedback', __('Unpacking the update')); 
    184183    // Unzip package to working directory 
    185184    $result = unzip_file($file, $working_dir); 
     
    194193 
    195194    // Remove the existing plugin. 
    196     apply_filters('update_feedback', __("Removing the old version of the plugin")); 
     195    apply_filters('update_feedback', __('Removing the old version of the plugin')); 
    197196    $plugin_dir = dirname($base . PLUGINDIR . "/$plugin"); 
    198197    $plugin_dir = trailingslashit($plugin_dir); 
     198     
    199199    // If plugin is in its own directory, recursively delete the directory. 
    200     if( ! in_array( $plugin_dir, array('.', trailingslashit($base . PLUGINDIR) ) )
     200    if( strpos($plugin, '/') && $plugin_dir != $base . PLUGINDIR . '/'
    201201        $deleted = $wp_filesystem->delete($plugin_dir, true); 
    202202    else 
    203203        $deleted = $wp_filesystem->delete($base . PLUGINDIR . "/$plugin"); 
     204 
    204205    if ( !$deleted ) { 
    205206        $wp_filesystem->delete($working_dir, true); 
     
    207208    } 
    208209 
    209     apply_filters('update_feedback', __("Installing the latest version")); 
     210    apply_filters('update_feedback', __('Installing the latest version')); 
    210211    // Copy new version of plugin into place. 
    211212    if ( !copy_dir($working_dir, $base . PLUGINDIR) ) { 
    212         //$wp_filesystem->delete($working_dir, true); 
     213        //$wp_filesystem->delete($working_dir, true); //TODO: Uncomment? This DOES mean that the new files are available in the upgrade folder if it fails. 
    213214        return new WP_Error('install_failed', __('Installation failed')); 
    214215    } 
  • trunk/wp-admin/update.php

    r7206 r7238  
    66                wp_die('<p>'.__('You do not have sufficient permissions to update plugins for this blog.').'</p>'); 
    77 
    8 function request_filesystem_credentials($form_post, $type = '') { 
     8function request_filesystem_credentials($form_post, $type = '', $error = false) { 
    99    if ( empty($type) ) 
    1010        $type = get_filesystem_method(); 
     
    1313        return array(); 
    1414 
    15     if ( !empty($_POST['password']) && !empty($_POST['username']) && !empty($_POST['hostname']) ) { 
     15    if ( ! $error && !empty($_POST['password']) && !empty($_POST['username']) && !empty($_POST['hostname']) ) { 
    1616        $credentials = array('hostname' => $_POST['hostname'], 'username' => $_POST['username'], 
    1717            'password' => $_POST['password'], 'ssl' => $_POST['ssl']); 
     
    2727    if ( $credentials = get_option('ftp_credentials') ) 
    2828        extract($credentials, EXTR_OVERWRITE); 
     29    if( $error ){ 
     30        echo '<div id="message" class="error"><p>' . __('<strong>Error:</strong> There was an error connecting to the server, Please verify the settings are correct.') . '</p></div>'; 
     31    } 
    2932?> 
    3033<form action="<?php echo $form_post ?>" method="post"> 
     
    4346<tr valign="top"> 
    4447<th scope="row"><?php _e('Password:') ?></th> 
    45 <td><input name="password" type="text" id="password" value="<?php echo attribute_escape($password) ?>" size="40" /></td> 
     48<td><input name="password" type="password" id="password" value="<?php echo attribute_escape($password) ?>" size="40" /></td> 
    4649</tr> 
    4750<tr valign="top"> 
     
    8184    global $wp_filesystem; 
    8285 
    83     $credentials = request_filesystem_credentials("update.php?action=upgrade-plugin&plugin=$plugin"); 
    84     if ( false === $credentials
     86    $url = wp_nonce_url("update.php?action=upgrade-plugin&plugin=$plugin", "upgrade-plugin_$plugin"); 
     87    if ( false === ($credentials = request_filesystem_credentials($url))
    8588        return; 
     89         
     90    if( ! WP_Filesystem($credentials) ){ 
     91        request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again 
     92        return; 
     93    } 
     94         
    8695    echo '<div class="wrap">'; 
    8796    echo '<h2>' . __('Upgrade Plugin') . '</h2>'; 
    88     WP_Filesystem($credentials); 
    89     // TODO: look for auth and connect error codes and direct back to credentials form. 
    9097    if ( $wp_filesystem->errors->get_error_code() ) { 
    9198        foreach ( $wp_filesystem->errors->get_error_messages() as $message ) 
     
    109116 
    110117    if ( 'upgrade-plugin' == $_GET['action'] ) { 
    111         //check-admin_referer('upgrade-plugin_' . $plugin); 
     118        check_admin_referer('upgrade-plugin_' . $plugin); 
    112119        $title = __('Upgrade Plugin'); 
    113120        $parent_file = 'plugins.php'; 
     
    116123        include('admin-footer.php'); 
    117124    } 
    118  
    119125} 
    120126