mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-12 11:11:31 +00:00
The official image from streamline does not currently work for the arm64 platform. As a temporary measure, the source code and docker build scripts have been lifted from the official images and are used to build locally. Some additional modifications are made to reduce overall image size, these are documented in docker/README.md
110 lines
2.6 KiB
PHP
110 lines
2.6 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Symfony\Component\HttpFoundation;
|
|
|
|
use Symfony\Component\HttpFoundation\Exception\SessionNotFoundException;
|
|
use Symfony\Component\HttpFoundation\Session\SessionInterface;
|
|
|
|
/**
|
|
* Request stack that controls the lifecycle of requests.
|
|
*
|
|
* @author Benjamin Eberlei <kontakt@beberlei.de>
|
|
*/
|
|
class RequestStack
|
|
{
|
|
/**
|
|
* @var Request[]
|
|
*/
|
|
private array $requests = [];
|
|
|
|
/**
|
|
* Pushes a Request on the stack.
|
|
*
|
|
* This method should generally not be called directly as the stack
|
|
* management should be taken care of by the application itself.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function push(Request $request)
|
|
{
|
|
$this->requests[] = $request;
|
|
}
|
|
|
|
/**
|
|
* Pops the current request from the stack.
|
|
*
|
|
* This operation lets the current request go out of scope.
|
|
*
|
|
* This method should generally not be called directly as the stack
|
|
* management should be taken care of by the application itself.
|
|
*/
|
|
public function pop(): ?Request
|
|
{
|
|
if (!$this->requests) {
|
|
return null;
|
|
}
|
|
|
|
return array_pop($this->requests);
|
|
}
|
|
|
|
public function getCurrentRequest(): ?Request
|
|
{
|
|
return end($this->requests) ?: null;
|
|
}
|
|
|
|
/**
|
|
* Gets the main request.
|
|
*
|
|
* Be warned that making your code aware of the main request
|
|
* might make it un-compatible with other features of your framework
|
|
* like ESI support.
|
|
*/
|
|
public function getMainRequest(): ?Request
|
|
{
|
|
if (!$this->requests) {
|
|
return null;
|
|
}
|
|
|
|
return $this->requests[0];
|
|
}
|
|
|
|
/**
|
|
* Returns the parent request of the current.
|
|
*
|
|
* Be warned that making your code aware of the parent request
|
|
* might make it un-compatible with other features of your framework
|
|
* like ESI support.
|
|
*
|
|
* If current Request is the main request, it returns null.
|
|
*/
|
|
public function getParentRequest(): ?Request
|
|
{
|
|
$pos = \count($this->requests) - 2;
|
|
|
|
return $this->requests[$pos] ?? null;
|
|
}
|
|
|
|
/**
|
|
* Gets the current session.
|
|
*
|
|
* @throws SessionNotFoundException
|
|
*/
|
|
public function getSession(): SessionInterface
|
|
{
|
|
if ((null !== $request = end($this->requests) ?: null) && $request->hasSession()) {
|
|
return $request->getSession();
|
|
}
|
|
|
|
throw new SessionNotFoundException();
|
|
}
|
|
}
|