WordPress.org

Make WordPress Core

Ticket #46040: 46040.diff

File 46040.diff, 5.2 KB (added by joemoto, 11 months ago)
  • src/wp-admin/includes/class-wp-filesystem-base.php

    diff --git a/src/wp-admin/includes/class-wp-filesystem-base.php b/src/wp-admin/includes/class-wp-filesystem-base.php
    index c518408..090edec 100644
    a b class WP_Filesystem_Base { 
    668668                return false;
    669669        }
    670670
     671                /**
     672                * Is the path a symbolic link.
     673                *
     674                * @param string $path File path.
     675                * @return bool Whether $path is a symbolic link.
     676                */
     677                public function is_link( $path ) {
     678                        return false;
     679                }
     680
    671681        /**
    672682         * Check if a file is readable.
    673683         *
  • src/wp-admin/includes/class-wp-filesystem-direct.php

    diff --git a/src/wp-admin/includes/class-wp-filesystem-direct.php b/src/wp-admin/includes/class-wp-filesystem-direct.php
    index f7d6cb1..051bb2a 100644
    a b class WP_Filesystem_Direct extends WP_Filesystem_Base { 
    287287                }
    288288                $file = str_replace( '\\', '/', $file ); // for win32, occasional problems deleting files otherwise
    289289
    290                 if ( 'f' == $type || $this->is_file( $file ) ) {
     290                if ( 'f' == $type || $this->is_file( $file ) || 'l' === $type || $this->is_link( $file ) ) {
    291291                        return @unlink( $file );
    292292                }
    293293                if ( ! $recursive && $this->is_dir( $file ) ) {
    class WP_Filesystem_Direct extends WP_Filesystem_Base { 
    313313
    314314                return $retval;
    315315        }
     316
    316317        /**
    317318         * @param string $file
    318319         * @return bool
    class WP_Filesystem_Direct extends WP_Filesystem_Base { 
    320321        public function exists( $file ) {
    321322                return @file_exists( $file );
    322323        }
     324
    323325        /**
    324326         * @param string $file
    325327         * @return bool
    class WP_Filesystem_Direct extends WP_Filesystem_Base { 
    327329        public function is_file( $file ) {
    328330                return @is_file( $file );
    329331        }
     332
    330333        /**
    331334         * @param string $path
    332335         * @return bool
    class WP_Filesystem_Direct extends WP_Filesystem_Base { 
    336339        }
    337340
    338341        /**
     342         * Is the path a symbolic link.
     343         *
     344         * @param string $path File path.
     345         * @return bool Whether $path is a symbolic link.
     346         */
     347        public function is_link( $path ) {
     348                return @is_link( $path );
     349        }
     350
     351       
     352        /**
    339353         * @param string $file
    340354         * @return bool
    341355         */
  • src/wp-admin/includes/class-wp-filesystem-ftpext.php

    diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpext.php b/src/wp-admin/includes/class-wp-filesystem-ftpext.php
    index 36648e1..befd785 100644
    a b class WP_Filesystem_FTPext extends WP_Filesystem_Base { 
    361361        }
    362362
    363363        /**
     364         * Is the path a symbolic link.
     365         *
     366         * @param string $path File path.
     367         * @return bool Whether $path is a symbolic link.
     368         */
     369        public function is_link( $path ) {
     370                return false;
     371        }
     372
     373        /**
    364374         * @param string $file
    365375         * @return bool
    366376         */
  • src/wp-admin/includes/class-wp-filesystem-ftpsockets.php

    diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php b/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php
    index 45f1235..4cf9f1d 100644
    a b class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { 
    372372        }
    373373
    374374        /**
     375         * Is the path a symbolic link.
     376         *
     377         * @param string $path File path.
     378         * @return bool Whether $path is a symbolic link.
     379         */
     380        public function is_link( $path ) {
     381                return false;
     382        }
     383
     384        /**
    375385         * @param string $file
    376386         * @return bool
    377387         */
  • src/wp-admin/includes/class-wp-filesystem-ssh2.php

    diff --git a/src/wp-admin/includes/class-wp-filesystem-ssh2.php b/src/wp-admin/includes/class-wp-filesystem-ssh2.php
    index 82101be..af9752e 100644
    a b class WP_Filesystem_SSH2 extends WP_Filesystem_Base { 
    417417         * @return bool
    418418         */
    419419        public function delete( $file, $recursive = false, $type = false ) {
    420                 if ( 'f' == $type || $this->is_file( $file ) ) {
     420                if ( 'f' == $type || $this->is_file( $file ) || 'l' === $type || $this->is_link( $file ) ) {
    421421                        return ssh2_sftp_unlink( $this->sftp_link, $file );
    422422                }
    423423                if ( ! $recursive ) {
    class WP_Filesystem_SSH2 extends WP_Filesystem_Base { 
    457457        }
    458458
    459459        /**
     460         * Is the path a symbolic link.
     461         *
     462         * @param string $path File path.
     463         * @return bool Whether $path is a symbolic link.
     464         */
     465        public function is_link( $path ) {
     466                return is_link( $this->sftp_path( $path ) );
     467        }
     468
     469        /**
    460470         * @param string $file
    461471         * @return bool
    462472         */
  • src/wp-admin/includes/class-wp-upgrader.php

    diff --git a/src/wp-admin/includes/class-wp-upgrader.php b/src/wp-admin/includes/class-wp-upgrader.php
    index d8433b4..4a4cc58 100644
    a b class WP_Upgrader { 
    394394
    395395                // Check writability.
    396396                foreach ( $files as $filename => $file_details ) {
    397                         if ( ! $wp_filesystem->is_writable( $remote_destination . $filename ) ) {
     397                        if ( ! $wp_filesystem->is_writable( $remote_destination . $filename ) && ! $wp_filesystem->is_link( $remote_destination . $filename ) ) {
    398398                                // Attempt to alter permissions to allow writes and try again.
    399399                                $wp_filesystem->chmod( $remote_destination . $filename, ( 'd' == $file_details['type'] ? FS_CHMOD_DIR : FS_CHMOD_FILE ) );
    400400                                if ( ! $wp_filesystem->is_writable( $remote_destination . $filename ) ) {