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: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139:
<?php
namespace MvcCore\Ext\Routers\Media;
trait Preparing {
protected function prepareMedia () {
if (count($this->allowedMediaVersionsAndUrlValues) < 2) {
$this->mediaSiteVersion = static::MEDIA_VERSION_FULL;
$this->requestMediaSiteVersion = $this->mediaSiteVersion;
return;
}
$sessStrictModeSwitchUrlParam = static::URL_PARAM_SWITCH_MEDIA_VERSION;
if (isset($this->requestGlobalGet[$sessStrictModeSwitchUrlParam])) {
$switchUriParamMediaSiteVersion = strtolower($this->requestGlobalGet[$sessStrictModeSwitchUrlParam]);
if (isset($this->allowedMediaVersionsAndUrlValues[$switchUriParamMediaSiteVersion]))
$this->switchUriParamMediaSiteVersion = $switchUriParamMediaSiteVersion;
}
$mediaVersionUrlParam = static::URL_PARAM_MEDIA_VERSION;
if (isset($this->session->{$mediaVersionUrlParam})) {
$sessionMediaSiteVersion = $this->session->{$mediaVersionUrlParam};
if (isset($this->allowedMediaVersionsAndUrlValues[$sessionMediaSiteVersion]))
$this->sessionMediaSiteVersion = $this->session->{$mediaVersionUrlParam};
}
$this->prepareRequestMediaVersionFromUrl();
}
protected function prepareRequestMediaVersionFromUrl () {
$this->prepareRequestMediaVersionFromUrlQueryString();
if ($this->requestMediaSiteVersion === NULL && $this->anyRoutesConfigured)
$this->prepareRequestMediaVersionFromUrlPath();
if ($this->requestMediaSiteVersion === NULL)
$this->requestMediaSiteVersion = static::MEDIA_VERSION_FULL;
}
protected function prepareRequestMediaVersionFromUrlQueryString () {
$requestMediaVersion = $this->request->GetParam(static::URL_PARAM_MEDIA_VERSION, 'a-zA-Z');
$this->prepareSetUpRequestMediaSiteVersionIfValid($requestMediaVersion);
}
protected function prepareRequestMediaVersionFromUrlPath () {
$requestPath = $this->request->GetPath(TRUE);
$requestPathExploded = explode('/', trim($requestPath, '/'));
$requestPathFirstPart = mb_strtolower($requestPathExploded[0]);
foreach ($this->allowedMediaVersionsAndUrlValues as $mediaSiteVersion => $mediaSiteUrlValue) {
$mediaSiteUrlPrefix = mb_strtolower($mediaSiteUrlValue);
if ($requestPathFirstPart === $mediaSiteUrlPrefix) {
$this->requestMediaSiteVersion = $mediaSiteVersion;
if (mb_strlen($mediaSiteUrlPrefix) > 0)
$this->request->SetPath(
mb_substr($requestPath, mb_strlen('/' . $mediaSiteUrlPrefix))
);
break;
}
}
}
protected function prepareSetUpRequestMediaSiteVersionIfValid ($rawRequestMediaVersion) {
$result = FALSE;
$rawRequestMediaVersionLength = $rawRequestMediaVersion ? strlen($rawRequestMediaVersion) : 0;
$requestMediaVersionValidStr = $rawRequestMediaVersionLength > 0;
$requestMediaVersionFormated = '';
if ($requestMediaVersionValidStr) {
$requestMediaVersionFormated = mb_strtolower($rawRequestMediaVersion);
if (isset($this->allowedMediaVersionsAndUrlValues[$requestMediaVersionFormated])) {
$this->requestMediaSiteVersion = $requestMediaVersionFormated;
$result = TRUE;
} else {
$allowedSiteKey = array_search($requestMediaVersionFormated, array_values($this->allowedMediaVersionsAndUrlValues), TRUE);
if ($allowedSiteKey !== FALSE) {
$this->requestMediaSiteVersion = $allowedSiteKey;
$result = TRUE;
}
}
}
return $result;
}
}