View all posts in Topic

Обсуждение новой системы расширения функциональности phpBB 4.0-dev, разработки новых расширений.
Аватара пользователя
Татьяна5
Сообщения: 570
Зарегистрирован: 02 фев 2014, 15:05

View all posts in Topic

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

rxu, там событий выше нужной строки нет

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

View all posts in Topic

Сообщение rxu »

Татьяна5, просто неясно, почему именно такое место расположения

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

// Make sure $start is set to the last page if it exceeds the amount
Ощущение, что случайно выбрано, тем более, что $config['posts_per_page'] первый раз встречается выше, в строке 366.
Давайте посмотрим на выбор места получше, чтобы и для других задач было применимо.

Аватара пользователя
HAMMER663
Сообщения: 123
Зарегистрирован: 22 янв 2014, 09:23
Откуда: Москва
Github repo: https://github.com/HAMMER663

View all posts in Topic

Сообщение HAMMER663 »

Вот в эту функцию validate_start нельзя событие как-то добавить? Конечно это конкретно под данный случай. В общем я пока еще не до конца разобрался с этими событиями :oops:

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

View all posts in Topic

Сообщение rxu »

Пока смотрю, может, и без доп. события как-то обойтись. @pagination должно быть возможно подключить сервисом, тогда можно переопределить всё, что нужно, в существующих событиях.

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

View all posts in Topic

Сообщение rxu »

В config/services.yml добавьте

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

            - @pagination
далее в список параметров конструктора в слушателе (соблюдаем тот же порядок, что и в конфиге)

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

\phpbb\pagination $pagination
и там же в конструкторе присваиваем

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

$this->pagination = $pagination;
После этого в слушателе можно переопределять и сам $start, и его валидатор вот так

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

$start = $this->pagination->validate_start($start, $this->config['posts_per_page'], $total_posts);
ну и параметр конфигурации тоже

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

$this->config['posts_per_page'] = 200;
Главное - выбрать правильное событие, возможно, core.viewtopic_get_post_data подойдет. Хотя, к этому моменту список постов уже отобран. Возможно, действительно нужно более раннее событие. Например, сразу после

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

// Go ahead and pull all data for this topic
$sql = 'SELECT p.post_id
	FROM ' . POSTS_TABLE . ' p' . (($join_user_sql[$sort_key]) ? ', ' . USERS_TABLE . ' u': '') . "
	WHERE p.topic_id = $topic_id
		AND " . $phpbb_content_visibility->get_visibility_sql('post', $forum_id, 'p.') . "
		" . (($join_user_sql[$sort_key]) ? 'AND u.user_id = p.poster_id': '') . "
		$limit_posts_time
	ORDER BY $sql_sort_order";

Аватара пользователя
Татьяна5
Сообщения: 570
Зарегистрирован: 02 фев 2014, 15:05

View all posts in Topic

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

rxu писал(а):Ощущение, что случайно выбрано
Это из инструкции к моду
Подходит любое место с 405 (чуть выше рассчитывается $total_posts) до 604 строки (605 - генерируется пагинация)

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

$pagination->generate_template_pagination($base_url, 'pagination', 'start', $total_posts, $config['posts_per_page'], $start);
rxu писал(а):Например, сразу после

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

// Go ahead and pull all data for this topic
$sql = 'SELECT p.post_id
   FROM ' . POSTS_TABLE . ' p' . (($join_user_sql[$sort_key]) ? ', ' . USERS_TABLE . ' u': '') . "
   WHERE p.topic_id = $topic_id
      AND " . $phpbb_content_visibility->get_visibility_sql('post', $forum_id, 'p.') . "
      " . (($join_user_sql[$sort_key]) ? 'AND u.user_id = p.poster_id': '') . "
      $limit_posts_time
   ORDER BY $sql_sort_order";
964 строка, на пагинацию то событие не повлияет (или её можно заново сгенерировать в слушателе?)

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

View all posts in Topic

Сообщение rxu »

Думаю можно генерировать, через объект pagination, о чем я писал выше.

Аватара пользователя
rxu
Сообщения: 1125
Зарегистрирован: 21 янв 2014, 21:20
Откуда: Krasnoyarsk
Github repo: https://github.com/rxu
Контактная информация:

View all posts in Topic

Сообщение rxu »

Если у кого-то есть возможность проверить это - проверьте плиз, я пока не смогу.
если сработает - сделаю ПР на событие.

Аватара пользователя
HAMMER663
Сообщения: 123
Зарегистрирован: 22 янв 2014, 09:23
Откуда: Москва
Github repo: https://github.com/HAMMER663

View all posts in Topic

Сообщение HAMMER663 »

Дома вечером смогу проверить

Аватара пользователя
HAMMER663
Сообщения: 123
Зарегистрирован: 22 янв 2014, 09:23
Откуда: Москва
Github repo: https://github.com/HAMMER663

View all posts in Topic

Сообщение HAMMER663 »

Сервис - @pagination я вставил, но мод отказывается работать.

Ответить