Скачать: URLName: URLs to names converter
phpBB 3.1 extension
copyright (c) 2014 c61 c61@yandex.ru http://c61.su
license http://opensource.org/licenses/gpl-license.php GNU Public License
URLName: Преобразование ссылок в их имена
Расширение предоставляет возможность преобразовать в понятный вид ссылки на:
- форум
- тему
- собщение
- профиль пользователя
и добавит возможности их оформления.
Кроме того, имеется возможность преобразования wiki-ссылок в имена соответствующих разделов, тем и т.п.
Перед установкой расширения желательно применить патч для корректного отображения url с кириллицей.
Начиная с версии 3.1.3 патч не требуется, однако, разработчики так и не довели до ума поддержку национальных доменов и некоторые wiki-ссылки (и не только) будут обработаны неверно. Патч:
1) Открыть файл /forum/includes/functions.php и сохранить его в кодировке utf-8 без BOM.
2) В /forum/includes/functions.php найти
Код: Выделить всё
$inline = ($mode == 'url') ? ')' : '';
Код: Выделить всё
$inline = (($mode == 'url') ? ')' : '') . '"`){}«»\pS\p{Pc}\p{Pd}\p{Pe}\p{Pf}\p{Po}';
Код: Выделить всё
return "[a-z]$scheme*:/{2}(?:(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+|[0-9.]+|\[[a-z0-9.]+:[a-z0-9.]+:[a-z0-9.:]+\])(?::\d*)?(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
Код: Выделить всё
return "[a-z]$scheme*:/{2}(?:(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+|[0-9.]+|\[[\pLa-z0-9.]+:[\pLa-z0-9.]+:[\pLa-z0-9.:]+\])(?::\d*)?(?:/(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
Код: Выделить всё
$inline = ($mode == 'www_url') ? ')' : '';
Код: Выделить всё
$inline = (($mode == 'www_url') ? ')' : '') . '"`){}«»\pS\p{Pc}\p{Pd}\p{Pe}\p{Pf}\p{Po}';
Код: Выделить всё
return "www\.(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+(?::\d*)?(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
Код: Выделить всё
return "www\.(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+(?::\d*)?(?:/(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
Код: Выделить всё
return "(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*(?:/(?:[a-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
Код: Выделить всё
return "(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*(?:/(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
rxu писал(а):Правки из пунктов 3 и 4 (первый пост) в ядре с 3.1.2-RC1.
Код: Выделить всё
$short_url = (strlen($url) > 55) ? substr($url, 0, 39) . ' ... ' . substr($url, -10) : $url;
Код: Выделить всё
$short_url = (utf8_strlen($url) > 55) ? utf8_substr($url, 0, 39) . ' ... ' . utf8_substr($url, -10) : $url;
Код: Выделить всё
'#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#i',
Код: Выделить всё
'#(^|[\n\t (\]>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#iu',';
Код: Выделить всё
'#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#i',
Код: Выделить всё
'#(^|[\n\t (\]>.])(' . get_preg_expression('url_inline') . ')#iu',
Код: Выделить всё
'#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#i',
Код: Выделить всё
'#(^|[\n\t (\]>])(' . get_preg_expression('www_url_inline') . ')#iu',
Код: Выделить всё
'/(^|[\n\t (>])(' . get_preg_expression('email') . ')/i',
Код: Выделить всё
'/(^|[\n\t (\]>])(' . get_preg_expression('email') . ')/iu',
Код: Выделить всё
if (!preg_match('#^' . get_preg_expression('url') . '$#i', $in) && !preg_match('#^' . get_preg_expression('www_url') . '$#i', $in))
Код: Выделить всё
if (!preg_match('#^' . get_preg_expression('url') . '$#iu', $in) && !preg_match('#^' . get_preg_expression('www_url') . '$#iu', $in))
Код: Выделить всё
if (!preg_match('#^' . get_preg_expression('url') . '$#i', $in) &&
!preg_match('#^' . get_preg_expression('www_url') . '$#i', $in))
Код: Выделить всё
if (!preg_match('#^' . get_preg_expression('url') . '$#iu', $in) &&
!preg_match('#^' . get_preg_expression('www_url') . '$#iu', $in))
Код: Выделить всё
if (preg_match('#^' . get_preg_expression('url') . '$#i', $url) ||
preg_match('#^' . get_preg_expression('www_url') . '$#i', $url) ||
preg_match('#^' . preg_quote(generate_board_url(), '#') . get_preg_expression('relative_url') . '$#i', $url))
Код: Выделить всё
if (preg_match('#^' . get_preg_expression('url') . '$#iu', $url) ||
preg_match('#^' . get_preg_expression('www_url') . '$#iu', $url) ||
preg_match('#^' . preg_quote(generate_board_url(), '#') . get_preg_expression('relative_url') . '$#iu', $url))
Патч для кириллицы может быть оформлен только как патч, никакого расширения. Без патча расширение будет работать некорректно.
P.P.S. То, что сделали с phpBB 3.1... Ранее я отслеживал процесс разработки, но глубоко не копал. А вот копнул поглубже и ужаснулся... Извращение, имхо. Занимался народ совершенно не тем, чем надо ))
Особенности версий:
1) Выдачу отладочной информации в версии 0.0.1 приделал с помощью overall_footer_copyright_append, а надо бы клеить к debug_output. rxu, неплохо бы добавить такую возможность... Потому что в некоторых стилях информация будет отображаться не там, где хотелось бы.
2) Английского перевода не делал, желающие могут сделать самостоятельно или я сам приделаю после выхода релиза.
Тема на моей тестовой площадке тынц