Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\system\Controller;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
|
Chris@0
|
6 use Symfony\Component\DependencyInjection\ContainerInterface;
|
Chris@0
|
7 use Symfony\Component\HttpFoundation\Request;
|
Chris@0
|
8 use Symfony\Component\HttpFoundation\Response;
|
Chris@0
|
9 use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
|
Chris@0
|
10
|
Chris@0
|
11 /**
|
Chris@0
|
12 * Controller routines for batch routes.
|
Chris@0
|
13 */
|
Chris@0
|
14 class BatchController implements ContainerInjectionInterface {
|
Chris@0
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 * The app root.
|
Chris@0
|
18 *
|
Chris@0
|
19 * @var string
|
Chris@0
|
20 */
|
Chris@0
|
21 protected $root;
|
Chris@0
|
22
|
Chris@0
|
23 /**
|
Chris@0
|
24 * Constructs a new BatchController.
|
Chris@0
|
25 *
|
Chris@0
|
26 * @param string $root
|
Chris@0
|
27 * The app root.
|
Chris@0
|
28 */
|
Chris@0
|
29 public function __construct($root) {
|
Chris@0
|
30 $this->root = $root;
|
Chris@0
|
31 }
|
Chris@0
|
32
|
Chris@0
|
33 /**
|
Chris@0
|
34 * {@inheritdoc}
|
Chris@0
|
35 */
|
Chris@0
|
36 public static function create(ContainerInterface $container) {
|
Chris@0
|
37 return new static(
|
Chris@0
|
38 $container->get('app.root')
|
Chris@0
|
39 );
|
Chris@0
|
40 }
|
Chris@0
|
41
|
Chris@0
|
42 /**
|
Chris@0
|
43 * Returns a system batch page.
|
Chris@0
|
44 *
|
Chris@0
|
45 * @param \Symfony\Component\HttpFoundation\Request $request
|
Chris@0
|
46 * The current request object.
|
Chris@0
|
47 *
|
Chris@0
|
48 * @return \Symfony\Component\HttpFoundation\Response|array
|
Chris@0
|
49 * A \Symfony\Component\HttpFoundation\Response object or render array.
|
Chris@0
|
50 *
|
Chris@0
|
51 * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
|
Chris@0
|
52 */
|
Chris@0
|
53 public function batchPage(Request $request) {
|
Chris@0
|
54 require_once $this->root . '/core/includes/batch.inc';
|
Chris@0
|
55 $output = _batch_page($request);
|
Chris@0
|
56
|
Chris@0
|
57 if ($output === FALSE) {
|
Chris@0
|
58 throw new AccessDeniedHttpException();
|
Chris@0
|
59 }
|
Chris@0
|
60 elseif ($output instanceof Response) {
|
Chris@0
|
61 return $output;
|
Chris@0
|
62 }
|
Chris@0
|
63 elseif (isset($output)) {
|
Chris@0
|
64 $title = isset($output['#title']) ? $output['#title'] : NULL;
|
Chris@0
|
65 $page = [
|
Chris@0
|
66 '#type' => 'page',
|
Chris@0
|
67 '#title' => $title,
|
Chris@0
|
68 '#show_messages' => FALSE,
|
Chris@0
|
69 'content' => $output,
|
Chris@0
|
70 ];
|
Chris@0
|
71
|
Chris@0
|
72 // Also inject title as a page header (if available).
|
Chris@0
|
73 if ($title) {
|
Chris@0
|
74 $page['header'] = [
|
Chris@0
|
75 '#type' => 'page_title',
|
Chris@0
|
76 '#title' => $title,
|
Chris@0
|
77 ];
|
Chris@0
|
78 }
|
Chris@0
|
79
|
Chris@0
|
80 return $page;
|
Chris@0
|
81 }
|
Chris@0
|
82 }
|
Chris@0
|
83
|
Chris@0
|
84 /**
|
Chris@0
|
85 * The _title_callback for the system.batch_page.normal route.
|
Chris@0
|
86 *
|
Chris@0
|
87 * @return string
|
Chris@0
|
88 * The page title.
|
Chris@0
|
89 */
|
Chris@0
|
90 public function batchPageTitle() {
|
Chris@0
|
91 $current_set = _batch_current_set();
|
Chris@0
|
92 return !empty($current_set['title']) ? $current_set['title'] : '';
|
Chris@0
|
93 }
|
Chris@0
|
94
|
Chris@0
|
95 }
|