Spaces:
No application file
No application file
namespace Mautic\CoreBundle\Event; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Contracts\EventDispatcher\Event; | |
abstract class AbstractCustomRequestEvent extends Event | |
{ | |
/** | |
* @var Request | |
*/ | |
protected $request; | |
/** | |
* @var string | |
*/ | |
protected $route; | |
/** | |
* @var array | |
*/ | |
protected $routeParams = []; | |
public function __construct(Request $request = null) | |
{ | |
if ($request) { | |
$this->request = ($request->isXmlHttpRequest() && $request->query->has('request')) ? $request->query->get('request') : $request; | |
if ($this->request->attributes->has('ajaxRoute')) { | |
$ajaxRoute = $this->request->attributes->get('ajaxRoute'); | |
$this->route = $ajaxRoute['_route']; | |
$this->routeParams = $ajaxRoute['_route_params']; | |
} else { | |
$this->route = $this->request->attributes->get('_route'); | |
$this->routeParams = $this->request->attributes->get('_route_params'); | |
} | |
if (null === $this->routeParams) { | |
$this->routeParams = []; | |
} | |
} | |
} | |
/** | |
* @return Request | |
*/ | |
public function getRequest() | |
{ | |
return $this->request; | |
} | |
/** | |
* Get Symfony route name for the current view. | |
* | |
* @param bool $withParams | |
* | |
* @return array|mixed | |
*/ | |
public function getRoute($withParams = false) | |
{ | |
return ($withParams) ? [$this->route, $this->routeParams] : $this->route; | |
} | |
public function checkRouteContext($route): bool | |
{ | |
if (null == $this->request) { | |
return false; | |
} | |
if (null !== $route) { | |
[$currentRoute, $routeParams] = $this->getRoute(true); | |
$givenRoute = $route; | |
$givenRouteParams = []; | |
if (is_array($route)) { | |
[$givenRoute, $givenRouteParams] = $route; | |
} | |
if ($givenRoute !== $currentRoute) { | |
return false; | |
} | |
foreach ($givenRouteParams as $param => $value) { | |
if (!isset($routeParams[$param]) || $value !== $routeParams[$param]) { | |
return false; | |
} | |
} | |
} | |
return true; | |
} | |
} | |