diff --git a/core/authorize.php b/core/authorize.php index fe39394..f47ae3f 100644 --- a/core/authorize.php +++ b/core/authorize.php @@ -20,6 +20,8 @@ * @link authorize Authorized operation helper functions @endlink */ +use Symfony\Component\HttpFoundation\Request; + // Change the directory to the Drupal root. chdir('..'); @@ -69,6 +71,9 @@ function authorize_access_allowed() { // variables, however, so we have access to the class autoloader. drupal_bootstrap(DRUPAL_BOOTSTRAP_VARIABLES); +$request = Request::createFromGlobals(); +Drupal::getContainer()->set('request', $request); + // This must go after drupal_bootstrap(), which unsets globals! global $conf; @@ -134,8 +139,8 @@ function authorize_access_allowed() { $output .= theme('item_list', array('items' => $links, 'title' => t('Next steps'))); } // If a batch is running, let it run. - elseif (isset($_GET['batch'])) { - $output = _batch_page(); + elseif ($request->query->has('batch')) { + $output = _batch_page($request); } else { if (empty($_SESSION['authorize_operation']) || empty($_SESSION['authorize_filetransfer_info'])) { diff --git a/core/includes/batch.inc b/core/includes/batch.inc index 569ce58..32cd8eb 100644 --- a/core/includes/batch.inc +++ b/core/includes/batch.inc @@ -16,23 +16,27 @@ use Drupal\Core\Batch\Percentage; use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RedirectResponse; /** * Renders the batch processing page based on the current state of the batch. * + * @param \Symfony\Component\HttpFoundation\Request $request + * The current request object. + * * @see _batch_shutdown() */ -function _batch_page() { +function _batch_page(Request $request) { $batch = &batch_get(); - if (!isset($_REQUEST['id'])) { + if (!($request_id = $request->get('id'))) { return FALSE; } // Retrieve the current state of the batch. if (!$batch) { - $batch = Drupal::service('batch.storage')->load($_REQUEST['id']); + $batch = Drupal::service('batch.storage')->load($request_id); if (!$batch) { drupal_set_message(t('No active batch.'), 'error'); return new RedirectResponse(url('', array('absolute' => TRUE))); @@ -51,7 +55,7 @@ function _batch_page() { } } - $op = isset($_REQUEST['op']) ? $_REQUEST['op'] : ''; + $op = $request->get('op', ''); $output = NULL; switch ($op) { case 'start': diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index 8e4b66e..c7e465b 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -652,7 +652,7 @@ function install_run_task($task, &$install_state) { // any output from the batch process, until the task is complete. elseif ($current_batch == $function) { include_once __DIR__ . '/batch.inc'; - $output = _batch_page(); + $output = _batch_page(Drupal::request()); // Because Batch API now returns a JSON response for intermediary steps, // but the installer doesn't handle Response objects yet, just send the // output here and emulate the old model. diff --git a/core/modules/system/lib/Drupal/system/Controller/BatchController.php b/core/modules/system/lib/Drupal/system/Controller/BatchController.php new file mode 100644 index 0000000..53e8823 --- /dev/null +++ b/core/modules/system/lib/Drupal/system/Controller/BatchController.php @@ -0,0 +1,48 @@ + 'system_batch_page', - 'access callback' => TRUE, + 'route_name' => 'system_batch_page', 'theme callback' => '_system_batch_theme', 'type' => MENU_CALLBACK, - 'file' => 'system.admin.inc', ); // Localize date formats. diff --git a/core/modules/system/system.routing.yml b/core/modules/system/system.routing.yml index 9b27c08..6a40cda 100644 --- a/core/modules/system/system.routing.yml +++ b/core/modules/system/system.routing.yml @@ -234,3 +234,10 @@ system_admin_config: _content: '\Drupal\system\Controller\SystemController::overview' requirements: _permission: 'access administration pages' + +system_batch_page: + pattern: '/batch' + defaults: + _controller: '\Drupal\system\Controller\BatchController::batchPage' + requirements: + _access: 'TRUE' diff --git a/core/update.php b/core/update.php index 3052584..f40e27f 100644 --- a/core/update.php +++ b/core/update.php @@ -430,6 +430,8 @@ function update_check_requirements($skip_warnings = FALSE) { } } +// @todo Refactor this. + // Some unavoidable errors happen because the database is not yet up-to-date. // Our custom error handler is not yet installed, so we just suppress them. ini_set('display_errors', FALSE); @@ -450,11 +452,8 @@ function update_check_requirements($skip_warnings = FALSE) { drupal_session_initialize(); // A request object from the HTTPFoundation to tell us about the request. -// @todo These two lines were copied from index.php which has its own todo about -// a change required here. Revisit this when that change has been made. $request = Request::createFromGlobals(); -drupal_container() - ->set('request', $request); +Drupal::getContainer()->set('request', $request); // Ensure that URLs generated for the home and admin pages don't have 'update.php' // in them. @@ -553,7 +552,7 @@ function update_check_requirements($skip_warnings = FALSE) { // Regular batch ops : defer to batch processing API. default: update_task_list('run'); - $output = _batch_page(); + $output = _batch_page($request); break; } }