WordPress.org

Make WordPress Core

Ticket #18501: 18501.patch

File 18501.patch, 1.4 KB (added by johnjamesjacoby, 9 years ago)
  • wp-includes/plugin.php

     
    581581 * @return string the filesystem path of the directory that contains the plugin
    582582 */
    583583function plugin_dir_path( $file ) {
    584         return trailingslashit( dirname( $file ) );
     584        $file          = str_replace(  '\\','/',   $file           ); // sanitize for Win32 installs
     585        $file          = preg_replace( '|/+|','/', $file           ); // remove any duplicate slash
     586        $plugin_dir    = str_replace(  '\\','/',   WP_PLUGIN_DIR   ); // sanitize for Win32 installs
     587        $plugin_dir    = preg_replace( '|/+|','/', $plugin_dir     ); // remove any duplicate slash
     588        $mu_plugin_dir = str_replace(  '\\','/',   WPMU_PLUGIN_DIR ); // sanitize for Win32 installs
     589        $mu_plugin_dir = preg_replace( '|/+|','/', $mu_plugin_dir  ); // remove any duplicate slash
     590
     591        // Determine if plugin is in /plugins or /mu-plugins
     592        if ( 0 === strpos( $file, $mu_plugin_dir ) )
     593                $path = $mu_plugin_dir;
     594        else
     595                $path = $plugin_dir;
     596
     597        // Get relative path from plugins dir
     598        $file = preg_replace( '#^' . preg_quote( $plugin_dir, '#' ) . '/|^' . preg_quote( $mu_plugin_dir, '#' ) . '/#', '', $file );
     599        $file = trim( $file, '/' );
     600
     601        // Get the folder name and add it to the path
     602        $folder = dirname( $file );
     603        if ( '.' != $folder )
     604                $path .= '/' . ltrim( $folder, '/' );
     605
     606        return trailingslashit( $path );
    585607}
    586608
    587609/**