protected function checkModule(RouterControllerHelper $oRouter)
 {
     /**
      * Module search key is  phisical dir name ( also namespace name)
      */
     $MODULE_SEARCH_KEY = $oRouter->_module->GetSearchKey();
     $arrModules = $this->getModules();
     if (!isset($arrModules[$MODULE_SEARCH_KEY])) {
         $DEFAULT_MODULE = \RouterSettings::GetDefaultModuleName();
         if ($MODULE_SEARCH_KEY !== $DEFAULT_MODULE) {
             /**
              * try to reroute to default module
              */
             $oRouter->SetDefaultCascade(self::MODULE_LC);
             $this->checkModule($oRouter);
         } else {
             /**
              * bad. Default module does not exist
              */
             throw new \Exception("Module {$MODULE_SEARCH_KEY} does not exist or not registered.");
         }
     }
 }
 public static function BuildUrl($params)
 {
     //        self::AddDebugStatic("IN params are:" . print_r($params,true),__CLASS__);
     $URL = isset($params[self::URL]) ? $params[self::URL] : null;
     if (!isset($URL)) {
         $URL = (isset($params[self::COUNTRY_ID]) && isset($params[self::LANGUAGE_ID]) ? DIRECTORY_SEPARATOR . $params[self::COUNTRY_ID] . DIRECTORY_SEPARATOR . $params[self::LANGUAGE_ID] : "") . DIRECTORY_SEPARATOR . (isset($params[self::MODULE_LC]) ? $params[self::MODULE_LC] : \RouterSettings::GetDefaultModuleName()) . DIRECTORY_SEPARATOR . (isset($params[self::CONTROLLER_LC]) ? RouterControllerHelper::normalizeKey($params[self::CONTROLLER_LC]) : "") . DIRECTORY_SEPARATOR . (isset($params[self::ACTION_LC]) ? RouterControllerHelper::normalizeKey($params[self::ACTION_LC]) : "");
     }
     return UrlControllerHelper::addParams(array(UrlControllerHelper::URL => $URL, UrlControllerHelper::PARAMS => isset($params[self::PARAMS]) ? $params[self::PARAMS] : null));
 }