/** * Return URL of current route * * @access public * @param array $args * @return string * @sicne 1.0.0-alpha * @version 1.0.0-alpha */ public function url(array $args = []) { $aTemp = []; $sRawURL = $this->rawURL; preg_match_all('/\\{[a-zA-Z0-9_]*\\}/', $sRawURL, $aTemp); $GET_variables = $aTemp[0]; unset($aTemp); if (count($GET_variables) > 0) { foreach ($GET_variables as $mValue) { $sVaName = str_replace(["{", "}"], "", $mValue); if (isset($args[$sVaName])) { $sReplaceTo = $args[$sVaName]; unset($args[$sVaName]); } else { $sReplaceTo = NULL; } $sRawURL = str_replace($mValue, $sReplaceTo, $sRawURL); } } $sReplacedURL = str_replace(['(', ')'], ['', ''], $sRawURL); $sURL = rtrim($sReplacedURL, '/'); if (!empty($args)) { foreach ($args as $sKey => $sValue) { if (!empty($sValue)) { Router::addAttrToURL($sURL, $sKey, $sValue); } } } $sDefaultLang = Router::getLang(); $sLang = Helper\Arrays::get($args, 'lang', $sDefaultLang); $aLangs = Config::get('base.languages'); $sFirstLang = array_shift($aLangs); if ($sLang == $sFirstLang) { return Router::getBase() . $sURL; } else { return Router::getBase() . '/' . $sLang . $sURL; } }