Страница 19 из 38

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 10.07.2015 20:08
LavIgor
nissin писал(а):

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

return call_user_func_array(array($this->user, 'lang'), $args);
Результат:

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

		if (isset($this->user->lang[$key]))
		{
			return $this->user->lang[$key];
		}

		return $key;
А не заденет ли такая замена текущие возможности функции lang()?

Насколько я понимаю, предлагается отказаться от замен %s и других конструкций ради сомнительного выигрыша во времени.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 10.07.2015 20:41
nissin
Продолжаем...
http://php.net/manual/ru/reference.pcre ... ifiers.php
S
В случае, если планируется многократно использовать шаблон, имеет смысл потратить немного больше времени на его анализ, чтобы уменьшить время его выполнения. В случае, если данный модификатор используется, проводится дополнительный анализ шаблона. В настоящем это имеет смысл только для "незаякоренных" шаблонов, не начинающихся с какого-либо определенного символа.
Имеет смысл для автоцензора, поскольку там preg_replace начинает кушать много времени.
Просто добавляем S к модификаторам для PREG в регулярках.
includes/functions.php

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

function get_censor_preg_expression($word, $use_unicode = true)
{
	// Unescape the asterisk to simplify further conversions
	$word = str_replace('\*', '*', preg_quote($word, '#'));

	if ($use_unicode && phpbb_pcre_utf8_support())
	{
		// Replace asterisk(s) inside the pattern, at the start and at the end of it with regexes
		$word = preg_replace(array('#(?<=[\p{Nd}\p{L}_])\*+(?=[\p{Nd}\p{L}_])#iu', '#^\*+#', '#\*+$#'), array('([\x20]*?|[\p{Nd}\p{L}_-]*?)', '[\p{Nd}\p{L}_-]*?', '[\p{Nd}\p{L}_-]*?'), $word);

		// Generate the final substitution
		$preg_expr = '#(?<![\p{Nd}\p{L}_-])(' . $word . ')(?![\p{Nd}\p{L}_-])#iuS';
	}
	else
	{
		// Replace the asterisk inside the pattern, at the start and at the end of it with regexes
		$word = preg_replace(array('#(?<=\S)\*+(?=\S)#iu', '#^\*+#', '#\*+$#'), array('(\x20*?\S*?)', '\S*?', '\S*?'), $word);

		// Generate the final substitution
		$preg_expr = '#(?<!\S)(' . $word . ')(?!\S)#iuS';
	}

	return $preg_expr;
}
Отправлено спустя 5 минут 5 секунд:
LavIgor писал(а): А не заденет ли такая замена текущие возможности функции lang()?
Эта функция используется только для шаблонов.
В настоящее время в шаблонах не используются возможности $user->lang().
Вот часть кода из lexer.php

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

		// Replace all of our language variables, {L_VARNAME}, with Twig style, {{ lang('NAME') }}
		// Appends any filters after lang()
		$code = preg_replace('#{L_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2 }}', $code);

		// Replace all of our escaped language variables, {LA_VARNAME}, with Twig style, {{ lang('NAME')|addslashes }}
		// Appends any filters after lang(), but before addslashes
		$code = preg_replace('#{LA_([a-zA-Z0-9_\.]+)(\|[^}]+?)?}#', '{{ lang(\'$1\')$2|addslashes }}', $code);

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 10.07.2015 21:00
LavIgor
nissin писал(а): В настоящее время в шаблонах не используются возможности $user->lang().
Да???
Так приведённый код - для стандартного синтаксиса phpBB, а не для нового.
Рабочий пример:

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

 {% if S_TOPIC_PREVIEW %}
    <dl>
        <dt><label for="topic_preview1">{{ lang('TOPIC_PREVIEW_DISPLAY') }}{{ lang('COLON') }}</label></dt>
        <dd>
            <label for="topic_preview1"><input type="radio" name="topic_preview" id="topic_preview1" value="1"{% if S_DISPLAY_TOPIC_PREVIEW %} checked="checked"{% endif %} /> {{ lang('YES') }}</label>
            <label for="topic_preview0"><input type="radio" name="topic_preview" id="topic_preview0" value="0"{% if not S_DISPLAY_TOPIC_PREVIEW %} checked="checked"{% endif %} /> {{ lang('NO') }}</label>
        </dd>
    </dl>
{% endif %}
Расширение Topic Preview от VSE.

