diff --git a/cron.php b/cron.php index 063b1feefd3dda0b1318834a1334523540ac83a8..553830d88e2f8cdd8f1611034b5d96ac52f85015 100644 --- a/cron.php +++ b/cron.php @@ -6,7 +6,12 @@ * Handles incoming requests to fire off regularly-scheduled tasks (cron jobs). */ -include_once './includes/bootstrap.inc'; +/** + * Root directory of Drupal installation. + */ +define('DRUPAL_ROOT', dirname(realpath(__FILE__))); + +include_once DRUPAL_ROOT . '/includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); if (isset($_GET['cron_key']) && variable_get('cron_key', 'drupal') == $_GET['cron_key']) { drupal_cron_run(); diff --git a/includes/batch.inc b/includes/batch.inc index c4f481a056e9ff370b7c5b5c98b5ec1188810063..611875154c14dbdb9508f4ec23261eee7b62d35a 100644 --- a/includes/batch.inc +++ b/includes/batch.inc @@ -183,7 +183,7 @@ function _batch_process() { // request, we check if it requires an additional file for functions // definitions. if ($set_changed && isset($current_set['file']) && is_file($current_set['file'])) { - include_once($current_set['file']); + include_once DRUPAL_ROOT . '/' . $current_set['file']; } $task_message = ''; @@ -304,7 +304,7 @@ function _batch_finished() { if (isset($batch_set['finished'])) { // Check if the set requires an additional file for functions definitions. if (isset($batch_set['file']) && is_file($batch_set['file'])) { - include_once($batch_set['file']); + include_once DRUPAL_ROOT . '/' . $batch_set['file']; } if (function_exists($batch_set['finished'])) { $batch_set['finished']($batch_set['success'], $batch_set['results'], $batch_set['operations']); diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc index fd27b84a8e57db78f23a5c6baaf17ed3f9b1b9ad..d21508fbe916e15336c4388e8e10779b8f18c9d5 100644 --- a/includes/bootstrap.inc +++ b/includes/bootstrap.inc @@ -329,8 +329,8 @@ function conf_init() { global $databases, $db_prefix, $cookie_domain, $conf, $installed_profile, $update_free_access; $conf = array(); - if (file_exists('./' . conf_path() . '/settings.php')) { - include_once './' . conf_path() . '/settings.php'; + if (file_exists(DRUPAL_ROOT . '/' . conf_path() . '/settings.php')) { + include_once DRUPAL_ROOT . '/' . conf_path() . '/settings.php'; } if (isset($base_url)) { @@ -602,7 +602,7 @@ function drupal_load($type, $name) { $filename = drupal_get_filename($type, $name); if ($filename) { - include_once "./$filename"; + include_once DRUPAL_ROOT . '/' . $filename; $files[$type][$name] = TRUE; return TRUE; @@ -1006,7 +1006,7 @@ function _drupal_bootstrap($phase) { case DRUPAL_BOOTSTRAP_EARLY_PAGE_CACHE: // Allow specifying special cache handlers in settings.php, like // using memcached or files for storing cache information. - require_once variable_get('cache_inc', './includes/cache.inc'); + require_once DRUPAL_ROOT . '/' . variable_get('cache_inc', 'includes/cache.inc'); // If the page_cache_fastpath is set to TRUE in settings.php and // page_cache_fastpath (implemented in the special implementation of // cache.inc) printed the page and indicated this with a returned TRUE @@ -1019,7 +1019,7 @@ function _drupal_bootstrap($phase) { case DRUPAL_BOOTSTRAP_DATABASE: // Initialize the database system. Note that the connection // won't be initialized until it is actually requested. - require_once './includes/database/database.inc'; + require_once DRUPAL_ROOT . '/includes/database/database.inc'; // Register autoload functions so that we can access classes and interfaces. spl_autoload_register('drupal_autoload_class'); spl_autoload_register('drupal_autoload_interface'); @@ -1035,7 +1035,7 @@ function _drupal_bootstrap($phase) { break; case DRUPAL_BOOTSTRAP_SESSION: - require_once variable_get('session_inc', './includes/session.inc'); + require_once DRUPAL_ROOT . '/' . variable_get('session_inc', 'includes/session.inc'); session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy_sid', '_sess_gc'); session_start(); break; @@ -1044,7 +1044,7 @@ function _drupal_bootstrap($phase) { // Initialize configuration variables, using values from settings.php if available. $conf = variable_init(isset($conf) ? $conf : array()); // Load module handling. - require_once './includes/module.inc'; + require_once DRUPAL_ROOT . '/includes/module.inc'; $cache_mode = variable_get('cache', CACHE_DISABLED); // Get the page from the cache. $cache = $cache_mode == CACHE_DISABLED ? '' : page_get_cache(); @@ -1071,13 +1071,13 @@ function _drupal_bootstrap($phase) { break; case DRUPAL_BOOTSTRAP_PATH: - require_once './includes/path.inc'; + require_once DRUPAL_ROOT . '/includes/path.inc'; // Initialize $_GET['q'] prior to loading modules and invoking hook_init(). drupal_init_path(); break; case DRUPAL_BOOTSTRAP_FULL: - require_once './includes/common.inc'; + require_once DRUPAL_ROOT . '/includes/common.inc'; _drupal_bootstrap_full(); break; } @@ -1092,7 +1092,7 @@ function _drupal_bootstrap($phase) { * @see _drupal_maintenance_theme() */ function drupal_maintenance_theme() { - require_once './includes/theme.maintenance.inc'; + require_once DRUPAL_ROOT . '/includes/theme.maintenance.inc'; _drupal_maintenance_theme(); } @@ -1120,7 +1120,7 @@ function drupal_init_language() { $language = language_default(); } else { - include_once './includes/language.inc'; + include_once DRUPAL_ROOT . '/includes/language.inc'; $language = language_initialize(); } } @@ -1270,7 +1270,7 @@ function drupal_get_schema($table = NULL, $rebuild = FALSE) { // Invoke hook_schema for all modules. foreach (module_implements('schema') as $module) { $current = module_invoke($module, 'schema'); - require_once('./includes/common.inc'); + require_once DRUPAL_ROOT . '/includes/common.inc'; if (drupal_function_exists('_drupal_initialize_schema')) { _drupal_initialize_schema($module, $current); } @@ -1342,7 +1342,7 @@ function drupal_function_exists($function) { $file = db_result(db_query("SELECT filename FROM {registry} WHERE name = :name AND type = :type", array(':name' => $function, ':type' => 'function'))); if ($file) { - require_once($file); + require_once DRUPAL_ROOT . '/' . $file; $checked[$function] = function_exists($function); if ($checked[$function]) { registry_mark_code('function', $function); @@ -1390,7 +1390,7 @@ function drupal_autoload_class($class) { function _registry_check_code($type, $name) { $file = db_result(db_query("SELECT filename FROM {registry} WHERE name = :name AND type = :type", array(':name' => $name, ':type' => $type))); if ($file) { - require_once($file); + require_once DRUPAL_ROOT . '/' . $file; registry_mark_code($type, $name); return TRUE; } @@ -1430,7 +1430,7 @@ function registry_mark_code($type, $name, $return = FALSE) { * each function, file, and hook implementation in the database. */ function registry_rebuild() { - require_once './includes/registry.inc'; + require_once DRUPAL_ROOT . '/includes/registry.inc'; _registry_rebuild(); } @@ -1501,7 +1501,7 @@ function registry_load_path_files($return = FALSE) { $cache = cache_get('registry:' . $menu['path'], 'cache_registry'); if (!empty($cache->data)) { foreach(explode(';', $cache->data) as $file) { - require_once($file); + require_once DRUPAL_ROOT . '/' . $file; $file_cache_data[] = $file; } } diff --git a/includes/common.inc b/includes/common.inc index 50be5bb718119f3606138d2cecf1538b95580d18..42cc5b7e24345231ffb668f64b99841418ed4fa3 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -2491,7 +2491,7 @@ function drupal_valid_token($token, $value = '', $skip_anonymous = FALSE) { * failed. See xmlrpc_error(). */ function xmlrpc($url) { - require_once './includes/xmlrpc.inc'; + require_once DRUPAL_ROOT . '/includes/xmlrpc.inc'; $args = func_get_args(); return call_user_func_array('_xmlrpc', $args); } @@ -2503,16 +2503,16 @@ function _drupal_bootstrap_full() { return; } $called = 1; - require_once './includes/theme.inc'; - require_once './includes/pager.inc'; - require_once './includes/menu.inc'; - require_once './includes/tablesort.inc'; - require_once './includes/file.inc'; - require_once './includes/unicode.inc'; - require_once './includes/image.inc'; - require_once './includes/form.inc'; - require_once './includes/mail.inc'; - require_once './includes/actions.inc'; + require_once DRUPAL_ROOT . '/includes/theme.inc'; + require_once DRUPAL_ROOT . '/includes/pager.inc'; + require_once DRUPAL_ROOT . '/includes/menu.inc'; + require_once DRUPAL_ROOT . '/includes/tablesort.inc'; + require_once DRUPAL_ROOT . '/includes/file.inc'; + require_once DRUPAL_ROOT . '/includes/unicode.inc'; + require_once DRUPAL_ROOT . '/includes/image.inc'; + require_once DRUPAL_ROOT . '/includes/form.inc'; + require_once DRUPAL_ROOT . '/includes/mail.inc'; + require_once DRUPAL_ROOT . '/includes/actions.inc'; // Set the Drupal custom error handler. set_error_handler('drupal_error_handler'); // Emit the correct charset HTTP header. diff --git a/includes/database/database.inc b/includes/database/database.inc index 0369b34b05bd917e8697fdcaee3bd2f89dddd3da..49402d02bb693a721a94a41885eeefaa22156db1 100644 --- a/includes/database/database.inc +++ b/includes/database/database.inc @@ -825,8 +825,7 @@ final protected static function openConnection($key, $target) { // We cannot rely on the registry yet, because the registry requires // an open database connection. $driver_class = 'DatabaseConnection_' . $driver; - $driver_file = './includes/database/' . $driver . '/database.inc'; - require_once($driver_file); + require_once DRUPAL_ROOT . '/includes/database/' . $driver . '/database.inc'; self::$connections[$key][$target] = new $driver_class(self::$databaseInfo[$key][$target]); // We need to pass around the simpletest database prefix in the request @@ -1809,7 +1808,7 @@ function db_result(DatabaseStatement $statement) { function _db_need_install() { if (!function_exists('install_goto')) { - include_once 'includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; install_goto('install.php'); } } diff --git a/includes/form.inc b/includes/form.inc index 3c64b0dc4e5225434c6a44223f51e5f600f63ea6..bd7cb7ba68e44be93cc6512242794211eca04aea 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -2504,7 +2504,7 @@ function batch_process($redirect = NULL, $url = NULL) { else { // Non-progressive execution: bypass the whole progressbar workflow // and execute the batch in one pass. - require_once './includes/batch.inc'; + require_once DRUPAL_ROOT . '/includes/batch.inc'; _batch_process(); } } diff --git a/includes/install.inc b/includes/install.inc index 3bf434ebd0f4c76a9d8ec5e6d7bc77a65160ca0a..047701480b3105c1dc442f2a3cb18f1c2ffb126d 100644 --- a/includes/install.inc +++ b/includes/install.inc @@ -211,8 +211,8 @@ function drupal_detect_database_types() { // without modifying the installer. // Because we have no registry yet, we need to also include the install.inc // file for the driver explicitly. - foreach (glob('./includes/database/*/{install,database}.inc', GLOB_BRACE) as $file) { - include_once($file); + foreach (glob(DRUPAL_ROOT . '/includes/database/*/{install,database}.inc', GLOB_BRACE) as $file) { + include_once $file; $dir_parts = explode('/', $file, -1); $drivers[end($dir_parts)] = $file; } @@ -330,8 +330,8 @@ protected function runTestQuery($query, $success, $message, $fatal = FALSE) { * An array of settings that need to be updated. */ function drupal_rewrite_settings($settings = array(), $prefix = '') { - $default_settings = './sites/default/default.settings.php'; - $settings_file = './' . conf_path(FALSE, TRUE) . '/' . $prefix . 'settings.php'; + $default_settings = 'sites/default/default.settings.php'; + $settings_file = conf_path(FALSE, TRUE) . '/' . $prefix . 'settings.php'; // Build list of setting names and insert the values into the global namespace. $keys = array(); @@ -342,7 +342,7 @@ function drupal_rewrite_settings($settings = array(), $prefix = '') { $buffer = NULL; $first = TRUE; - if ($fp = fopen($default_settings, 'r')) { + if ($fp = fopen(DRUPAL_ROOT . '/' . $default_settings, 'r')) { // Step line by line through settings.php. while (!feof($fp)) { $line = fgets($fp); @@ -390,7 +390,7 @@ function drupal_rewrite_settings($settings = array(), $prefix = '') { } } - $fp = fopen($settings_file, 'w'); + $fp = fopen(DRUPAL_ROOT . '/' . $settings_file, 'w'); if ($fp && fwrite($fp, $buffer) === FALSE) { drupal_set_message(st('Failed to modify %settings, please verify the file permissions.', array('%settings' => $settings_file)), 'error'); } @@ -425,16 +425,16 @@ function drupal_get_install_files($module_list = array()) { * The list of modules to install. */ function drupal_verify_profile($profile, $locale) { - include_once './includes/file.inc'; - include_once './includes/common.inc'; + include_once DRUPAL_ROOT . '/includes/file.inc'; + include_once DRUPAL_ROOT . '/includes/common.inc'; - $profile_file = "./profiles/$profile/$profile.profile"; + $profile_file = DRUPAL_ROOT . "/profiles/$profile/$profile.profile"; if (!isset($profile) || !file_exists($profile_file)) { install_no_profile_error(); } - require_once($profile_file); + require_once $profile_file; // Get a list of modules required by this profile. $function = $profile . '_profile_modules'; @@ -521,11 +521,11 @@ function drupal_install_init_database() { if (!$included) { $connection_info = Database::getConnectionInfo(); $driver = $connection_info['default']['driver']; - require_once('./includes/database/query.inc'); - require_once('./includes/database/select.inc'); - require_once('./includes/database/schema.inc'); - foreach (glob('./includes/database/' . $driver . '/*.inc') as $include_file) { - require_once($include_file); + require_once DRUPAL_ROOT . '/includes/database/query.inc'; + require_once DRUPAL_ROOT . '/includes/database/select.inc'; + require_once DRUPAL_ROOT . '/includes/database/schema.inc'; + foreach (glob(DRUPAL_ROOT . '/includes/database/' . $driver . '/*.inc') as $include_file) { + require_once $include_file; } } } @@ -538,7 +538,7 @@ function drupal_install_init_database() { */ function drupal_install_system() { $system_path = dirname(drupal_get_filename('module', 'system', NULL)); - require_once './' . $system_path . '/system.install'; + require_once DRUPAL_ROOT . '/' . $system_path . '/system.install'; drupal_install_init_database(); module_invoke('system', 'install'); @@ -818,16 +818,16 @@ function st($string, $args = array()) { if (!isset($locale_strings)) { $locale_strings = array(); - $filename = './profiles/' . $profile . '/translations/' . $install_locale . '.po'; - if (file_exists($filename)) { - require_once './includes/locale.inc'; + $filename = 'profiles/' . $profile . '/translations/' . $install_locale . '.po'; + if (file_exists(DRUPAL_ROOT . '/' . $filename)) { + require_once DRUPAL_ROOT . '/includes/locale.inc'; $file = (object) array('filepath' => $filename); _locale_import_read_po('mem-store', $file); $locale_strings = _locale_import_one_string('mem-report'); } } - require_once './includes/theme.inc'; + require_once DRUPAL_ROOT . '/includes/theme.inc'; // Transform arguments before inserting them foreach ($args as $key => $value) { switch ($key[0]) { @@ -856,15 +856,15 @@ function st($string, $args = array()) { * Array of the install profile's requirements. */ function drupal_check_profile($profile) { - include_once './includes/file.inc'; + include_once DRUPAL_ROOT . '/includes/file.inc'; - $profile_file = "./profiles/$profile/$profile.profile"; + $profile_file = DRUPAL_ROOT . "/profiles/$profile/$profile.profile"; if (!isset($profile) || !file_exists($profile_file)) { install_no_profile_error(); } - require_once($profile_file); + require_once $profile_file; // Get a list of modules required by this profile. $function = $profile . '_profile_modules'; @@ -876,7 +876,7 @@ function drupal_check_profile($profile) { // Collect requirement testing results $requirements = array(); foreach ($installs as $install) { - require_once $install->filename; + require_once DRUPAL_ROOT . '/' . $install->filename; $function = $install->name. '_requirements'; if (function_exists($function)) { $requirements = array_merge($requirements, $function('install')); @@ -916,7 +916,7 @@ function drupal_check_module($module) { // Include install file $install = drupal_get_install_files(array($module)); if (isset($install[$module])) { - require_once $install[$module]->filename; + require_once DRUPAL_ROOT . '/' . $install[$module]->filename; // Check requirements $requirements = module_invoke($module, 'requirements', 'install'); diff --git a/includes/locale.inc b/includes/locale.inc index b06390265aa999c3c9f1a226863ab44ee887aad8..5d1c9e352e93081c1a83074b2fcaa9235f207703 100644 --- a/includes/locale.inc +++ b/includes/locale.inc @@ -1040,7 +1040,7 @@ function _locale_import_po($file, $langcode, $mode, $group = NULL) { */ function _locale_import_read_po($op, $file, $mode = NULL, $lang = NULL, $group = 'default') { - $fd = fopen($file->filepath, "rb"); // File will get closed by PHP on return + $fd = fopen(DRUPAL_ROOT . '/' . $file->filepath, "rb"); // File will get closed by PHP on return if (!$fd) { _locale_import_message('The translation import failed, because the file %filename could not be read.', $file); return FALSE; @@ -2543,7 +2543,7 @@ function _locale_batch_build($files, $finished = NULL, $components = array()) { 'title' => $t('Importing interface translations'), 'init_message' => $t('Starting import'), 'error_message' => $t('Error importing interface translations'), - 'file' => './includes/locale.inc', + 'file' => 'includes/locale.inc', // This is not a batch API construct, but data passed along to the // installer, so we know what did we import already. '#components' => $components, diff --git a/includes/mail.inc b/includes/mail.inc index a7db9a28719807dec3b067e3d71a254ea09771f2..e4b1cb5056e9100f6d4127a0dbabee5081b49ca6 100644 --- a/includes/mail.inc +++ b/includes/mail.inc @@ -173,7 +173,7 @@ function drupal_mail($module, $key, $to, $language, $params = array(), $from = N function drupal_mail_send($message) { // Allow for a custom mail backend. if (variable_get('smtp_library', '') && file_exists(variable_get('smtp_library', ''))) { - include_once './' . variable_get('smtp_library', ''); + include_once DRUPAL_ROOT . '/' . variable_get('smtp_library', ''); return drupal_mail_wrapper($message); } else { diff --git a/includes/menu.inc b/includes/menu.inc index 95ec71e595067d82be699314762ecb824bfa9627..d5e45a0c51e279ce3ed040769731806db94bebb3 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -2472,7 +2472,7 @@ function _menu_site_is_offline() { return $_GET['q'] != 'user' && $_GET['q'] != 'user/login'; } // Logged in users are unprivileged here, so they are logged out. - require_once drupal_get_path('module', 'user') . '/user.pages.inc'; + require_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'user') . '/user.pages.inc'; user_logout(); } } diff --git a/includes/module.inc b/includes/module.inc index 2a131d81faef9f3e2be2fd45a213188e2c0ca8b2..779d647f7353b791eb9f8eb4b3caf06327dee002 100644 --- a/includes/module.inc +++ b/includes/module.inc @@ -220,7 +220,7 @@ function module_exists($module) { */ function module_load_install($module) { // Make sure the installation API is available - include_once './includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; module_load_include('install', $module); } @@ -241,16 +241,13 @@ function module_load_include($type, $module, $name = NULL) { } if (drupal_function_exists('drupal_get_path')) { - $file = './' . drupal_get_path('module', $module) . "/$name.$type"; - } - - if (is_file($file)) { - require_once $file; - return $file; - } - else { - return FALSE; + $file = DRUPAL_ROOT . '/' . drupal_get_path('module', $module) . "/$name.$type"; + if (is_file($file)) { + require_once $file; + return $file; + } } + return FALSE; } /** diff --git a/includes/registry.inc b/includes/registry.inc index e306c8487b55f097b57ede6139bb89e22ed01cb7..2f58f36deeaa6940619ea05c0ddb2a83bd35d6ce 100644 --- a/includes/registry.inc +++ b/includes/registry.inc @@ -33,9 +33,9 @@ function _registry_rebuild() { // registry rebuild process runs. $connection_info = Database::getConnectionInfo(); $driver = $connection_info['default']['driver']; - require_once('./includes/database/query.inc'); - require_once('./includes/database/select.inc'); - require_once('./includes/database/' . $driver . '/query.inc'); + require_once DRUPAL_ROOT . '/includes/database/query.inc'; + require_once DRUPAL_ROOT . '/includes/database/select.inc'; + require_once DRUPAL_ROOT . '/includes/database/' . $driver . '/query.inc'; // Reset the resources cache. _registry_get_resource_name(); @@ -45,12 +45,12 @@ function _registry_rebuild() { if ($module->status) { $dir = dirname($module->filename); foreach ($module->info['files'] as $file) { - $files["./$dir/$file"] = array(); + $files["$dir/$file"] = array(); } } } foreach (file_scan_directory('includes', '/\.inc$/') as $filename => $file) { - $files["./$filename"] = array(); + $files["$filename"] = array(); } foreach (registry_get_parsed_files() as $filename => $file) { diff --git a/includes/theme.inc b/includes/theme.inc index 2ad9f2e6e5b9a8d0f37368f075d4631966ff1634..3b76c070c73462a3fd0bd26330a52fb9df1faef8 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -166,7 +166,7 @@ function _init_theme($theme, $base_theme = array(), $registry_callback = '_theme // Initialize the theme. if (isset($theme->engine)) { // Include the engine. - include_once './' . $theme->owner; + include_once DRUPAL_ROOT . '/' . $theme->owner; $theme_engine = $theme->engine; if (function_exists($theme_engine . '_init')) { @@ -181,12 +181,12 @@ function _init_theme($theme, $base_theme = array(), $registry_callback = '_theme foreach ($base_theme as $base) { // Include the theme file or the engine. if (!empty($base->owner)) { - include_once './' . $base->owner; + include_once DRUPAL_ROOT . '/' . $base->owner; } } // and our theme gets one too. if (!empty($theme->owner)) { - include_once './' . $theme->owner; + include_once DRUPAL_ROOT . '/' . $theme->owner; } } @@ -298,10 +298,10 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) { // files can prevent them from getting registered. if (isset($info['file']) && !isset($info['path'])) { $result[$hook]['file'] = $path . '/' . $info['file']; - include_once($result[$hook]['file']); + include_once DRUPAL_ROOT . '/' . $result[$hook]['file']; } elseif (isset($info['file']) && isset($info['path'])) { - include_once($info['path'] . '/' . $info['file']); + include_once DRUPAL_ROOT . '/' . $info['path'] . '/' . $info['file']; } if (isset($info['template']) && !isset($info['path'])) { @@ -600,7 +600,7 @@ function theme() { if (isset($info['path'])) { $include_file = $info['path'] . '/' . $include_file; } - include_once($include_file); + include_once DRUPAL_ROOT . '/' . $include_file; } if (isset($info['function'])) { // The theme call is a function. @@ -974,12 +974,12 @@ function theme_get_setting($setting_name, $refresh = FALSE) { * The output generated by the template. */ function theme_render_template($file, $variables) { - extract($variables, EXTR_SKIP); // Extract the variables to a local namespace - ob_start(); // Start output buffering - include "./$file"; // Include the file - $contents = ob_get_contents(); // Get the contents of the buffer - ob_end_clean(); // End buffering and discard - return $contents; // Return the contents + extract($variables, EXTR_SKIP); // Extract the variables to a local namespace + ob_start(); // Start output buffering + include DRUPAL_ROOT . '/' . $file; // Include the file + $contents = ob_get_contents(); // Get the contents of the buffer + ob_end_clean(); // End buffering and discard + return $contents; // Return the contents } /** diff --git a/includes/theme.maintenance.inc b/includes/theme.maintenance.inc index 1ece4e58fd7bfb7b5db461c4817cbbf8fa77cfee..3cb1ee90d6d3e8b4851dbf4770588842544cf934 100644 --- a/includes/theme.maintenance.inc +++ b/includes/theme.maintenance.inc @@ -22,13 +22,13 @@ function _drupal_maintenance_theme() { return; } - require_once './includes/path.inc'; - require_once './includes/theme.inc'; - require_once './includes/common.inc'; - require_once './includes/unicode.inc'; - require_once './includes/file.inc'; - require_once './includes/module.inc'; - require_once './includes/database/database.inc'; + require_once DRUPAL_ROOT . '/includes/path.inc'; + require_once DRUPAL_ROOT . '/includes/theme.inc'; + require_once DRUPAL_ROOT . '/includes/common.inc'; + require_once DRUPAL_ROOT . '/includes/unicode.inc'; + require_once DRUPAL_ROOT . '/includes/file.inc'; + require_once DRUPAL_ROOT . '/includes/module.inc'; + require_once DRUPAL_ROOT . '/includes/database/database.inc'; unicode_check(); // Install and update pages are treated differently to prevent theming overrides. diff --git a/index.php b/index.php index b5ffd79300417f3d15d18bd008cca78aa0a56343..dba9f1123c9bcc7067c59f5856f99866dab5255e 100644 --- a/index.php +++ b/index.php @@ -12,7 +12,12 @@ * See COPYRIGHT.txt and LICENSE.txt. */ -require_once './includes/bootstrap.inc'; +/** + * Root directory of Drupal installation. + */ +define('DRUPAL_ROOT', dirname(realpath(__FILE__))); + +require_once DRUPAL_ROOT . '/includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); $return = menu_execute_active_handler(); diff --git a/install.php b/install.php index faf909a6c8d021a6ac3d0a5953fec01377eee96c..a68b47699be30705f5d42d05719ac73119e319a8 100644 --- a/install.php +++ b/install.php @@ -1,7 +1,12 @@ filename); + include_once DRUPAL_ROOT . '/' . $profile->filename; // Load profile details and store them for later retrieval. $function = $profile->name . '_profile_details'; @@ -499,8 +504,8 @@ function install_find_locales($profilename) { * The selected language. */ function install_select_locale($profilename) { - include_once './includes/file.inc'; - include_once './includes/form.inc'; + include_once DRUPAL_ROOT . '/includes/file.inc'; + include_once DRUPAL_ROOT . '/includes/form.inc'; // Find all available locales. $locales = install_find_locales($profilename); @@ -564,7 +569,7 @@ function install_select_locale($profilename) { * Form API array definition for language selection. */ function install_select_locale_form(&$form_state, $locales) { - include_once './includes/locale.inc'; + include_once DRUPAL_ROOT . '/includes/locale.inc'; $languages = _locale_get_predefined_list(); foreach ($locales as $locale) { // Try to use verbose locale name @@ -660,14 +665,14 @@ function install_tasks($profile, $task) { // to the same address, until the batch finished callback is invoked // and the task advances to 'locale-initial-import'. if ($task == 'profile-install-batch') { - include_once 'includes/batch.inc'; + include_once DRUPAL_ROOT .'/includes/batch.inc'; $output = _batch_page(); } // Import interface translations for the enabled modules. if ($task == 'locale-initial-import') { if (!empty($install_locale) && ($install_locale != 'en')) { - include_once 'includes/locale.inc'; + include_once DRUPAL_ROOT . '/includes/locale.inc'; // Enable installation language as default site language. locale_add_language($install_locale, NULL, NULL, NULL, NULL, NULL, 1, TRUE); // Collect files to import for this language. @@ -686,8 +691,8 @@ function install_tasks($profile, $task) { $task = 'configure'; } if ($task == 'locale-initial-batch') { - include_once 'includes/batch.inc'; - include_once 'includes/locale.inc'; + include_once DRUPAL_ROOT . '/includes/batch.inc'; + include_once DRUPAL_ROOT . '/includes/locale.inc'; $output = _batch_page(); } @@ -771,7 +776,7 @@ function install_tasks($profile, $task) { // control and proceed with importing the remaining translations. if ($task == 'profile-finished') { if (!empty($install_locale) && ($install_locale != 'en')) { - include_once 'includes/locale.inc'; + include_once DRUPAL_ROOT . '/includes/locale.inc'; // Collect files to import for this language. Skip components // already covered in the initial batch set. $batch = locale_batch_by_language($install_locale, '_install_locale_remaining_batch_finished', variable_get('install_locale_batch_components', array())); @@ -789,8 +794,8 @@ function install_tasks($profile, $task) { $task = 'finished'; } if ($task == 'locale-remaining-batch') { - include_once 'includes/batch.inc'; - include_once 'includes/locale.inc'; + include_once DRUPAL_ROOT . '/includes/batch.inc'; + include_once DRUPAL_ROOT . '/includes/locale.inc'; $output = _batch_page(); } diff --git a/modules/color/color.module b/modules/color/color.module index a080efd86a300f0c8ab846dd8b9f65900a60b4ae..92479c38781a0e927b1c08a998925980cb43bf17 100644 --- a/modules/color/color.module +++ b/modules/color/color.module @@ -122,7 +122,7 @@ function _color_page_alter(&$vars) { */ function color_get_info($theme) { $path = drupal_get_path('theme', $theme); - $file = $path . '/color/color.inc'; + $file = DRUPAL_ROOT . '/' . $path . '/color/color.inc'; if ($path && file_exists($file)) { include $file; return $info; diff --git a/modules/locale/locale.module b/modules/locale/locale.module index 54cea750ff879b84bb141228016ffb49441eab87..113728f5156b2dc2b0781f90fd0513c803211620 100644 --- a/modules/locale/locale.module +++ b/modules/locale/locale.module @@ -187,7 +187,7 @@ function locale_menu() { function locale_inc_callback() { $args = func_get_args(); $function = array_shift($args); - include_once './includes/locale.inc'; + include_once DRUPAL_ROOT . '/includes/locale.inc'; return call_user_func_array($function, $args); } @@ -484,7 +484,7 @@ function locale_language_list($field = 'name', $all = FALSE) { * translations for. */ function locale_system_update($components) { - include_once 'includes/locale.inc'; + include_once DRUPAL_ROOT . '/includes/locale.inc'; if ($batch = locale_batch_by_component($components)) { batch_set($batch); } diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php index be73e59334927b60e014d8f488e2b2007e21d93b..1971d92f5eaabc81faf17a70b18cf56a56350c58 100644 --- a/modules/simpletest/drupal_web_test_case.php +++ b/modules/simpletest/drupal_web_test_case.php @@ -686,7 +686,7 @@ function setUp() { // Generate temporary prefixed database to ensure that tests have a clean starting point. $db_prefix = 'simpletest' . mt_rand(1000, 1000000); - include_once './includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; drupal_install_system(); // Add the specified modules to the list of modules in the default profile. diff --git a/modules/simpletest/simpletest.module b/modules/simpletest/simpletest.module index 138045f838fe626ddf3da7cf03ea05b3482a840b..ff338b12fe086e9f01bbfb12ef889337bb159e6f 100644 --- a/modules/simpletest/simpletest.module +++ b/modules/simpletest/simpletest.module @@ -424,7 +424,7 @@ function _simpletest_batch_finished($success, $results, $operations) { function simpletest_get_all_tests() { static $formatted_classes; if (!isset($formatted_classes)) { - require_once drupal_get_path('module', 'simpletest') . '/drupal_web_test_case.php'; + require_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'simpletest') . '/drupal_web_test_case.php'; $files = array(); foreach (array_keys(module_rebuild_cache()) as $module) { $module_path = drupal_get_path('module', $module); @@ -443,7 +443,7 @@ function simpletest_get_all_tests() { $existing_classes = get_declared_classes(); foreach ($files as $file) { - include_once($file); + include_once DRUPAL_ROOT . '/' . $file; } $classes = array_values(array_diff(get_declared_classes(), $existing_classes)); $formatted_classes = array(); diff --git a/modules/simpletest/tests/registry.test b/modules/simpletest/tests/registry.test index 13bfa9074e776dd5a1c6f66455ca919bb9a85204..a167178b6a4ce9399cb18e31cf8eec45d07fadfe 100644 --- a/modules/simpletest/tests/registry.test +++ b/modules/simpletest/tests/registry.test @@ -89,11 +89,11 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase { if ($fileType == 'existing_changed') { // Insert a record with a dodgy md5. $this->$fileType->fakeMD5 = md5($this->$fileType->contents . rand()); - db_query("INSERT INTO {registry_file} (md5, filename) VALUES ('%s', '%s')", $this->$fileType->fakeMD5, './' . $this->$fileType->fileName); + db_query("INSERT INTO {registry_file} (md5, filename) VALUES ('%s', '%s')", $this->$fileType->fakeMD5, $this->$fileType->fileName); // Insert some fake resource records. foreach (array('function', 'class', 'interface') as $type) { - db_query("INSERT INTO {registry} (name, type, filename) VALUES ('%s', '%s', '%s')", $type . md5(rand()), $type, './' . $this->$fileType->fileName); + db_query("INSERT INTO {registry} (name, type, filename) VALUES ('%s', '%s', '%s')", $type . md5(rand()), $type, $this->$fileType->fileName); } } } @@ -111,7 +111,7 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase { $this->assertTrue($this->$fileType->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$fileType->$resource))); } // Test that we have the right md5. - $md5 = db_result(db_query("SELECT md5 FROM {registry_file} WHERE filename = '%s'", './' . $this->$fileType->fileName)); + $md5 = db_result(db_query("SELECT md5 FROM {registry_file} WHERE filename = '%s'", $this->$fileType->fileName)); $this->assertTrue(md5($this->$fileType->contents) == $md5, t('MD5 for "@filename" matched.' . $fileType . $md5, array('@filename' => $this->$fileType->fileName))); } } @@ -123,10 +123,10 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase { $files = array(); foreach ($this->fileTypes as $fileType) { if ($fileType == 'existing_changed') { - $files['./' . $this->$fileType->fileName] = array('md5' => $this->$fileType->fakeMD5); + $files[$this->$fileType->fileName] = array('md5' => $this->$fileType->fakeMD5); } else { - $files['./' . $this->$fileType->fileName] = array(); + $files[$this->$fileType->fileName] = array(); } } return $files; diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc index 1a177cfef2e42e7ffcb28569d39766b595db9c52..65554627bc73bf6cd7e7695302e1d6b206329b3a 100644 --- a/modules/system/system.admin.inc +++ b/modules/system/system.admin.inc @@ -485,11 +485,11 @@ function system_theme_settings(&$form_state, $key = '') { if ($key) { // Include the theme's theme-settings.php file - $filename = './' . str_replace("/$key.info", '', $themes[$key]->filename) . '/theme-settings.php'; + $filename = DRUPAL_ROOT . '/' . str_replace("/$key.info", '', $themes[$key]->filename) . '/theme-settings.php'; if (!file_exists($filename) and !empty($themes[$key]->info['base theme'])) { // If the theme doesn't have a theme-settings.php file, use the base theme's. $base = $themes[$key]->info['base theme']; - $filename = './' . str_replace("/$base.info", '', $themes[$base]->filename) . '/theme-settings.php'; + $filename = DRUPAL_ROOT . '/' . str_replace("/$base.info", '', $themes[$base]->filename) . '/theme-settings.php'; } if (file_exists($filename)) { require_once $filename; @@ -839,7 +839,7 @@ function system_modules_confirm_form($modules, $storage) { * Submit callback; handles modules form submission. */ function system_modules_submit($form, &$form_state) { - include_once './includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; $modules = array(); // If we're not coming from the confirmation form, build the list of modules. if (!isset($form_state['storage'])) { @@ -986,7 +986,7 @@ function system_modules_submit($form, &$form_state) { */ function system_modules_uninstall($form_state = NULL) { // Make sure the install API is available. - include_once './includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; // Display the confirm form if any modules have been submitted. if (isset($form_state) && $confirm_form = system_modules_uninstall_confirm_form($form_state['storage'])) { @@ -1087,7 +1087,7 @@ function system_modules_uninstall_validate($form, &$form_state) { */ function system_modules_uninstall_submit($form, &$form_state) { // Make sure the install API is available. - include_once './includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; if (!empty($form['#confirmed'])) { // Call the uninstall routine for each selected module. @@ -1769,7 +1769,7 @@ function system_clean_url_settings() { */ function system_status($check = FALSE) { // Load .install files - include_once './includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; drupal_load_updates(); // Check run-time requirements and status information. @@ -1877,7 +1877,7 @@ function system_sql() { * Default page callback for batches. */ function system_batch_page() { - require_once './includes/batch.inc'; + require_once DRUPAL_ROOT . '/includes/batch.inc'; $output = _batch_page(); if ($output === FALSE) { drupal_access_denied(); diff --git a/modules/system/system.install b/modules/system/system.install index 0402a7bc6d5b07b7d20cf4a9c208b77dd2ed225a..d2eccffcc342492bb198f29ff174067d73d357fd 100644 --- a/modules/system/system.install +++ b/modules/system/system.install @@ -268,7 +268,7 @@ function system_requirements($phase) { } // Test Unicode library - include_once './includes/unicode.inc'; + include_once DRUPAL_ROOT . '/includes/unicode.inc'; $requirements = array_merge($requirements, unicode_requirements()); // Check for update status module. diff --git a/modules/update/update.fetch.inc b/modules/update/update.fetch.inc index 4255a3a4ff771e50e1e97ce4353baa309f9cd94b..a77225e6d8f3cb808ae772e7e4699cdacb3e590c 100644 --- a/modules/update/update.fetch.inc +++ b/modules/update/update.fetch.inc @@ -108,7 +108,7 @@ function _update_build_fetch_url($project, $site_key = '') { * @see update_requirements() */ function _update_cron_notify() { - include_once './includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; $status = update_requirements('runtime'); $params = array(); foreach (array('core', 'contrib') as $report_type) { diff --git a/modules/update/update.module b/modules/update/update.module index 6e9ed94f52f7dd425410d4502433a01da620b202..5036370cb208546b9f5a631dd74d01ed30b4f3ab 100644 --- a/modules/update/update.module +++ b/modules/update/update.module @@ -63,7 +63,7 @@ function update_help($path, $arg) { return $output; case 'admin/build/themes': case 'admin/build/modules': - include_once './includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; $status = update_requirements('runtime'); foreach (array('core', 'contrib') as $report_type) { $type = 'update_' . $report_type; @@ -95,7 +95,7 @@ function update_help($path, $arg) { // update missing, print an error message about it. if (arg(0) == 'admin' && strpos($path, '#') === FALSE && user_access('administer site configuration')) { - include_once './includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; $status = update_requirements('runtime'); foreach (array('core', 'contrib') as $report_type) { $type = 'update_' . $report_type; diff --git a/modules/user/user.install b/modules/user/user.install index df4b2670d568766b88cdd7d163ce01128c50d020..eaab91f943814308938485b2092ce54f6971d7f7 100644 --- a/modules/user/user.install +++ b/modules/user/user.install @@ -251,7 +251,7 @@ function user_update_7000(&$sandbox) { $sandbox['user_count'] = db_result(db_query("SELECT COUNT(uid) FROM {users}")); } else { - require_once variable_get('password_inc', './includes/password.inc'); + require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc'); // Hash again all current hashed passwords. $has_rows = FALSE; // Update this many per page load. diff --git a/modules/user/user.module b/modules/user/user.module index 73da678748038829a5486effe34ee60c65006f54..0dc6285a132cbfab15c37dac675e6705ac632de2 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -222,7 +222,7 @@ function user_save($account, $edit = array(), $category = 'account') { if (!empty($edit['pass'])) { // Allow alternate password hashing schemes. - require_once variable_get('password_inc', './includes/password.inc'); + require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc'); $edit['pass'] = user_hash_password(trim($edit['pass'])); // Abort if the hashing failed and returned FALSE. if (!$edit['pass']) { @@ -1310,7 +1310,7 @@ function user_authenticate($form_values = array()) { $account = db_fetch_object(db_query("SELECT * FROM {users} WHERE name = '%s' AND status = 1", $form_values['name'])); if ($account) { // Allow alternate password hashing schemes. - require_once variable_get('password_inc', './includes/password.inc'); + require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc'); if (user_check_password($password, $account)) { if (user_needs_new_hash($account)) { $new_hash = user_hash_password($password); diff --git a/modules/user/user.test b/modules/user/user.test index 7110276b7d516089a3ff85ab00018849048fdb11..cc90661157f9ed152afb87171c4bd8c1345fcd50 100644 --- a/modules/user/user.test +++ b/modules/user/user.test @@ -75,7 +75,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase { $this->assertText(t('The changes have been saved.'), t('Password changed to @password', array('@password' => $new_pass))); // Make sure password changes are present in database. - require_once variable_get('password_inc', './includes/password.inc'); + require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc'); $user = user_load(array('uid' => $user->uid)); $this->assertTrue(user_check_password($new_pass, $user), t('Correct password in database.')); diff --git a/scripts/password-hash.sh b/scripts/password-hash.sh index 89893d102e3766fe43bbf579bec84dfba4ad37ef..74f84d264d22034d06a21587f07ad7076b5abc32 100755 --- a/scripts/password-hash.sh +++ b/scripts/password-hash.sh @@ -83,8 +83,10 @@ function variable_get($x, $default) { } } -include_once('includes/password.inc'); -include_once('includes/common.inc'); +define('DRUPAL_ROOT', getcwd()); + +include_once DRUPAL_ROOT . '/includes/password.inc'; +include_once DRUPAL_ROOT . '/includes/common.inc'; foreach ($passwords as $password) { print("\npassword: $password \t\thash: ". user_hash_password($password) ."\n"); diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh index af57336db63d8cc8e2a0eaeac5f245e61f372c18..19527e44a60a54aa26f081ab352028240b171c9a 100755 --- a/scripts/run-tests.sh +++ b/scripts/run-tests.sh @@ -245,7 +245,8 @@ function simpletest_script_init() { $_SERVER['HTTP_USER_AGENT'] = 'Drupal command line'; chdir(realpath(dirname(__FILE__) . '/..')); - require_once './includes/bootstrap.inc'; + define('DRUPAL_ROOT', getcwd()); + require_once DRUPAL_ROOT . '/includes/bootstrap.inc'; } /** diff --git a/themes/engines/phptemplate/phptemplate.engine b/themes/engines/phptemplate/phptemplate.engine index ed34815a876893273736af9f52a8ad6da993d32f..9d94b68493921735fafb260c53ba712edaf50a60 100644 --- a/themes/engines/phptemplate/phptemplate.engine +++ b/themes/engines/phptemplate/phptemplate.engine @@ -9,7 +9,7 @@ function phptemplate_init($template) { $file = dirname($template->filename) . '/template.php'; if (file_exists($file)) { - include_once "./$file"; + include_once DRUPAL_ROOT . '/' . $file; } } diff --git a/update.php b/update.php index e899e4349815bc8631a4933c7894753c0acf4021..36a214a11ae61da378a97f4f25388b52571173a3 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,11 @@ uid == 1) { - include_once './includes/install.inc'; - include_once './includes/batch.inc'; + include_once DRUPAL_ROOT . '/includes/install.inc'; + include_once DRUPAL_ROOT . '/includes/batch.inc'; drupal_load_updates(); update_fix_d6_requirements(); diff --git a/xmlrpc.php b/xmlrpc.php index feab8f05893e90f84192421afb73bc23089dc9c4..55ac6f110226fe4460830befa68b60ea98b0242f 100644 --- a/xmlrpc.php +++ b/xmlrpc.php @@ -6,9 +6,14 @@ * PHP page for handling incoming XML-RPC requests from clients. */ -include_once './includes/bootstrap.inc'; +/** + * Root directory of Drupal installation. + */ +define('DRUPAL_ROOT', dirname(realpath(__FILE__))); + +include_once DRUPAL_ROOT . '/includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); -include_once './includes/xmlrpc.inc'; -include_once './includes/xmlrpcs.inc'; +include_once DRUPAL_ROOT . '/includes/xmlrpc.inc'; +include_once DRUPAL_ROOT . '/includes/xmlrpcs.inc'; xmlrpc_server(module_invoke_all('xmlrpc'));