diff core/modules/system/src/Controller/BatchController.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/system/src/Controller/BatchController.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,95 @@
+<?php
+
+namespace Drupal\system\Controller;
+
+use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
+
+/**
+ * Controller routines for batch routes.
+ */
+class BatchController implements ContainerInjectionInterface {
+
+  /**
+   * The app root.
+   *
+   * @var string
+   */
+  protected $root;
+
+  /**
+   * Constructs a new BatchController.
+   *
+   * @param string $root
+   *   The app root.
+   */
+  public function __construct($root) {
+    $this->root = $root;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('app.root')
+    );
+  }
+
+  /**
+   * Returns a system batch page.
+   *
+   * @param \Symfony\Component\HttpFoundation\Request $request
+   *   The current request object.
+   *
+   * @return \Symfony\Component\HttpFoundation\Response|array
+   *   A \Symfony\Component\HttpFoundation\Response object or render array.
+   *
+   * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
+   */
+  public function batchPage(Request $request) {
+    require_once $this->root . '/core/includes/batch.inc';
+    $output = _batch_page($request);
+
+    if ($output === FALSE) {
+      throw new AccessDeniedHttpException();
+    }
+    elseif ($output instanceof Response) {
+      return $output;
+    }
+    elseif (isset($output)) {
+      $title = isset($output['#title']) ? $output['#title'] : NULL;
+      $page = [
+        '#type' => 'page',
+        '#title' => $title,
+        '#show_messages' => FALSE,
+        'content' => $output,
+      ];
+
+      // Also inject title as a page header (if available).
+      if ($title) {
+        $page['header'] = [
+          '#type' => 'page_title',
+          '#title' => $title,
+        ];
+      }
+
+      return $page;
+    }
+  }
+
+  /**
+   * The _title_callback for the system.batch_page.normal route.
+   *
+   * @return string
+   *   The page title.
+   */
+  public function batchPageTitle() {
+    $current_set = _batch_current_set();
+    return !empty($current_set['title']) ? $current_set['title'] : '';
+  }
+
+}