Наглядно видно, что новый синтаксис расширяет возможности использования функции в шаблонах.
Т.е. можно и array вставлять, и другие параметры добавлять, насколько я понимаю.
Так зачем же рубить эти возможности на корню???

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 10.07.2015 21:32
nissin
Приведённый код работает.
Перенос кода в шаблоны противоречит концепции MVC используемой в современных фреймворках.
Поэтому array и параметры должны использоваться в Модели, но никак в Представлении.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 10.07.2015 21:39
LavIgor
nissin писал(а): Приведённый код работает.
Это не отменяет расширения стандартного синтаксиса движка для больших возможностей использования языковых переменных в шаблоне.
Лучше расширить функционал, чем отсекать то, что имеем (в данном конкретном случае).

Я давно искал способ передачи параметров в функцию lang(), ведь в новом движке широкий спектр возможностей за счёт использования этих самых параметров.

P.S. Не отказался бы от цитаты, запрещающей использовать функции с параметрами в шаблонах.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 10.07.2015 22:35
nissin
Для начала нужно знать, где вообще написано, что можно применять конструкции типа {{ lang('NO') }}.
New Template Commands in 3.1
После изучения статистики профайлера я думаю, что решение о переходе на Twig не есть хорошо для всех.
Я бы рассмотрел возможность выбора администратором форума другого(хотя бы из ветки 3.0) движка для шаблонов с сохранением синтаксиса phpBB.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 11.07.2015 3:00
xisp
nissin писал(а): я думаю, что решение о переходе на Twig не есть хорошо для всех.
Давно известно, что твиг тормоз. Как и сама симфония.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 13.07.2015 12:22
Sumanai
Обнаружил интересную особенность- если в настройках отдельной группы расширений файлов установить максимальный размер файл больше, чем установлено в настройках вложений, то вложение размером большим, чем размер, установленный в общих настройках, но меньший, чем установлено в настройках расширения файла, нельзя будет загрузить на клиентах с включенным яваскриптом, то есть всех :)
Нужно переписывать функцию в файле \assets\javascript\plupload.js

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

phpbb.plupload.uploader.bind('Error', function(up, error) {
И добавить в конфигурацию, пересылаемый клиентам, соответствующие данные.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 13.07.2015 12:27
LavIgor
Sumanai писал(а): вложение размером большим, чем размер, установленный в общих настройках, но меньший, чем установлено в настройках расширения файла, нельзя будет загрузить на клиентах с включенным яваскриптом
По-моему, это логично.
Выбирается минимальный максимум, так и должно быть.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 13.07.2015 12:40
Sumanai
LavIgor писал(а): По-моему, это логично.
Логично было бы определять по расширению файла конкретный максимум для этого файла.
LavIgor писал(а): Выбирается минимальный максимум, так и должно быть.
Так не выбирается же, а просто используется настройка из конфигурации вложений.
Если сделать обратное, то клиент будет посылать файл на сервер лишь для того, чтобы узнать, что он слишком большой.
Хотя такие простые проверки должны проверяться на клиенте.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 14.07.2015 9:31
2PiK
Не совсем ошибка, в файлах поиска

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

/phpbb/search/fulltext_mysql.php
/phpbb/search/fulltext_native.php
/phpbb/search/fulltext_postgres.php
в функции keyword_search есть события

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

search_mysql_keywords_main_query_before
search_native_keywords_count_query_before
search_postgres_keywords_main_query_before
в каждом из событий есть переменная sql_match_where, но, в search_native_keywords_count_query_before эта переменная "пустышка", т.е. она нигде в функции не используется, кроме неё такая-же пустышка там и sql_match, вместо них там используется sql_where которой нет в mysql и postgres. Поэтому при использовании этих событий возникает небольшой бардак.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 17.07.2015 19:01
Борис Бердичевский
Интересный и хитрый баг.
Если я хочу удалить сообщение, то кнопка удаления срабатывает нормально.
А вот если зайти в редактирование сообщения и пометить бокс "Удалить сообщение", то сообщает: "Вы не можете удалять сообщения в этом форуме." :roll:
С правами Администратора, правда, тема закрытая.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 03.08.2015 17:25
romeo_piter
Обнаружил проблему при переносе темы из одного раздела в другой. Судя по всему дело в аяксе.
В 60% случаев при нажатии "да" происходит рефреш темы без её переноса.
В остальных 40% все переносится хорошо.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 03.08.2015 17:43
Alecto
разве стандартный перенос выполняется через аякс? вот это новость! да и работает перенос корректно, ошибку не подтверждаю.
скорее всего какой-то баг расширения вылез.

Re: Сообщаем об ошибках phpBB 3.1.x разработчикам

Добавлено: 03.08.2015 17:47
romeo_piter
Alecto писал(а): разве стандартный перенос выполняется через аякс?
Да, наврал, нет аякса, спутал с изменением формата темы. Значит не аякс. Но проблема есть.
Рсширений, связанных с модераторскими действиями нет.
В сторону каких расширений имеет смысл копать?