Make WordPress Core

Opened 12 years ago

Closed 12 years ago

#22138 closed defect (bug) (fixed)

wp_basename wrong on Windows Systems

Reported by: sebber's profile sebber Owned by: ryan's profile ryan
Milestone: 3.5 Priority: normal
Severity: normal Version: 3.4.2
Component: Formatting Keywords: has-patch commit
Focuses: Cc:

Description

On Windows System the Directory Seperator is \ instead of Unix /.

So the urlencode in wp_basename() encodes the \ and it is not removed in basename().

WP_basename is not working properly on Windows Systems.

Just take a look in the Support Forum:

http://wordpress.org/support/topic/function-wp_basename-is-wrong-in-windows?replies=3

Attachments (1)

22138.patch (500 bytes) - added by SergeyBiryukov 12 years ago.

Download all attachments as: .zip

Change History (11)

#1 @sebber
12 years ago

Possible Resolution:

function wp_basename( $path, $suffix = '' ) {
$path = str_replace( '\', '/', $path );
$path = str_replace( '%2F', '/', urlencode( $path ) );
return urldecode( basename( $path ), $suffix );

}
Last edited 12 years ago by SergeyBiryukov (previous) (diff)

#2 @SergeyBiryukov
12 years ago

  • Keywords has-patch needs-unit-tests added; needs-patch removed
  • Milestone changed from Awaiting Review to 3.5

Confirmed. wp_basename() is mostly used on attachment URLs in core, which is why, I guess, we didn't catch this earlier.

#3 @SergeyBiryukov
12 years ago

  • Summary changed from wp_basname wrong on Windows Systems to wp_basename wrong on Windows Systems

#4 @sebber
12 years ago

I checked your solution. It seems all right. Thank you

#5 @knutsp
12 years ago

  • Cc knut@… added

#6 @bpetty
12 years ago

  • Keywords needs-unit-tests removed

I added unit tests for wp_basename for this situation.

#7 @bpetty
12 years ago

Obviously, I also tested, and [attachement:22138.patch] works.

Version 0, edited 12 years ago by bpetty (next)

#8 @bpetty
12 years ago

  • Cc bpetty added

#9 @nacin
12 years ago

  • Keywords commit added

#10 @ryan
12 years ago

  • Owner set to ryan
  • Resolution set to fixed
  • Status changed from new to closed

In [22310]:

Fix wp_basename() for Windows by replacing %5C with /.

Props SergeyBiryukov
fixes #22138

Note: See TracTickets for help on using tickets.