Уважаемые пользователи!
Напоминаем, что с 7 ноября 2020 года phpBB Group прекратила выпуск обновлений для phpBB версии 3.2.
С учетом этого, рекомендуется обновить конференции до версии 3.3.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до отдельного объявления.

Расширения - это просто!

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
im0
phpBB 1.2.0
Сообщения: 18
Стаж: 6 лет 9 месяцев
Благодарил (а): 6 раз
Поблагодарили: 4 раза

Re: Расширения - это просто!

Сообщение im0 »

Кто-нить может подсказать почему не выполняется миграция при включении расширения через phpbbcli?

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

php bin/phpbbcli.php -v --safe-mode extension:enable tatiana5/highlightfirstpost 
проверяем

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

php bin/phpbbcli.php -v --safe-mode config:get highlightfirstpost_version
[ERROR] Параметр конфигурации highlightfirstpost_version не существует
Но если включать через админку то всё ок

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

php bin/phpbbcli.php -v --safe-mode config:get highlightfirstpost_version
0.0.1
PS. Пока набирал сюда пример — разобрался: мешает --safe-mode (в безопасном режиме (без расширений),
хотя само расширение при этом включается.
Andex
phpBB 1.4.2
Сообщения: 59
Стаж: 16 лет 7 месяцев
Благодарил (а): 5 раз
Поблагодарили: 6 раз

Re: Расширения - это просто!

Сообщение Andex »

Обратил внимание, что в 3.2 и 3.3 для доступа к языковым переменным начали использовать конструкцию

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

$language->lang('LANG_KEY');
(\phpbb\language\language)

раньше в 3.1 обычно было что-то вроде

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

$user->lang['LANG_KEY']
(из \phpbb\user)

Работают, как я вижу, обе конструкции.
В чем суть нововведения? Сэкономить ресурсов, там где не надо получать данные пользователя, а просто необходим доступ к языковым переменным?
Имеет ли смысл переписывать данный код в своих расширениях?
Или может есть какие-то нюансы, о которых я не догадываюсь?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 15850
Стаж: 16 лет 6 месяцев
Откуда: Красноярск
Благодарил (а): 455 раз
Поблагодарили: 1540 раз

Re: Расширения - это просто!

Сообщение rxu »

Andex писал(а): 16.08.2020 21:33 Имеет ли смысл переписывать данный код в своих расширениях?
Имеет с прицелом на 4.0. Там массив $user->lang[] должен быть ликвидирован.
Изображение
Andex
phpBB 1.4.2
Сообщения: 59
Стаж: 16 лет 7 месяцев
Благодарил (а): 5 раз
Поблагодарили: 6 раз

Re: Расширения - это просто!

Сообщение Andex »

Кстати говоря, нашел ошибку в доках

https://area51.phpbb.com/docs/dev/3.3.x ... -extension
To load a file from an extension you need to use phpbb\language\language::add_lang() which takes the vendor + extension name as first argument and the array of language files as a second argument.

На самом деле последовательность аргументов наоборот описанное же выше было применимо к user->add_kang_ext()

И ниже они в кач-ве примера приводят правильный код

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

$language->add_lang('demo', 'acme/demo');
// or
$language->add_lang(['demo', 'demo2'], 'acme/demo');
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 15850
Стаж: 16 лет 6 месяцев
Откуда: Красноярск
Благодарил (а): 455 раз
Поблагодарили: 1540 раз

Re: Расширения - это просто!

Сообщение rxu »

Изображение
Bydlocoder
phpBB 1.4.0
Сообщения: 34
Стаж: 2 года 10 месяцев
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: Расширения - это просто!

Сообщение Bydlocoder »

В расширениях возможно указывать конструкции типа require_once? Использовать можно
Если да, то путь должен быть каким? Полным, относительным? С полным путем работает, с относительным нет.

Подскажите переменную ядра для полного пути расширения.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3033
Стаж: 13 лет 8 месяцев
Благодарил (а): 16 раз
Поблагодарили: 365 раз

Re: Расширения - это просто!

Сообщение Nekstati »

Bydlocoder, $this->phpbb_root_path . 'ext/bydlocoder/mining_farm', очевидно.

Но если делать "по правилам", то надо не инклюд, а передавать всё в конструктор как зависимость.

Или, если подключаемый файл не требует никакой инициализаци/инстанцирования, например это "классический" инклюд, который содержит несколько вспомогательных функций, то можно и без зависимостей:

Основной файл (контроллер или что там):

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

use bydlocoder\mining_farm\functions;

class controller
{
	public function hard_work()
	{
		functions::gimme_your_money();
	}
}
Подключаемый файл:

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

namespace bydlocoder\mining_farm;

class functions
{
	static public function gimme_your_money()
	{
	}
}
Bydlocoder
phpBB 1.4.0
Сообщения: 34
Стаж: 2 года 10 месяцев
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: Расширения - это просто!

Сообщение Bydlocoder »

Nekstati писал(а): 28.10.2022 17:51 Но если делать "по правилам", то надо не инклюд, а передавать всё в конструктор как зависимость.
Мне надо воспользоваться сторонней библиотекой, которая распространяется в виде .phar архива.
Вдогонку второй вопрос, ip постера сообщения откуда можно получить?

core.viewtopic_post_rowset_data - тут нет
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3033
Стаж: 13 лет 8 месяцев
Благодарил (а): 16 раз
Поблагодарили: 365 раз

Re: Расширения - это просто!

Сообщение Nekstati »

Bydlocoder, есть: $event['row']['poster_ip']
Bydlocoder
phpBB 1.4.0
Сообщения: 34
Стаж: 2 года 10 месяцев
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: Расширения - это просто!

Сообщение Bydlocoder »

Nekstati писал(а): 28.10.2022 18:00 Bydlocoder, есть: $event['row']['poster_ip']
Не,

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

{
			$rowset = $event['rowset_data'];
		$row = $event['row'];

		$rowset['poster_ip'] = $row['poster_ip'];

		$event['rowset_data'] = $rowset;
		
        echo '<pre>';
        var_dump($row['poster_ip']);
        echo '</pre>';
	}
и в итоге Null
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3033
Стаж: 13 лет 8 месяцев
Благодарил (а): 16 раз
Поблагодарили: 365 раз

Re: Расширения - это просто!

Сообщение Nekstati »

Bydlocoder, есть, $row содержит всё, что взято из БД, из таблиц posts и users
https://github.com/phpbb/phpbb/blob/4d5 ... .php#L1331
https://github.com/phpbb/phpbb/blob/4d5 ... .php#L1276
Может, прописываете это в обработчике не того события, о котором речь (core.viewtopic_post_rowset_data)
Bydlocoder
phpBB 1.4.0
Сообщения: 34
Стаж: 2 года 10 месяцев
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: Расширения - это просто!

Сообщение Bydlocoder »

Nekstati, Ага, есть, это все кеш глючил

Вернуться в «Для авторов»