Страница 1 из 1

[3.2] Изменения в расширениях по сравнению с версией 3.1

Добавлено: 01.07.2016 11:55
Борис Бердичевский
Только здесь сумел открыть тему.
Давайте заносить сюда важную информацию для разработчиков расширений, чтобы переводить расширения на 3.2.

Итак, что мной замечено.

В версии 3.1 было:

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

$username = utf8_normalize_nfc(request_var('username', '', true));
В версии 3.2 должно быть:

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

$username = utf8_clean_string($this->request->variable('username', '', true));
Полагаем, что переменная request имеется в классе в коде листенера.

Re: Изменения в расширениях по сравнению с версией 3.1

Добавлено: 01.07.2016 12:26
LavIgor
Борис Бердичевский писал(а): В версии 3.2 должно быть
Не обязательно.
request_var сейчас задаётся вот здесь и будет удалена только в phpBB 3.3.

Re: Изменения в расширениях по сравнению с версией 3.1

Добавлено: 01.07.2016 13:06
Борис Бердичевский
Ну, если будет удалена, то лучше уже сейчас заменить. А что насчёт замены utf8_normalize_nfc на utf8_clean_string? Это я опытным путём обнаружил.

Re: Изменения в расширениях по сравнению с версией 3.1

Добавлено: 01.07.2016 13:26
LavIgor
Борис Бердичевский, utf8_normalize_nfc и так вызывается при использовании $request->variable, поэтому дополнительная "обёртка" больше не нужна.

Re: Изменения в расширениях по сравнению с версией 3.1

Добавлено: 01.07.2016 13:50
Борис Бердичевский
Гм, вот кусок кода из captcha/plugins/qa:

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

	/**
	*  The actual validation
	*/
	function check_answer()
	{
		global $db, $request;

		$answer = ($this->question_strict) ? $request->variable('qa_answer', '', true) : utf8_clean_string($request->variable('qa_answer', '', true));
Отправлено спустя 4 минуты 51 секунду:
Да, utf8_clean_string в моём случае не нужно:

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

$username = $this->request->variable('username', '', true);

Re: Изменения в расширениях по сравнению с версией 3.1

Добавлено: 01.07.2016 14:00
LavIgor
Борис Бердичевский, clean используется для своих целей (например, есть поле username, а есть также username_clean).
В подробности этого вопроса не вдавался, но в Coding Guidelines сказано следующее:
phpBB offers a special method utf8_clean_string which can be used to make sure string identifiers are unique. This method uses Normalization Form Compatibility Composition (NFKC) instead of NFC and replaces similarly looking characters with a particular representative of the equivalence class. This method is currently used for usernames and group names to avoid confusion with similarly looking names.

Re: Изменения в расширениях по сравнению с версией 3.1

Добавлено: 01.07.2016 14:06
Борис Бердичевский
Мне это нужно для печати в логе. Так что не нужно применять эту функцию. А в существующем коде проверки ответа, как я понял, есть вариант сверки строгий (большие и малые буквы) и обычный -- в этом случае и применяют utf8_clean_string.

Re: [3.2] Изменения в расширениях по сравнению с версией 3.1

Добавлено: 23.01.2017 10:32
LBeaver
На оф. сайте есть хорошая тема: phpBB 3.2 Upgrade Notes for Extensions