/** * Get URL using URL alias * @static * @param string $alias * @return false|string */ public static function getUrlByAlias($alias) { $result = rad_dbpdo::query('SELECT item_type, item_id, lang_id FROM ' . RAD . 'url_aliases WHERE alias=:alias', array('alias' => $alias)); if (empty($result['item_type'])) { return false; } $lng = rad_lang::getLangByID($result['lang_id']); rad_lang::changeLanguage($lng->lng_code); switch ($result['item_type']) { //List all supported item types here (if they don't need some special processing) case 'product': return rad_input::makeURL('alias=' . $result['item_type'] . '&p=' . $result['item_id'], false); default: return false; //For not supported item types } }
function __construct() { if ($this->request('lang')) { $previous_lang = rad_lang::getCurrentLanguage(); if (rad_lang::changeLanguage($this->request('lang'))) { //all is ok - redirecting if ($this->request('fromsite')) { $this->redirect($this->makeURL('alias=' . $this->config('mainAlias'))); } elseif (!empty($_SERVER['HTTP_REFERER'])) { $ref = $_SERVER['HTTP_REFERER']; if (mb_substr($ref, 0, mb_strlen(SITE_URL)) == SITE_URL and $this->getParamsObject() and $this->getParamsObject()->_get('returntorefferer', false)) { $this->redirect(str_replace(SITE_URL . $previous_lang . '/', SITE_URL . rad_lang::getCurrentLanguage() . '/', $ref)); } else { $this->redirect($this->makeURL('alias=' . $this->config('mainAlias'))); } } else { $this->redirect($this->makeURL('alias=' . $this->config('mainAlias'))); } } else { $this->redirect($this->makeURL('alias=' . $this->config('defaultAlias')), 'Error changing language!'); die('can\'t change language'); } } elseif ($this->request('action')) { $this->setVar('action', strtolower($this->request('action'))); switch (strtolower($this->request('action'))) { case 'adminlng': $this->changeAdminLanguage(); break; case 'contentlng': $this->changeContentLanguage(); break; case 'getjs': $this->getJS(); break; default: $this->securityHoleAlert(__FILE__, __LINE__, $this->getClassName()); break; } //switch } else { $this->securityHoleAlert(__FILE__, __LINE__, $this->getClassName()); } }