WordPress.org

Make WordPress Core

Ticket #6938: allow-wp-content-directory-outside-of-webroot-2.patch

File allow-wp-content-directory-outside-of-webroot-2.patch, 35.7 KB (added by sambauers, 10 years ago)
  • wp-includes/plugin.php

     
    434434/**
    435435 * plugin_basename() - Gets the basename of a plugin.
    436436 *
    437  * This method extract the name of a plugin from its filename.
     437 * This method extracts the name of a plugin from its filename.
    438438 *
    439439 * @package WordPress
    440440 * @subpackage Plugin
     
    444444 *
    445445 * @param string $file The filename of plugin.
    446446 * @return string The name of a plugin.
     447 * @uses WP_PLUGIN_DIR
    447448 */
    448449function plugin_basename($file) {
    449450        $file = str_replace('\\','/',$file); // sanitize for Win32 installs
    450451        $file = preg_replace('|/+|','/', $file); // remove any duplicate slash
    451         $file = preg_replace('|^.*/' . PLUGINDIR . '/|','',$file); // get relative path from plugins dir
     452        $plugin_dir = str_replace('\\','/',WP_PLUGIN_DIR); // sanitize for Win32 installs
     453        $plugin_dir = preg_replace('|/+|','/', $plugin_dir); // remove any duplicate slash
     454        $file = preg_replace('|^' . preg_quote($plugin_dir, '|') . '/|','',$file); // get relative path from plugins dir
    452455        return $file;
    453456}
    454457
  • wp-includes/js/tinymce/tiny_mce_config.php

     
    206206}
    207207
    208208// Cache path, this is where the .gz files will be stored
    209 $cache_path = ABSPATH . 'wp-content/uploads/js_cache';
     209$cache_path = WP_CONTENT_DIR . '/uploads/js_cache';
    210210if ( $disk_cache && ! is_dir($cache_path) )
    211211        $disk_cache = wp_mkdir_p($cache_path);
    212212
  • wp-includes/theme.php

     
    333333}
    334334
    335335function get_theme_root() {
    336         return apply_filters('theme_root', ABSPATH . "wp-content/themes");
     336        return apply_filters('theme_root', WP_CONTENT_DIR . "/themes");
    337337}
    338338
    339339function get_theme_root_uri() {
    340         return apply_filters('theme_root_uri', get_option('siteurl') . "/wp-content/themes", get_option('siteurl'));
     340        return apply_filters('theme_root_uri', WP_CONTENT_URL . "/themes", get_option('siteurl'));
    341341}
    342342
    343343function get_query_template($type) {
  • wp-includes/functions.php

     
    10801080        $siteurl = get_option( 'siteurl' );
    10811081        $upload_path = get_option( 'upload_path' );
    10821082        if ( trim($upload_path) === '' )
    1083                 $upload_path = 'wp-content/uploads';
     1083                $upload_path = WP_CONTENT_DIR . '/uploads';
    10841084        $dir = $upload_path;
    10851085
    10861086        // $dir is absolute, $path is (maybe) relative to ABSPATH
     
    15581558 */
    15591559function require_wp_db() {
    15601560        global $wpdb;
    1561         if ( file_exists( ABSPATH . 'wp-content/db.php' ) )
    1562                 require_once( ABSPATH . 'wp-content/db.php' );
     1561        if ( file_exists( WP_CONTENT_DIR . '/db.php' ) )
     1562                require_once( WP_CONTENT_DIR . '/db.php' );
    15631563        else
    15641564                require_once( ABSPATH . WPINC . '/wp-db.php' );
    15651565}
     
    15681568        global $wpdb;
    15691569
    15701570        // Load custom DB error template, if present.
    1571         if ( file_exists( ABSPATH . 'wp-content/db-error.php' ) ) {
    1572                 require_once( ABSPATH . 'wp-content/db-error.php' );
     1571        if ( file_exists( WP_CONTENT_DIR . '/db-error.php' ) ) {
     1572                require_once( WP_CONTENT_DIR . '/db-error.php' );
    15731573                die();
    15741574        }
    15751575
  • wp-includes/l10n.php

     
    278278 *
    279279 * The plugin may place all of the .mo files in another folder and set
    280280 * the $path based on the relative location from ABSPATH constant. The
    281  * plugin may use the constant PLUGINDIR and/or plugin_basename() to
     281 * plugin may use the constant WP_PLUGIN_DIR and/or plugin_basename() to
    282282 * get path of the plugin and then add the folder which holds the .mo
    283283 * files.
    284284 *
     
    291291        $locale = get_locale();
    292292
    293293        if ( false === $path )
    294                 $path = PLUGINDIR;
     294                $path = WP_PLUGIN_DIR;
    295295
    296         $mofile = ABSPATH . "$path/$domain-$locale.mo";
     296        $mofile = $path . '/'. $domain . '-' . $locale . '.mo';
    297297        load_textdomain($domain, $mofile);
    298298}
    299299
  • wp-includes/comment-template.php

     
    665665        if ( file_exists( $include ) )
    666666                require( $include );
    667667        else
    668                 require( ABSPATH . 'wp-content/themes/default/comments.php');
     668                require( WP_CONTENT_DIR . '/themes/default/comments.php');
    669669}
    670670
    671671/**
  • wp-includes/general-template.php

     
    77        if ( file_exists( TEMPLATEPATH . '/header.php') )
    88                load_template( TEMPLATEPATH . '/header.php');
    99        else
    10                 load_template( ABSPATH . 'wp-content/themes/default/header.php');
     10                load_template( WP_CONTENT_DIR . '/themes/default/header.php');
    1111}
    1212
    1313
     
    1616        if ( file_exists( TEMPLATEPATH . '/footer.php') )
    1717                load_template( TEMPLATEPATH . '/footer.php');
    1818        else
    19                 load_template( ABSPATH . 'wp-content/themes/default/footer.php');
     19                load_template( WP_CONTENT_DIR . '/themes/default/footer.php');
    2020}
    2121
    2222
     
    2727        elseif ( file_exists( TEMPLATEPATH . '/sidebar.php') )
    2828                load_template( TEMPLATEPATH . '/sidebar.php');
    2929        else
    30                 load_template( ABSPATH . 'wp-content/themes/default/sidebar.php');
     30                load_template( WP_CONTENT_DIR . '/themes/default/sidebar.php');
    3131}
    3232
    3333
  • wp-includes/rss.php

     
    651651}
    652652
    653653class RSSCache {
    654         var $BASE_CACHE = 'wp-content/cache';   // where the cache files are stored
     654        var $BASE_CACHE;        // where the cache files are stored
    655655        var $MAX_AGE    = 43200;                // when are files stale, default twelve hours
    656656        var $ERROR              = '';                   // accumulate error messages
    657657
    658658        function RSSCache ($base='', $age='') {
     659                $this->BASE_CACHE = WP_CONTENT_DIR . '/cache';
    659660                if ( $base ) {
    660661                        $this->BASE_CACHE = $base;
    661662                }
  • wp-settings.php

     
    100100        die( 'Your server is running PHP version ' . phpversion() . ' but WordPress requires at least 4.3.' );
    101101}
    102102
    103 if ( !extension_loaded('mysql') && !file_exists(ABSPATH . 'wp-content/db.php') )
     103if ( !defined('WP_CONTENT_DIR') )
     104        define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down
     105
     106if ( !extension_loaded('mysql') && !file_exists(WP_CONTENT_DIR . '/db.php') )
    104107        die( 'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.' );
    105108
    106109/**
     
    166169
    167170// For an advanced caching plugin to use, static because you would only want one
    168171if ( defined('WP_CACHE') )
    169         @include ABSPATH . 'wp-content/advanced-cache.php';
     172        @include WP_CONTENT_DIR . '/advanced-cache.php';
    170173
    171174/**
    172175 * Stores the location of the WordPress directory of functions, classes, and core content.
     
    175178 */
    176179define('WPINC', 'wp-includes');
    177180
    178 if ( !defined('LANGDIR') ) {
     181if ( !defined('WP_LANG_DIR') ) {
    179182        /**
    180          * Stores the location of the language directory. First looks for language folder in wp-content
     183         * Stores the location of the language directory. First looks for language folder in WP_CONTENT_DIR
    181184         * and uses that folder if it exists. Or it uses the "languages" folder in WPINC.
    182185         *
    183186         * @since 2.1.0
    184187         */
    185         if ( file_exists(ABSPATH . 'wp-content/languages') && @is_dir(ABSPATH . 'wp-content/languages') )
    186                 define('LANGDIR', 'wp-content/languages'); // no leading slash, no trailing slash
    187         else
    188                 define('LANGDIR', WPINC . '/languages'); // no leading slash, no trailing slash
     188        if ( file_exists(WP_CONTENT_DIR . '/languages') && @is_dir(WP_CONTENT_DIR . '/languages') ) {
     189                define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
     190                if (!defined('LANGDIR')) {
     191                        // Old static relative path maintained for limited backwards compatibility - won't work in some cases
     192                        define('LANGDIR', 'wp-content/languages');
     193                }
     194        } else {
     195                define('WP_LANG_DIR', ABSPATH . WPINC . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
     196                if (!defined('LANGDIR')) {
     197                        // Old relative path maintained for backwards compatibility
     198                        define('LANGDIR', WPINC . '/languages');
     199                }
     200        }
    189201}
    190202
    191 /**
    192  * Allows for the plugins directory to be moved from the default location.
    193  *
    194  * This isn't used everywhere. Constant is not used in plugin_basename()
    195  * which might cause conflicts with changing this.
    196  *
    197  * @since 2.1
    198  */
    199 if ( !defined('PLUGINDIR') )
    200         define('PLUGINDIR', 'wp-content/plugins'); // no leading slash, no trailing slash
    201 
    202203require (ABSPATH . WPINC . '/compat.php');
    203204require (ABSPATH . WPINC . '/functions.php');
    204205require (ABSPATH . WPINC . '/classes.php');
     
    213214if ( is_wp_error($prefix) )
    214215        wp_die('<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.');
    215216
    216 if ( file_exists(ABSPATH . 'wp-content/object-cache.php') )
    217         require_once (ABSPATH . 'wp-content/object-cache.php');
     217if ( file_exists(WP_CONTENT_DIR . '/object-cache.php') )
     218        require_once (WP_CONTENT_DIR . '/object-cache.php');
    218219else
    219220        require_once (ABSPATH . WPINC . '/cache.php');
    220221
     
    272273require (ABSPATH . WPINC . '/shortcodes.php');
    273274require (ABSPATH . WPINC . '/media.php');
    274275
     276if ( !defined('WP_CONTENT_URL') )
     277        define( 'WP_CONTENT_URL', get_option('home') . 'wp-content'); // full url - WP_CONTENT_DIR is defined further up
     278
     279/**
     280 * Allows for the plugins directory to be moved from the default location.
     281 *
     282 * @since 2.6
     283 */
     284if ( !defined('WP_PLUGIN_DIR') )
     285        define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // full path, no trailing slash
     286if ( !defined('WP_PLUGIN_URL') )
     287        define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // full url, no trailing slash
     288if ( !defined('PLUGINDIR') )
     289        define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH.  For back compat.
     290
    275291if ( ! defined('WP_INSTALLING') ) {
    276292        // Used to guarantee unique hash cookies
    277293        $cookiehash = md5(get_option('siteurl'));
     
    357373        $current_plugins = get_option('active_plugins');
    358374        if ( is_array($current_plugins) ) {
    359375                foreach ($current_plugins as $plugin) {
    360                         if ('' != $plugin && file_exists(ABSPATH . PLUGINDIR . '/' . $plugin))
    361                                 include_once(ABSPATH . PLUGINDIR . '/' . $plugin);
     376                        if ('' != $plugin && file_exists(WP_PLUGIN_DIR . '/' . $plugin))
     377                                include_once(WP_PLUGIN_DIR . '/' . $plugin);
    362378                }
    363379        }
    364380}
     
    451467 * @since 1.5.0
    452468 */
    453469$locale = get_locale();
    454 $locale_file = ABSPATH . LANGDIR . "/$locale.php";
     470$locale_file = WP_LANG_DIR . "/$locale.php";
    455471if ( is_readable($locale_file) )
    456472        require_once($locale_file);
    457473
  • wp-admin/menu-header.php

     
    1919        if ( !empty($submenu[$item[2]]) ) {
    2020                $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
    2121                $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
    22                 if ( file_exists(ABSPATH . PLUGINDIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
     22                if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
    2323                        echo "\n\t<li><a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    2424                else
    2525                        echo "\n\t<li><a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    2626        } else if ( current_user_can($item[1]) ) {
    2727                $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
    28                 if ( file_exists(ABSPATH . PLUGINDIR . "/{$item[2]}") || !empty($menu_hook) )
     28                if ( file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || !empty($menu_hook) )
    2929                        echo "\n\t<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";
    3030                else
    3131                        echo "\n\t<li><a href='{$item[2]}'$class>{$item[0]}</a></li>";
     
    4949        if ( !empty($submenu[$item[2]]) ) {
    5050                $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
    5151                $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
    52                 if ( file_exists(ABSPATH . PLUGINDIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
     52                if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
    5353                        echo "\n\t<li><a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    5454                else
    5555                        echo "\n\t<li><a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    5656        } else if ( current_user_can($item[1]) ) {
    5757                $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
    58                 if ( file_exists(ABSPATH . PLUGINDIR . "/{$item[2]}") || !empty($menu_hook) )
     58                if ( file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || !empty($menu_hook) )
    5959                        echo "\n\t<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";
    6060                else
    6161                        echo "\n\t<li><a href='{$item[2]}'$class>{$item[0]}</a></li>";
     
    7474        if ( !empty($submenu[$item[2]]) ) {
    7575                $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
    7676                $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
    77                 if ( file_exists(ABSPATH . PLUGINDIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
     77                if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
    7878                        echo "\n\t<li><a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    7979                else
    8080                        echo "\n\t<li><a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a></li>";
    8181        } else if ( current_user_can($item[1]) ) {
    8282                $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
    83                 if ( file_exists(ABSPATH . PLUGINDIR . "/{$item[2]}") || !empty($menu_hook) )
     83                if ( file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || !empty($menu_hook) )
    8484                        echo "\n\t<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";
    8585                else
    8686                        echo "\n\t<li><a href='{$item[2]}'$class>{$item[0]}</a></li>";
     
    106106        if ( !empty($submenu[$item[2]]) ) {
    107107                $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
    108108                $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
    109                 if ( file_exists(ABSPATH . PLUGINDIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
     109                if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
    110110                        $side_items[] = "\n\t<li><a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
    111111                else
    112112                        $side_items[] = "\n\t<li><a href='{$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
    113113        } else if ( current_user_can($item[1]) ) {
    114114                $menu_hook = get_plugin_page_hook($item[2], 'admin.php');
    115                 if ( file_exists(ABSPATH . PLUGINDIR . "/{$item[2]}") || !empty($menu_hook) )
     115                if ( file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || !empty($menu_hook) )
    116116                        $side_items[] = "\n\t<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a>";
    117117                else
    118118                        $side_items[] = "\n\t<li><a href='{$item[2]}'$class>{$item[0]}</a>";
     
    143143
    144144$menu_hook = get_plugin_page_hook($item[2], $parent_file);
    145145
    146 if (file_exists(ABSPATH . PLUGINDIR . "/{$item[2]}") || ! empty($menu_hook)) {
     146if (file_exists(WP_PLUGIN_DIR . "/{$item[2]}") || ! empty($menu_hook)) {
    147147        if ( 'admin.php' == $pagenow )
    148148                echo "\n\t<li><a href='admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";
    149149        else
  • wp-admin/includes/class-wp-filesystem-ftpsockets.php

     
    8686                $this->permission = $perm;
    8787        }
    8888
    89         function find_base_dir($base = '.',$echo = false, $loop = false) {
     89        function find_base_dir($path = false, $base = '.',$echo = false, $loop = false) {
     90                if (!$path)
     91                        $path = ABSPATH;
     92               
    9093                //Sanitize the Windows path formats, This allows easier conparison and aligns it to FTP output.
    91                 $abspath = str_replace('\\','/',ABSPATH); //windows: Straighten up the paths..
    92                 if( strpos($abspath, ':') ){ //Windows, Strip out the driveletter
    93                         if( preg_match("|.{1}\:(.+)|i", $abspath, $mat) )
    94                                 $abspath = $mat[1];
     94                $path = str_replace('\\','/',$path); //windows: Straighten up the paths..
     95                if( strpos($path, ':') ){ //Windows, Strip out the driveletter
     96                        if( preg_match("|.{1}\:(.+)|i", $path, $mat) )
     97                                $path = $mat[1];
    9598                }
    9699       
    97100                //Set up the base directory (Which unless specified, is the current one)
     
    99102                $base = trailingslashit($base);
    100103
    101104                //Can we see the Current directory as part of the ABSPATH?
    102                 $location = strpos($abspath, $base);
     105                $location = strpos($path, $base);
    103106                if( false !== $location ) {
    104                         $newbase = path_join($base, substr($abspath, $location + strlen($base)));
     107                        $newbase = path_join($base, substr($path, $location + strlen($base)));
    105108
    106109                        if( false !== $this->chdir($newbase) ){ //chdir sometimes returns null under certain circumstances, even when its changed correctly, FALSE will be returned if it doesnt change correctly.
    107110                                if($echo) printf( __('Changing to %s') . '<br/>', $newbase );
     
    118121                //Get a list of the files in the current directory, See if we can locate where we are in the folder stucture.
    119122                $files = $this->dirlist($base);
    120123               
    121                 $arrPath = explode('/', $abspath);
     124                $arrPath = explode('/', $path);
    122125                foreach($arrPath as $key){
    123126                        //Working from /home/ to /user/ to /wordpress/ see if that file exists within the current folder,
    124127                        // If its found, change into it and follow through looking for it.
     
    128131                                //Lets try that folder:
    129132                                $folder = path_join($base, $key);
    130133                                if($echo) printf( __('Changing to %s') . '<br/>', $folder );
    131                                 $ret = $this->find_base_dir( $folder, $echo, $loop);
     134                                $ret = $this->find_base_dir($path, $folder, $echo, $loop);
    132135                                if( $ret )
    133136                                        return $ret;
    134137                        }
     
    141144                if( $loop )
    142145                        return false;//Prevent tihs function looping again.
    143146                //As an extra last resort, Change back to / if the folder wasnt found. This comes into effect when the CWD is /home/user/ but WP is at /var/www/.... mainly dedicated setups.
    144                 return $this->find_base_dir('/', $echo, true);
     147                return $this->find_base_dir($path, '/', $echo, true);
    145148        }
    146149
    147         function get_base_dir($base = '.', $echo = false){
     150        function get_base_dir($path = false, $base = '.', $echo = false){
    148151                if( defined('FTP_BASE') )
    149152                        $this->wp_base = FTP_BASE;
    150153                if( empty($this->wp_base) )
    151                         $this->wp_base = $this->find_base_dir($base, $echo);
     154                        $this->wp_base = $this->find_base_dir($path, $base, $echo);
    152155                return $this->wp_base;
    153156        }
    154157
  • wp-admin/includes/plugin.php

     
    3939        }
    4040
    4141        $wp_plugins = array ();
    42         $plugin_root = ABSPATH . PLUGINDIR;
     42        $plugin_root = WP_PLUGIN_DIR;
    4343        if( !empty($plugin_folder) )
    4444                $plugin_root .= $plugin_folder;
    4545
     
    104104                        if ( !empty($redirect) )
    105105                                wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); // we'll override this later if the plugin can be included without fatal error
    106106                        ob_start();
    107                         @include(ABSPATH . PLUGINDIR . '/' . $plugin);
     107                        @include(WP_PLUGIN_DIR . '/' . $plugin);
    108108                        $current[] = $plugin;
    109109                        sort($current);
    110110                        update_option('active_plugins', $current);
     
    179179        // If a plugin file does not exist, remove it from the list of active
    180180        // plugins.
    181181        foreach ( $check_plugins as $check_plugin ) {
    182                 if ( !file_exists(ABSPATH . PLUGINDIR . '/' . $check_plugin) ) {
     182                if ( !file_exists(WP_PLUGIN_DIR . '/' . $check_plugin) ) {
    183183                        $current = get_option('active_plugins');
    184184                        $key = array_search($check_plugin, $current);
    185185                        if ( false !== $key && NULL !== $key ) {
     
    193193function validate_plugin($plugin) {
    194194        if ( validate_file($plugin) )
    195195                return new WP_Error('plugin_invalid', __('Invalid plugin.'));
    196         if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) )
     196        if ( ! file_exists(WP_PLUGIN_DIR . '/' . $plugin) )
    197197                return new WP_Error('plugin_not_found', __('Plugin file does not exist.'));
    198198
    199199        return 0;
  • wp-admin/includes/schema.php

     
    226226        if ( ini_get('safe_mode') ) {
    227227                // Safe mode screws up mkdir(), so we must use a flat structure.
    228228                add_option('uploads_use_yearmonth_folders', 0);
    229                 add_option('upload_path', 'wp-content');
     229                add_option('upload_path', WP_CONTENT_DIR);
    230230        } else {
    231231                add_option('uploads_use_yearmonth_folders', 1);
    232                 add_option('upload_path', 'wp-content/uploads');
     232                add_option('upload_path', WP_CONTENT_DIR . '/uploads');
    233233        }
    234234
    235235        // 2.0.3
  • wp-admin/includes/file.php

     
    4646        if ( defined('WP_TEMP_DIR') )
    4747                return trailingslashit(WP_TEMP_DIR);
    4848
    49         $temp = ABSPATH . 'wp-content/';
     49        $temp = WP_CONTENT_DIR . '/';
    5050        if ( is_dir($temp) && is_writable($temp) )
    5151                return $temp;
    5252
  • wp-admin/includes/update.php

     
    159159        if ( $wp_filesystem->errors->get_error_code() )
    160160                return new WP_Error('fs_error', __('Filesystem error'), $wp_filesystem->errors);
    161161
    162         //Get the Base folder
    163         $base = $wp_filesystem->get_base_dir();
     162        //Get the base plugin folder
     163        $base = $wp_filesystem->get_base_dir(WP_PLUGIN_DIR);
    164164       
    165165        if ( empty($base) )
    166166                return new WP_Error('fs_nowordpress', __('Unable to locate WordPress directory.'));
     
    179179        if ( is_wp_error($file) )
    180180                return new WP_Error('download_failed', __('Download failed.'), $file->get_error_message());
    181181
    182         $working_dir = $base . 'wp-content/upgrade/' . basename($plugin, '.php');
     182        $working_dir = $wp_filesystem->get_base_dir(WP_CONTENT_DIR) . '/upgrade/' . basename($plugin, '.php');
    183183
    184184        // Clean up working directory
    185185        if ( $wp_filesystem->is_dir($working_dir) )
     
    205205
    206206        // Remove the existing plugin.
    207207        apply_filters('update_feedback', __('Removing the old version of the plugin'));
    208         $plugin_dir = dirname($base . PLUGINDIR . "/$plugin");
     208        $plugin_dir = dirname($base . "/$plugin");
    209209        $plugin_dir = trailingslashit($plugin_dir);
    210210       
    211211        // If plugin is in its own directory, recursively delete the directory.
    212         if ( strpos($plugin, '/') && $plugin_dir != $base . PLUGINDIR . '/' ) //base check on if plugin includes directory seperator AND that its not the root plugin folder
     212        if ( strpos($plugin, '/') && $plugin_dir != $base . '/' ) //base check on if plugin includes directory seperator AND that its not the root plugin folder
    213213                $deleted = $wp_filesystem->delete($plugin_dir, true);
    214214        else
    215                 $deleted = $wp_filesystem->delete($base . PLUGINDIR . "/$plugin");
     215                $deleted = $wp_filesystem->delete($base . '/' . $plugin);
    216216
    217217        if ( !$deleted ) {
    218218                $wp_filesystem->delete($working_dir, true);
     
    221221
    222222        apply_filters('update_feedback', __('Installing the latest version'));
    223223        // Copy new version of plugin into place.
    224         if ( !copy_dir($working_dir, $base . PLUGINDIR) ) {
     224        if ( !copy_dir($working_dir, $base) ) {
    225225                //$wp_filesystem->delete($working_dir, true); //TODO: Uncomment? This DOES mean that the new files are available in the upgrade folder if it fails.
    226226                return new WP_Error('install_failed', __('Installation failed'));
    227227        }
  • wp-admin/includes/class-wp-filesystem-ftpext.php

     
    8484                $this->permission = $perm;
    8585        }
    8686
    87         function find_base_dir($base = '.',$echo = false, $loop = false) {
     87        function find_base_dir($path = false, $base = '.',$echo = false, $loop = false) {
     88                if (!$path)
     89                        $path = ABSPATH;
     90               
    8891                //Sanitize the Windows path formats, This allows easier conparison and aligns it to FTP output.
    89                 $abspath = str_replace('\\','/',ABSPATH); //windows: Straighten up the paths..
    90                 if( strpos($abspath, ':') ){ //Windows, Strip out the driveletter
    91                         if( preg_match("|.{1}\:(.+)|i", $abspath, $mat) )
    92                                 $abspath = $mat[1];
     92                $path = str_replace('\\','/',$path); //windows: Straighten up the paths..
     93                if( strpos($path, ':') ){ //Windows, Strip out the driveletter
     94                        if( preg_match("|.{1}\:(.+)|i", $path, $mat) )
     95                                $path = $mat[1];
    9396                }
    9497       
    9598                //Set up the base directory (Which unless specified, is the current one)
     
    97100                $base = trailingslashit($base);
    98101
    99102                //Can we see the Current directory as part of the ABSPATH?
    100                 $location = strpos($abspath, $base);
     103                $location = strpos($path, $base);
    101104                if( false !== $location ) {
    102                         $newbase = path_join($base, substr($abspath, $location + strlen($base)));
     105                        $newbase = path_join($base, substr($path, $location + strlen($base)));
    103106
    104107                        if( false !== $this->chdir($newbase) ){ //chdir sometimes returns null under certain circumstances, even when its changed correctly, FALSE will be returned if it doesnt change correctly.
    105108                                if($echo) printf( __('Changing to %s') . '<br/>', $newbase );
     
    116119                //Get a list of the files in the current directory, See if we can locate where we are in the folder stucture.
    117120                $files = $this->dirlist($base);
    118121               
    119                 $arrPath = explode('/', $abspath);
     122                $arrPath = explode('/', $path);
    120123                foreach($arrPath as $key){
    121124                        //Working from /home/ to /user/ to /wordpress/ see if that file exists within the current folder,
    122125                        // If its found, change into it and follow through looking for it.
     
    126129                                //Lets try that folder:
    127130                                $folder = path_join($base, $key);
    128131                                if($echo) printf( __('Changing to %s') . '<br/>', $folder );
    129                                 $ret = $this->find_base_dir( $folder, $echo, $loop);
     132                                $ret = $this->find_base_dir( $path, $folder, $echo, $loop);
    130133                                if( $ret )
    131134                                        return $ret;
    132135                        }
     
    139142                if( $loop )
    140143                        return false;//Prevent tihs function looping again.
    141144                //As an extra last resort, Change back to / if the folder wasnt found. This comes into effect when the CWD is /home/user/ but WP is at /var/www/.... mainly dedicated setups.
    142                 return $this->find_base_dir('/', $echo, true);
     145                return $this->find_base_dir($path, '/', $echo, true);
    143146        }
    144147
    145         function get_base_dir($base = '.', $echo = false){
     148        function get_base_dir($path = false, $base = '.', $echo = false){
    146149                if( defined('FTP_BASE') )
    147150                        $this->wp_base = FTP_BASE;
    148151                if( empty($this->wp_base) )
    149                         $this->wp_base = $this->find_base_dir($base,$echo);
     152                        $this->wp_base = $this->find_base_dir($path, $base, $echo);
    150153                return $this->wp_base;
    151154        }
    152155        function get_contents($file,$type='',$resumepos=0){
  • wp-admin/includes/class-wp-filesystem-direct.php

     
    1313        function setDefaultPermissions($perm){
    1414                $this->permission = $perm;
    1515        }
    16         function find_base_dir($base = '.', $echo = false){
    17                 return str_replace('\\','/',ABSPATH);
     16        function find_base_dir($path = false, $base = '.', $echo = false){
     17                if (!$path)
     18                        $path = ABSPATH;
     19                return str_replace('\\','/',$path);
    1820        }
    19         function get_base_dir($base = '.', $echo = false){
     21        function get_base_dir($path = false, $base = '.', $echo = false){
    2022                return $this->find_base_dir($base, $echo);
    2123        }
    2224        function get_contents($file){
  • wp-admin/includes/upgrade.php

     
    11<?php
    22
    3 if ( file_exists(ABSPATH . 'wp-content/install.php') )
    4         require (ABSPATH . 'wp-content/install.php');
     3if ( file_exists(WP_CONTENT_DIR . '/install.php') )
     4        require (WP_CONTENT_DIR . '/install.php');
    55require_once(ABSPATH . 'wp-admin/includes/admin.php');
    66require_once(ABSPATH . 'wp-admin/includes/schema.php');
    77
     
    10861086
    10871087function make_site_theme_from_oldschool($theme_name, $template) {
    10881088        $home_path = get_home_path();
    1089         $site_dir = ABSPATH . "wp-content/themes/$template";
     1089        $site_dir = WP_CONTENT_DIR . "/themes/$template";
    10901090
    10911091        if (! file_exists("$home_path/index.php"))
    10921092                return false;
     
    11051105                if ($oldfile == 'index.php') { // Check to make sure it's not a new index
    11061106                        $index = implode('', file("$oldpath/$oldfile"));
    11071107                        if (strpos($index, 'WP_USE_THEMES') !== false) {
    1108                                 if (! @copy(ABSPATH . 'wp-content/themes/default/index.php', "$site_dir/$newfile"))
     1108                                if (! @copy(WP_CONTENT_DIR . '/themes/default/index.php', "$site_dir/$newfile"))
    11091109                                        return false;
    11101110                                continue; // Don't copy anything
    11111111                                }
     
    11531153}
    11541154
    11551155function make_site_theme_from_default($theme_name, $template) {
    1156         $site_dir = ABSPATH . "wp-content/themes/$template";
    1157         $default_dir = ABSPATH . 'wp-content/themes/default';
     1156        $site_dir = WP_CONTENT_DIR . "/themes/$template";
     1157        $default_dir = WP_CONTENT_DIR . '/themes/default';
    11581158
    11591159        // Copy files from the default theme to the site theme.
    11601160        //$files = array('index.php', 'comments.php', 'comments-popup.php', 'footer.php', 'header.php', 'sidebar.php', 'style.css');
     
    12111211        // Name the theme after the blog.
    12121212        $theme_name = __get_option('blogname');
    12131213        $template = sanitize_title($theme_name);
    1214         $site_dir = ABSPATH . "wp-content/themes/$template";
     1214        $site_dir = WP_CONTENT_DIR . "/themes/$template";
    12151215
    12161216        // If the theme already exists, nothing to do.
    12171217        if ( is_dir($site_dir)) {
     
    12191219        }
    12201220
    12211221        // We must be able to write to the themes dir.
    1222         if (! is_writable(ABSPATH . "wp-content/themes")) {
     1222        if (! is_writable(WP_CONTENT_DIR . "/themes")) {
    12231223                return false;
    12241224        }
    12251225
  • wp-admin/update.php

     
    117117        if ( is_wp_error($result) ) {
    118118                show_message($result);
    119119        } else {
    120                 //Result is the new plugin file relative to PLUGINDIR
     120                //Result is the new plugin file relative to WP_PLUGIN_DIR
    121121                show_message(__('Plugin upgraded successfully'));       
    122122                if( $result && $was_activated ){
    123123                        show_message(__('Attempting reactivation of the plugin'));
     
    164164                        echo '<p>' . __('Plugin failed to reactivate due to a fatal error.') . '</p>';
    165165                        error_reporting( E_ALL ^ E_NOTICE );
    166166                        @ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
    167                         include(ABSPATH . PLUGINDIR . '/' . $plugin);
     167                        include(WP_PLUGIN_DIR . '/' . $plugin);
    168168                }
    169169                echo "</body></html>";
    170170        }
  • wp-admin/admin.php

     
    5858                        wp_die(__('Invalid plugin page'));
    5959                }
    6060
    61                 if (! ( file_exists(ABSPATH . PLUGINDIR . "/$plugin_page") && is_file( ABSPATH . PLUGINDIR . "/$plugin_page") ) )
     61                if (! ( file_exists(WP_PLUGIN_DIR . "/$plugin_page") && is_file(WP_PLUGIN_DIR . "/$plugin_page") ) )
    6262                        wp_die(sprintf(__('Cannot load %s.'), htmlentities($plugin_page)));
    6363
    6464                do_action('load-' . $plugin_page);
     
    6666                if (! isset($_GET['noheader']))
    6767                        require_once(ABSPATH . 'wp-admin/admin-header.php');
    6868
    69                 include(ABSPATH . PLUGINDIR . "/$plugin_page");
     69                include(WP_PLUGIN_DIR . "/$plugin_page");
    7070        }
    7171
    7272        include(ABSPATH . 'wp-admin/admin-footer.php');
  • wp-admin/import/mt.php

     
    179179
    180180        function select_authors() {
    181181                if ( $_POST['upload_type'] === 'ftp' ) {
    182                         $file['file'] = ABSPATH . 'wp-content/mt-export.txt';
     182                        $file['file'] = WP_CONTENT_DIR . '/mt-export.txt';
    183183                        if ( !file_exists($file['file']) )
    184184                                $file['error'] = __('<code>mt-export.txt</code> does not exist');
    185185                } else {
     
    426426        function import() {
    427427                $this->id = (int) $_GET['id'];
    428428                if ( $this->id == 0 )
    429                         $this->file = ABSPATH . 'wp-content/mt-export.txt';
     429                        $this->file = WP_CONTENT_DIR . '/mt-export.txt';
    430430                else
    431431                        $this->file = get_attached_file($this->id);
    432432                $this->get_authors_from_post();
  • wp-admin/plugins.php

     
    1818                        wp_die($valid);
    1919                error_reporting( E_ALL ^ E_NOTICE );
    2020                @ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
    21                 include(ABSPATH . PLUGINDIR . '/' . $plugin);
     21                include(WP_PLUGIN_DIR . '/' . $plugin);
    2222        } elseif ( 'deactivate' == $_GET['action'] ) {
    2323                check_admin_referer('deactivate-plugin_' . $_GET['plugin']);
    2424                deactivate_plugins($_GET['plugin']);
     
    123123                } else {
    124124                        $action_links[] = "<a href='" . wp_nonce_url("plugins.php?action=activate&amp;plugin=$plugin_file", 'activate-plugin_' . $plugin_file) . "' title='".__('Activate this plugin')."' class='edit'>".__('Activate')."</a>";
    125125                }
    126                 if ( current_user_can('edit_plugins') && is_writable(ABSPATH . PLUGINDIR . '/' . $plugin_file) )
     126                if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )
    127127                        $action_links[] = "<a href='plugin-editor.php?file=$plugin_file' title='".__('Open this file in the Plugin Editor')."' class='edit'>".__('Edit')."</a>";
    128128
    129129                $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array());
     
    166166}
    167167?>
    168168
    169 <p><?php printf(__('If something goes wrong with a plugin and you can&#8217;t use WordPress, delete or rename that file in the <code>%s</code> directory and it will be automatically deactivated.'), PLUGINDIR); ?></p>
     169<p><?php printf(__('If something goes wrong with a plugin and you can&#8217;t use WordPress, delete or rename that file in the <code>%s</code> directory and it will be automatically deactivated.'), WP_PLUGIN_DIR); ?></p>
    170170
    171171<h2><?php _e('Get More Plugins'); ?></h2>
    172172<p><?php _e('You can find additional plugins for your site in the <a href="http://wordpress.org/extend/plugins/">WordPress plugin directory</a>.'); ?></p>
    173 <p><?php printf(__('To install a plugin you generally just need to upload the plugin file into your <code>%s</code> directory. Once a plugin is uploaded, you may activate it here.'), PLUGINDIR); ?></p>
     173<p><?php printf(__('To install a plugin you generally just need to upload the plugin file into your <code>%s</code> directory. Once a plugin is uploaded, you may activate it here.'), WP_PLUGIN_DIR); ?></p>
    174174
    175175</div>
    176176
  • wp-admin/plugin-editor.php

     
    1515        $file = $plugin_files[0];
    1616
    1717$file = validate_file_to_edit($file, $plugin_files);
    18 $real_file = get_real_file_to_edit( PLUGINDIR . "/$file");
     18$real_file = WP_PLUGIN_DIR . '/' . $file;
    1919
    2020switch($action) {
    2121
     
    6868
    6969        require_once('admin-header.php');
    7070
    71         update_recently_edited(PLUGINDIR . "/$file");
     71        update_recently_edited(WP_PLUGIN_DIR . '/' . $file);
    7272
    7373        if ( ! is_file($real_file) )
    7474                $error = 1;