1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95:
<?php
namespace MvcCore\Ext\Routers\Module;
trait DomainRouting {
protected function domainRouting () {
if ($this->routeGetRequestsOnly) {
trigger_error("[".get_class()."] Routing only GET requests with special media "
."site version or localization conditions is not allowed in module router.",
E_USER_WARNING);
$this->routeGetRequestsOnly = FALSE;
}
$allMatchedParams = [];
foreach ($this->domainRoutes as $route) {
$allMatchedParams = $route->Matches($this->request);
if ($allMatchedParams !== NULL) {
$this->currentDomainRoute = clone $route;
$this->currentModule = $this->currentDomainRoute->GetModule();
$this->currentDomainRoute->SetMatchedParams($allMatchedParams);
$this->domainRoutingSetRequestedAndDefaultParams($allMatchedParams);
$break = $this->domainRoutingFilterParams($allMatchedParams);
$this->domainRoutingSetUpRouterByDomainRoute();
if ($break) break;
}
}
}
protected function domainRoutingSetRequestedAndDefaultParams (array & $allMatchedParams) {
$currentRoute = $this->currentDomainRoute;
$allMatchedParams[static::URL_PARAM_MODULE] = $currentRoute->GetModule();
$this->defaultParams = array_merge(
$currentRoute->GetDefaults(), $allMatchedParams
);
$this->requestedDomainParams = array_merge([], $allMatchedParams);
}
protected function domainRoutingFilterParams (array & $allMatchedParams) {
$request = $this->request;
$defaultParamsBefore = array_merge([], $this->defaultParams);
$requestParams = array_merge([], $this->defaultParams);
list($success, $requestParamsFiltered) = $this->currentDomainRoute->Filter(
$requestParams, $this->defaultParams, \MvcCore\IRoute::CONFIG_FILTER_IN
);
if ($success === FALSE) {
$this->defaultParams = $defaultParamsBefore;
$this->requestedDomainParams = [];
$allMatchedParams = [];
$this->currentDomainRoute = NULL;
return FALSE;
}
$requestParams = array_merge($request->GetParams(FALSE), $requestParamsFiltered);
$request->SetParams($requestParams);
return TRUE;
}
}