Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Core\Routing;
|
Chris@0
|
4
|
Chris@0
|
5 use Symfony\Component\HttpFoundation\Request;
|
Chris@0
|
6 use Symfony\Component\HttpFoundation\RequestStack;
|
Chris@0
|
7 use Symfony\Component\Routing\RequestContext as SymfonyRequestContext;
|
Chris@0
|
8
|
Chris@0
|
9 /**
|
Chris@0
|
10 * Holds information about the current request.
|
Chris@0
|
11 *
|
Chris@0
|
12 * @todo: Remove once the upstream RequestContext provides fromRequestStack():
|
Chris@0
|
13 * https://github.com/symfony/symfony/issues/12057
|
Chris@0
|
14 */
|
Chris@0
|
15 class RequestContext extends SymfonyRequestContext {
|
Chris@0
|
16
|
Chris@0
|
17 /**
|
Chris@0
|
18 * The scheme, host and base path, for example "http://example.com/d8".
|
Chris@0
|
19 *
|
Chris@0
|
20 * @var string
|
Chris@0
|
21 */
|
Chris@0
|
22 protected $completeBaseUrl;
|
Chris@0
|
23
|
Chris@0
|
24 /**
|
Chris@0
|
25 * Populates the context from the current request from the request stack.
|
Chris@0
|
26 *
|
Chris@0
|
27 * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
|
Chris@0
|
28 * The current request stack.
|
Chris@0
|
29 */
|
Chris@0
|
30 public function fromRequestStack(RequestStack $request_stack) {
|
Chris@0
|
31 $this->fromRequest($request_stack->getCurrentRequest());
|
Chris@0
|
32 }
|
Chris@0
|
33
|
Chris@0
|
34 /**
|
Chris@0
|
35 * {@inheritdoc}
|
Chris@0
|
36 */
|
Chris@0
|
37 public function fromRequest(Request $request) {
|
Chris@0
|
38 parent::fromRequest($request);
|
Chris@0
|
39
|
Chris@0
|
40 // @todo Extract the code in DrupalKernel::initializeRequestGlobals.
|
Chris@0
|
41 // See https://www.drupal.org/node/2404601
|
Chris@0
|
42 if (isset($GLOBALS['base_url'])) {
|
Chris@0
|
43 $this->setCompleteBaseUrl($GLOBALS['base_url']);
|
Chris@0
|
44 }
|
Chris@0
|
45 }
|
Chris@0
|
46
|
Chris@0
|
47 /**
|
Chris@0
|
48 * Gets the scheme, host and base path.
|
Chris@0
|
49 *
|
Chris@0
|
50 * For example, in an installation in a subdirectory "d8", it should be
|
Chris@0
|
51 * "https://example.com/d8".
|
Chris@0
|
52 */
|
Chris@0
|
53 public function getCompleteBaseUrl() {
|
Chris@0
|
54 return $this->completeBaseUrl;
|
Chris@0
|
55 }
|
Chris@0
|
56
|
Chris@0
|
57 /**
|
Chris@0
|
58 * Sets the complete base URL for the Request context.
|
Chris@0
|
59 *
|
Chris@0
|
60 * @param string $complete_base_url
|
Chris@0
|
61 * The complete base URL.
|
Chris@0
|
62 */
|
Chris@0
|
63 public function setCompleteBaseUrl($complete_base_url) {
|
Chris@0
|
64 $this->completeBaseUrl = $complete_base_url;
|
Chris@0
|
65 }
|
Chris@0
|
66
|
Chris@0
|
67 }
|