Example #1
0
 /**
  * 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;
     }
 }