Логины на кириллице и генерация ЧПУ

Возникла необходимость в использовании логинов на кириллице.
Плагин делал все отлично, но столкнулись с проблемой:
Если зарегистрировать юзера «Трололошка», то потом не получиться создать юзера «Trololoshka», так как ЧПУ /profile/trololoshka/ будет зарезервировано под пользователя «Трололошка».
В итоге вопрос быстро и оперативно был решен (спасибо bobo ).

Нужно всего лишь вырезать транслитерацию и mb_strtolower.

Открываем /plugins/anynames/classes/modules/domain/Domain.class.php и заменяем функцию
public function SetValidDomain($sUserLogin) {
        $sDomain = mb_strtolower($sUserLogin, 'UTF-8');
        if ($sDomain == 'www')
            return '3doubleyou';

        $aReplace = array('а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' =>
        'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'ы' => 'i', 'э' => 'e', 'ё' => "yo", 'х' => "h", 'ц' =>
        "ts", 'ч' => "ch", 'ш' => "sh", 'щ' => "shch", 'ъ' => "", 'ь' => "", 'ю' => "yu", 'я' => "ya", 'Ъ' => "", " " => "-", "_" => "-");

        $sDomain = strtr($sDomain, $aReplace);
        if (!preg_match('/^[a-z0-9]{1}[a-z0-9]+[-]{0,1}[a-z0-9]+[a-z0-9]{1}$/', $sDomain))
            $sDomain = ereg_replace("[^a-z0-9]", "", $sDomain);
        return $sDomain;
    }

на вот такую
public function SetValidDomain($sUserLogin) {
        return preg_replace("[^а-яА-Яa-zA-Z0-9]", "", $sUserLogin);

    }


На всякий случай чистим кеш.

В результате получаем желаемые ЧПУ для юзеров:
LiveStreet -> /profile/LiveStreet/
Бармалей -> /profile/Бармалей/
Сиськотряс Мыкыта -> /profile/Сиськотряс%20Мыкыта/

Совместимость с поддоменами для юзеров не провералась.

Если кому пригодилось — можете юзеру bobo донейтнуть на пиво.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.