Version 1
[yaffs-website] / web / core / modules / system / src / Controller / BatchController.php
diff --git a/web/core/modules/system/src/Controller/BatchController.php b/web/core/modules/system/src/Controller/BatchController.php
new file mode 100644 (file)
index 0000000..7975dcc
--- /dev/null
@@ -0,0 +1,84 @@
+<?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)) {
+      $page = [
+        '#type' => 'page',
+        '#show_messages' => FALSE,
+        'content' => $output,
+      ];
+      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'] : '';
+  }
+
+}