[beta] Convert Local Url To Link Name

Все расширения, созданные нашим сообществом для phpBB, как находящиеся в разработке, так и прошедшие валидацию на официальном сайте phpbb.com, будут анонсированы тут. Вся техническая поддержка по этим расширениям оказывается в этом форуме.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 3 месяца
Откуда: Зеленоград
Благодарил (а): 37 раз
Поблагодарили: 39 раз

[beta] Convert Local Url To Link Name

Сообщение HAMMER663 »

Название: Convert Local Url To Link Name

Описание: Перед отправкой сообщения преобразует простые внутренние адреса тем, форумов, профилей пользователей в ссылки с названиями.
Например, преобразует
http://your_board/viewtopic(forum).php?f=1&t=1
http://your_board/faq.php#(num)
http://your_board/rules/?#rule(num)
http://wiki.wikiurl.com/Main_Page
в ссылки вида

Код: Выделить всё

[url=[i]http://your_board/viewtopic(forum).php?f=1&t=1[/i]]Топик (Форум)[/url]
[url=http://your_board/faq.php#(num)]FAQ num[/url]
[url=http://your_board/rules/?#rule(num)]Правила Пункт num[/url]
[url=http://wiki.wikiurl.com/Wiki_page]Wiki page[/url]
Совместим с модом [BETA] Board Rules (Правила конференции) от Nekstati, сконвертированным в расширение

Является аналогом [RC] Simple Url To Link Name before posting

Версия Расширения: 0.3.0

Так же в админке имеется возможность отключить преобразование ссылок.

ВНИМАНИЕ: версия из репозитория полностью устарела и не совместима с phpBB 3.3. Совместимаю версию можно скачать внизу данного сообщения.
GitHub репозиторий: https://github.com/HAMMER663/ConvertLocalUrlToLinkName


Для корректной работы конвертации ссылки в ВВ-код youtube, необходимо:
создать вв-код, например такой
Использование BBCode:

Код: Выделить всё

[youtube]{SIMPLETEXT}[/youtube]
Замена HTML

Код: Выделить всё

<object width="640" height="360"><param name="movie" value="http://www.youtube.com/v/{SIMPLETEXT}"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/{SIMPLETEXT}" type="application/x-shockwave-flash" wmode="transparent" width="525" height="400"></embed></object>
Подсказка

Код: Выделить всё

Вставка видео с YouTube: [youtube]ссылка на видео[/youtube]
===================
Вариант подправленных файлов расширения от Anvar для работы в режиме совместимости когда удалены параметры f= из url [BETA] Convert Local Url To Link Name
===================
В случае, если тип урла 'p' (т.е. ссылка на конкретный пост), текст ссылки дополнить информацией об авторе и номере поста (спасибо rxu): Re: [BETA] Convert Local Url To Link Name (Пост rxu #454977)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Перенесено из форума Бета-версии расширений для phpBB 3.1.x в форум Анонсы и поддержка расширений для phpBB 3.1.x 11.07.2015 12:48 модератором LavIgor

Аватара пользователя
Michel
phpBB 2.0.7a
Сообщения: 607
Стаж: 14 лет 6 месяцев
Откуда: Липецк
Благодарил (а): 143 раза
Поблагодарили: 74 раза

Re: [beta] Convert Local Url To Link Name

Сообщение Michel »

В FAQ ссылки не преобразуются, есть вариант подправить?
Версия форума 3.3.11

Отправлено спустя 26 минут 11 секунд:
В старых было http://your_board/faq.php#(num), а теперь http://your_board/help/faq#(num)
Не нашёл где править :?
phpBB 3.3.17 • php 8.4.14 • MySQL(i) 8.0.25-15
Расширения для phpBBСтили для phpBB
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13133
Стаж: 14 лет 11 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2394 раза

Re: [beta] Convert Local Url To Link Name

Сообщение Татьяна5 »

Навскидку:
event/listener.php

Код: Выделить всё

$faqs_url = generate_board_url() . '/faq.' . $this->php_ext;
Заменить на

Код: Выделить всё

$faqs_url = generate_board_url() . '/help/faq';
Это для варианта с включённым url rewriting
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 20 раз

Re: [beta] Convert Local Url To Link Name

Сообщение romeo_piter »

Подскажите, можно ли заставить это расширение преобразовывать
https://xxx.ru/search.php
в
"Поиск"
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13133
Стаж: 14 лет 11 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2394 раза

Re: [beta] Convert Local Url To Link Name

Сообщение Татьяна5 »

romeo_piter, надо регулярку составлять с учётом всех вариантов параметров поиска, иначе параметры те начнут отрываться от ссылки
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 20 раз

Re: [beta] Convert Local Url To Link Name

Сообщение romeo_piter »

Точно, я забыл, что может быть вставка с параметрами.
А заменять только если ссылка имеет вид как выше, а во всех остальных случаях не трогать - тоже не получится?
Аватара пользователя
Kuskow
phpBB 2.0.5
Сообщения: 467
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 46 раз

Re: [beta] Convert Local Url To Link Name

Сообщение Kuskow »

Установил новую версию phpBB 3.3.15 (была 3.2.9). И теперь при включении этого расширения вот:
Произошла ошибка phpBB при компиляции контейнера, связанная с одним из установленных расширений. По этой причине, все установленные расширения были временно отключены. Попробуйте очистить кэш конференции. Все расширения будут автоматически включены, если ошибка контейнера будет устранена. В противном случае, обратитесь на сайт официальной русской поддержки phpBB Guru для получения помощи.


Исключение: The file "/usr/www/users/navimba/ext/hammer663/ConvertLocalUrlToLinkName/config/services.yml" does not contain valid YAML: The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar at line 5 (near "- @auth").

#0 /usr/www/users/navimba/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php(117): Symfony\Component\DependencyInjection\Loader\YamlFileLoader->loadFile()
#1 /usr/www/users/navimba/phpbb/extension/di/extension_base.php(99): Symfony\Component\DependencyInjection\Loader\YamlFileLoader->load()
#2 /usr/www/users/navimba/phpbb/extension/di/extension_base.php(63): phpbb\extension\di\extension_base->load_services()
#3 /usr/www/users/navimba/vendor/symfony/dependency-injection/Compiler/MergeExtensionConfigurationPass.php(71): phpbb\extension\di\extension_base->load()
#4 /usr/www/users/navimba/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php(39): Symfony\Component\DependencyInjection\Compiler\MergeExtensionConfigurationPass->process()
#5 /usr/www/users/navimba/vendor/symfony/dependency-injection/Compiler/Compiler.php(140): Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass->process()
#6 /usr/www/users/navimba/vendor/symfony/dependency-injection/ContainerBuilder.php(789): Symfony\Component\DependencyInjection\Compiler\Compiler->compile()
#7 /usr/www/users/navimba/phpbb/di/container_builder.php(223): Symfony\Component\DependencyInjection\ContainerBuilder->compile()
#8 /usr/www/users/navimba/common.php(115): phpbb\di\container_builder->get_container()
#9 /usr/www/users/navimba/adm/index.php(23): require('/usr/www/users/...')
#10 {main}
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13133
Стаж: 14 лет 11 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2394 раза

Re: [beta] Convert Local Url To Link Name

Сообщение Татьяна5 »

search.php?keywords=contain+valid+YAML& ... sf=msgonly
Ну или скачать версию для 3.3 из первого сообщения
Аватара пользователя
Kuskow
phpBB 2.0.5
Сообщения: 467
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 46 раз

Re: [beta] Convert Local Url To Link Name

Сообщение Kuskow »

Публикация ссылки на конкретное сообщение добавляет к заголовку ник автора в скобках, если ссылка такого вида:

Код: Выделить всё

https://www.phpbbguru.net/community/viewtopic.php?p=570530#p570530
И вставка такой ссылки сродни цитате этого сообщения. Вот было бы здорово, если бы преобразование такой ссылки в текст с именем автора сопровождалось вызовом события, которое происходит при цитате. И тогда автору ссылаемого (цитируемого) сообщения пришло бы уведомление о том, что его процитировали.
Аватара пользователя
Kuskow
phpBB 2.0.5
Сообщения: 467
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 46 раз

Re: [beta] Convert Local Url To Link Name

Сообщение Kuskow »

В процессе массового перепарсинга старых сообщений (через CLI / generate_text_for_storage) столкнулся с пачкой PHP Warnings от расширения:
PHP Warning: Trying to access array offset on false in [ROOT]/ext/hammer663/convertlocalurltolinkname/event/listener.php on line 186, 188, 190
Когда расширение парсит архивные посты, в тексте которых содержатся внутренние ссылки на темы, сообщения или профили пользователей, которые за прошедшие годы были физически удалены из базы данных (битые локальные ссылки), SQL-запрос расширения к таблицам форума отрабатывает вхолостую.
В этот момент метод $this->db->sql_fetchrow($result) возвращает значение false. Из-за отсутствия проверки на успешность выборки, расширение сразу пытается прочитать данные из массива $row, что в PHP 8.x генерирует предупреждения Trying to access array offset on false.

Проблемный участок кода event/listener.php:

Код: Выделить всё

if (!empty($topic_post_id) && ($result = $this->db->sql_query($sql)))
{
    $row = $this->db->sql_fetchrow($result);
    switch ($type_url)
    {
        case 'u':
            $topic_title = $row['username']; // <-- Line 186
        break;
        case 'f':
        case 't':
        case 'p':
            if (!isset($forums_auth[$row['forum_id']])) // <-- Line 188
            {
                $forums_auth[$row['forum_id']] = $this->auth->acl_gets('f_list', 'f_read', $row['forum_id']);
            }
            if ($forums_auth[$row['forum_id']] || $row['topic_type'] == POST_GLOBAL) // <-- Line 190
            {
                $topic_title = (!empty($row['post_subject'])) ? $row['post_subject'] : $row['topic_title'];
            }
        break;
    }
    $this->db->sql_freeresult($result);
}
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13133
Стаж: 14 лет 11 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2394 раза

Re: [beta] Convert Local Url To Link Name

Сообщение Татьяна5 »

Kuskow,
Не проверяла, но должно сработать. По крайней мере, на этом участке кода

Код: Выделить всё

					if (!empty($topic_post_id) && ($result = $this->db->sql_query_limit($sql,1)))
					{
						while ($row = $this->db->sql_fetchrow($result))
						{
							switch ($type_url)
							{
								case 'u':
									$topic_title = $row['username'];
								break;
								case 'f':
								case 't':
								case 'p':
									if (!isset($forums_auth[$row['forum_id']]))
									{
										$forums_auth[$row['forum_id']] = $this->auth->acl_gets('f_list', 'f_read', $row['forum_id']);
									}
									if ($forums_auth[$row['forum_id']] || $row['topic_type'] == POST_GLOBAL)
									{
										$topic_title = (!empty($row['post_subject'])) ? $row['post_subject'] : $row['topic_title'];
									}
								break;
							}
						}
						$this->db->sql_freeresult($result);
					}
Аватара пользователя
Kuskow
phpBB 2.0.5
Сообщения: 467
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 46 раз

Re: [beta] Convert Local Url To Link Name

Сообщение Kuskow »

Татьяна5, спасибо. Я-то у себя исправил, там нужно было в трёх местах. Это я запротоколировал, так сказать, для будущих поколений.

Вернуться в «Анонсы и поддержка расширений для phpBB»