Example #1
0
 /**
  * @param \Drufony\Bridge\Event\GetCallableForPhase $event
  */
 public function onBootstrapFull(GetCallableForPhase $event)
 {
     $event->setCallable(function () {
         require_once DRUPAL_ROOT . '/includes/common.inc';
         require_once DRUPAL_ROOT . '/' . variable_get('path_inc', 'includes/path.inc');
         require_once DRUPAL_ROOT . '/includes/theme.inc';
         require_once DRUPAL_ROOT . '/includes/pager.inc';
         require_once DRUPAL_ROOT . '/' . variable_get('menu_inc', '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';
         require_once DRUPAL_ROOT . '/includes/ajax.inc';
         require_once DRUPAL_ROOT . '/includes/token.inc';
         require_once DRUPAL_ROOT . '/includes/errors.inc';
         // Detect string handling method
         unicode_check();
         // Undo magic quotes
         fix_gpc_magic();
         // Load all enabled modules
         module_load_all();
         // Make sure all stream wrappers are registered.
         file_get_stream_wrappers();
         // Ensure mt_rand is reseeded, to prevent random values from one page load
         // being exploited to predict random values in subsequent page loads.
         $seed = unpack("L", drupal_random_bytes(4));
         mt_srand($seed[1]);
         $test_info =& $GLOBALS['drupal_test_info'];
         if (!empty($test_info['in_child_site'])) {
             // Running inside the simpletest child site, log fatal errors to test
             // specific file directory.
             ini_set('log_errors', 1);
             ini_set('error_log', 'public://error.log');
         }
         // Initialize $_GET['q'] prior to invoking hook_init().
         drupal_path_initialize();
         // Remaining function calls from this phase of bootstrap must happen after
         // the user is authenticated because they initialize the theme and call
         // menu_get_item().
     });
 }
Example #2
0
<?php

// $Id: index.php,v 1.82.4.1 2006/10/18 20:14:08 killes Exp $
/**
 * @file
 * The PHP page that serves all page requests on a Drupal installation.
 *
 * The routines here dispatch control to the appropriate handler, which then
 * prints the appropriate page.
 */
include_once 'includes/bootstrap.inc';
drupal_page_header();
include_once 'includes/common.inc';
fix_gpc_magic();
/*
Disabled by AstBill Team - Uvaraj 
Not compatible med AstBill. 
Fix to come soon.*/
//drupal_check_token();
$status = menu_execute_active_handler();
switch ($status) {
    case MENU_NOT_FOUND:
        drupal_not_found();
        break;
    case MENU_ACCESS_DENIED:
        drupal_access_denied();
        break;
}
drupal_page_footer();
Example #3
0
/**
 * Loads the requested module and executes the requested callback.
 *
 * @return
 *   The callback function's return value or one of the JS_* constants.
 */
function js_execute_callback()
{
    $args = explode('/', $_GET['q']);
    // If i18n is enabled and therefore the js module should boot
    // to DRUPAL_BOOTSTRAP_LANGUAGE.
    $i18n = FALSE;
    // Validate if there is a language prefix in the path.
    if (!empty($args[0]) && !empty($args[1]) && $args[1] == 'js_callback') {
        // Language string detected, strip off the language code.
        $language_code = array_shift($args);
        // Enable language detection to make sure i18n is enabled.
        $i18n = TRUE;
    }
    // Strip first argument 'js_callback'.
    if (!empty($args[0]) && $args[0] == 'js_callback') {
        array_shift($args);
    }
    // Determine module to load.
    $module = check_plain(array_shift($args));
    if (!$module || !drupal_load('module', $module)) {
        return JS_MENU_ACCESS_DENIED;
    }
    // Get info hook function name.
    $function = $module . '_js';
    if (!function_exists($function)) {
        return JS_MENU_NOT_FOUND;
    }
    // Get valid callbacks.
    $valid_callbacks = $function();
    // Get the callback.
    $callback = check_plain(array_shift($args));
    // Validate the callback.
    if (!isset($valid_callbacks[$callback])) {
        return JS_MENU_NOT_FOUND;
    }
    // If the callback function is located in another file, load that file now.
    if (isset($valid_callbacks[$callback]['file']) && ($filepath = drupal_get_path('module', $module) . '/' . $valid_callbacks[$callback]['file']) && file_exists($filepath)) {
        require_once $filepath;
    }
    // Validate the existance of the defined callback.
    if (!function_exists($valid_callbacks[$callback]['callback'])) {
        return JS_MENU_NOT_FOUND;
    }
    // Bootstrap to required level.
    $full_boostrap = FALSE;
    if (!empty($valid_callbacks[$callback]['bootstrap'])) {
        drupal_bootstrap($valid_callbacks[$callback]['bootstrap']);
        $full_boostrap = $valid_callbacks[$callback]['bootstrap'] == DRUPAL_BOOTSTRAP_FULL;
    }
    // Validate if the callback uses i18n.
    if (isset($valid_callbacks[$callback]['i18n'])) {
        $i18n = $valid_callbacks[$callback]['i18n'];
    }
    if (!$full_boostrap) {
        // The following mimics the behavior of _drupal_bootstrap_full().
        // The difference is that not all modules and includes are loaded.
        // @see _drupal_bootstrap_full().
        // If i18n is enabled, boot to the language phase and make
        // sure the required modules are enabled.
        if ($i18n) {
            // First boot to the variables to make sure drupal_multilingual() works.
            drupal_bootstrap(DRUPAL_BOOTSTRAP_VARIABLES);
            // As the variables bootstrap phase loads all core modules, we have to
            // add the user module and the path include as a dependencies because they
            // are required by some core modules.
            if (empty($valid_callbacks[$callback]['dependencies'])) {
                $valid_callbacks[$callback]['dependencies'] = array();
            }
            if (empty($valid_callbacks[$callback]['includes'])) {
                $valid_callbacks[$callback]['includes'] = array();
            }
            if (!in_array('user', $valid_callbacks[$callback]['dependencies'])) {
                $valid_callbacks[$callback]['dependencies'][] = 'user';
            }
            if (!in_array('path', $valid_callbacks[$callback]['includes'])) {
                $valid_callbacks[$callback]['includes'][] = 'path';
            }
            // Then check if it's a multilingual site. If so, boot to the language
            // phase.
            if (drupal_multilingual()) {
                drupal_bootstrap(DRUPAL_BOOTSTRAP_LANGUAGE);
            }
        }
        // Load required include files based on the callback.
        if (isset($valid_callbacks[$callback]['includes']) && is_array($valid_callbacks[$callback]['includes'])) {
            foreach ($valid_callbacks[$callback]['includes'] as $include) {
                if (file_exists("./includes/{$include}.inc")) {
                    require_once "./includes/{$include}.inc";
                }
            }
        }
        // Detect string handling method.
        unicode_check();
        // Undo magic quotes.
        fix_gpc_magic();
        // Make sure all stream wrappers are registered.
        file_get_stream_wrappers();
        // Load required modules.
        $modules = array($module => 0);
        if (isset($valid_callbacks[$callback]['dependencies']) && is_array($valid_callbacks[$callback]['dependencies'])) {
            foreach ($valid_callbacks[$callback]['dependencies'] as $dependency) {
                if (!drupal_load('module', $dependency)) {
                    // Do a boot up till SESSION to be sure the drupal_set_message()
                    // function works.
                    drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION);
                    // Create an error message with information for the user to be able
                    // to fix the dependency.
                    $error = t('The dependency :dependency for the callback :callback in :module is not installed.', array(':dependency' => $dependency, ':callback' => $callback, ':module' => $module));
                    // Let the user know what's wrong and throw an exception to stop the
                    // callback.
                    drupal_set_message($error, 'error');
                    throw new Exception($error);
                }
                $modules[$dependency] = 0;
            }
        }
        // Reset module list.
        module_list(FALSE, TRUE, FALSE, $modules);
        // Ensure the language variable is set, if not it might cause problems (e.g.
        // entity info).
        global $language;
        if (!isset($language)) {
            $language = language_default();
        }
        // If access arguments are passed, boot to SESSION and validate if the user
        // has access to this callback.
        if (!empty($valid_callbacks[$callback]['access arguments']) || !empty($valid_callbacks[$callback]['access callback'])) {
            drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION);
            // If no callback is provided, default to user_access.
            if (!isset($valid_callbacks[$callback]['access callback'])) {
                $valid_callbacks[$callback]['access callback'] = 'user_access';
            }
            if ($valid_callbacks[$callback]['access callback'] == 'user_access') {
                // Ensure the user module is available.
                drupal_load('module', 'user');
            }
            if (!call_user_func_array($valid_callbacks[$callback]['access callback'], !empty($valid_callbacks[$callback]['access arguments']) ? $valid_callbacks[$callback]['access arguments'] : array())) {
                return JS_MENU_ACCESS_DENIED;
            }
        }
        // Invoke implementations of hook_init() if the callback doesn't indicate it
        // should be skipped.
        if (!isset($valid_callbacks[$callback]['skip_hook_init']) || $valid_callbacks[$callback]['skip_hook_init'] == FALSE) {
            module_invoke_all('init');
        }
    }
    // If there are page arguments defined add them to the callback call.
    if (isset($valid_callbacks[$callback]['page arguments'])) {
        // Get the original args again and strip first arguments 'js_callback' and 'module'.
        $args = array_slice(explode('/', $_GET['q']), 2);
        // Overwrite the arguments
        $args = array_intersect_key($args, array_flip($valid_callbacks[$callback]['page arguments']));
    }
    // Invoke callback function.
    return call_user_func_array($valid_callbacks[$callback]['callback'], $args);
}
Example #4
0
 /**
  * @param array $values
  */
 public function __construct(array $values = array())
 {
     // If this bootstrap object is used in a service, bootstrap.inc may
     // not have been included yet. If the file is not included, the
     // Drupal bootstrap constants are not available.
     require_once $values['DRUPAL_ROOT'] . '/includes/bootstrap.inc';
     parent::__construct($values);
     /**
      * Sets up the script environment and loads settings.php.
      *
      * @see _drupal_bootstrap_configuration()
      */
     $this[DRUPAL_BOOTSTRAP_CONFIGURATION] = $this->share(function () {
         // Start a page timer:
         timer_start('page');
         // Initialize the configuration, including variables from settings.php.
         // drupal_settings_initialize();
         global $base_url, $base_path, $base_root;
         // Export these settings.php variables to the global namespace.
         global $databases, $cookie_domain, $conf, $installed_profile, $update_free_access, $db_url, $db_prefix, $drupal_hash_salt, $is_https, $base_secure_url, $base_insecure_url;
         $conf = array();
         if (file_exists(DRUPAL_ROOT . '/' . conf_path() . '/settings.php')) {
             include_once DRUPAL_ROOT . '/' . conf_path() . '/settings.php';
         }
         $is_https = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on';
         if (isset($base_url)) {
             // Parse fixed base URL from settings.php.
             $parts = parse_url($base_url);
             if (!isset($parts['path'])) {
                 $parts['path'] = '';
             }
             $base_path = $parts['path'] . '/';
             // Build $base_root (everything until first slash after "scheme://").
             $base_root = substr($base_url, 0, strlen($base_url) - strlen($parts['path']));
         } else {
             // Create base URL.
             $http_protocol = $is_https ? 'https' : 'http';
             $base_root = $http_protocol . '://' . $_SERVER['HTTP_HOST'];
             $base_url = $base_root;
             // $_SERVER['SCRIPT_NAME'] can, in contrast to $_SERVER['PHP_SELF'], not
             // be modified by a visitor.
             if ($dir = rtrim(dirname($_SERVER['SCRIPT_NAME']), '\\/')) {
                 $base_path = $dir;
                 $base_url .= $base_path;
                 $base_path .= '/';
             } else {
                 $base_path = '/';
             }
         }
         $base_secure_url = str_replace('http://', 'https://', $base_url);
         $base_insecure_url = str_replace('https://', 'http://', $base_url);
         // We do not mess with cookie or session settings in Drupal at all.
     });
     // DRUPAL_BOOTSTRAP_PAGE_CACHE only loads the cache handler.
     $this[DRUPAL_BOOTSTRAP_PAGE_CACHE] = $this->share(function () {
         // Allow specifying special cache handlers in settings.php, like
         // using memcached or files for storing cache information.
         require_once DRUPAL_ROOT . '/includes/cache.inc';
         foreach (variable_get('cache_backends', array()) as $include) {
             require_once DRUPAL_ROOT . '/' . $include;
         }
     });
     // DRUPAL_BOOTSTRAP_DATABASE - in parent class.
     $this[DRUPAL_BOOTSTRAP_VARIABLES] = $this->share($this->extend(DRUPAL_BOOTSTRAP_VARIABLES, function () {
         if (isset($GLOBALS['service_container']) && is_a($GLOBALS['service_container'], 'Symfony\\Component\\DependencyInjection\\ContainerInterface')) {
             /** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
             $container = $GLOBALS['service_container'];
             $GLOBALS['conf']['session_inc'] = $container->getParameter('bangpound_drupal.conf.session_inc');
             $GLOBALS['conf']['mail_system']['default-system'] = $container->getParameter('bangpound_drupal.conf.mail_system.default_system');
         }
     }));
     // DRUPAL_BOOTSTRAP_SESSION - in base class.
     $this[DRUPAL_BOOTSTRAP_PAGE_HEADER] = $this->share(function () {
         bootstrap_invoke_all('boot');
     });
     // DRUPAL_BOOTSTRAP_LANGUAGE
     $this[DRUPAL_BOOTSTRAP_FULL] = $this->share(function () {
         require_once DRUPAL_ROOT . '/includes/common.inc';
         require_once DRUPAL_ROOT . '/' . variable_get('path_inc', 'includes/path.inc');
         require_once DRUPAL_ROOT . '/includes/theme.inc';
         require_once DRUPAL_ROOT . '/includes/pager.inc';
         require_once DRUPAL_ROOT . '/' . variable_get('menu_inc', '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';
         require_once DRUPAL_ROOT . '/includes/ajax.inc';
         require_once DRUPAL_ROOT . '/includes/token.inc';
         require_once DRUPAL_ROOT . '/includes/errors.inc';
         // Detect string handling method
         unicode_check();
         // Undo magic quotes
         fix_gpc_magic();
         // Load all enabled modules
         module_load_all();
         // Make sure all stream wrappers are registered.
         file_get_stream_wrappers();
         // Ensure mt_rand is reseeded, to prevent random values from one page load
         // being exploited to predict random values in subsequent page loads.
         $seed = unpack("L", drupal_random_bytes(4));
         mt_srand($seed[1]);
         $test_info =& $GLOBALS['drupal_test_info'];
         if (!empty($test_info['in_child_site'])) {
             // Running inside the simpletest child site, log fatal errors to test
             // specific file directory.
             ini_set('log_errors', 1);
             ini_set('error_log', 'public://error.log');
         }
         // Initialize $_GET['q'] prior to invoking hook_init().
         drupal_path_initialize();
         // Remaining function calls from this phase of bootstrap must happen after
         // the user is authenticated because they initialize the theme and call
         // menu_get_item().
     });
 }