ZebroidФорумПубличный разделПредложенияАрхивОчеловечивание генерируемых форумов

Очеловечивание генерируемых форумов

04 сентября 2010, 09:40
Зарегистрирован: 29 марта 2010, 17:35
Предлагаю сделать генерируемые форумы более привлекательными и человечными (ФДЛ - форум для людей). Тем более что изменения для этого нужны относительно небольшие. А именно:

1. массовое добавление аватарок к генерируемым юзерам. Можно просто указать папку с на сервере с ававтарками, чтобы оттуда они рандомно присваивались новым юзерам.

2. Добавить возможность создания веток в форуме. Такая архитектура выглядит более естественна, особенно если речь идёт о большом форуме.



10 сентября 2010, 16:37
Зарегистрирован: 26 апреля 2010, 01:51
Исправил ошибки в модуле!

В файле "/includes/acp/acp_board.php" заменить include($phpbb_root_path . 'includes\functions_zebroid.php'); на include($phpbb_root_path . 'includes/functions_zebroid.php');


1. В новой инструкции файле install.txt нужно пофиксить эту ошибку, а то она почему-то там осталась.

2. Количество сообщений у импортируемых пользователей теперь 0.

3. Еще такой косяк вылез:

- регистрация пользователей - сегодняшняя

- даты сообщений старые

То есть сообщения пользователей раньше даты их регистрации + все новые юзеры зарегены в течении минуты.

Это бросается в глаза.

4. В длинных названиях тем обрезается конец предложения прямо посреди слова по количеству символов.

Можно ли сделать так, чтобы обрезало в конце слова, пускай и не последнего.

Если несложно просьба написать, когда можно ожидать этих исправлений.

А то у меня основная работа сейчас связана как раз с оживлением форумов.




12 сентября 2010, 06:36
Зарегистрирован: 10 апреля 2012, 00:00
2. Количество сообщений у импортируемых пользователей теперь 0.

3. Еще такой косяк вылез:

- регистрация пользователей - сегодняшняя

- даты сообщений старые

То есть сообщения пользователей раньше даты их регистрации + все новые юзеры зарегены в течении минуты.

Это бросается в глаза.


Так и было раньше, это не мой косяк, точнее частично не мой. Модуль импорта использует функции добавления пользователей самого движка, потому так и получается (функция не разрешает редактировать параметры количества сообщений и даты регистрации). Хотя можно попробовать редактировать их после добавления пользователей (но это лишний запрос в БД и увеличение нагрузки на сервер). За всё время пребывания на разных форумах, никогда не залазил на страницу пользователей и не смотрел на дату регистрации и количетсво пользователей. Так что кидается в глаза это разве что админу сайта который знает как появились эти пользователи.

Постараюсь исправить к следующему апдейту (примерно среда-четверг).

4. В длинных названиях тем обрезается конец предложения прямо посреди слова по количеству символов.

Можно ли сделать так, чтобы обрезало в конце слова, пускай и не последнего.



А это уже виновата длинна поля в БД. БД обрезает длинные названия при выполнении запроса. Есть 2 выхода: увеличить длину поля для названия или перед экспортом из Зеброида по обрезать все названия.



12 сентября 2010, 09:58
Зарегистрирован: 26 апреля 2010, 01:51
1. На страницах тем показывается количество сообщений пользователя + дата регистрация и дата сообщений.

То есть эта инфа на виду.

Мне кажется самый простой вариант после импорта всех пользователей и сообщений сделать один запрос к БД, корректирующий количество сообщений + запрос корректирующий даты регистрации, то есть поставить дату их первого сообщения.

Чтобы запросы не подвисли, можно делать их только для пользователей, зарегившихся в течении дня, тогда даже на больших форумах он должен успеть проработать за 30 секунд, которые обычно ставятся на выполнение php-скрипта. Либо в цикле каждому присвоить (то есть сделать аналог курсора в Oracle).

Но вроде таблица пользователей не очень большая, а в таблице постов должен быть индекс по id пользователей, так что скорее всего можно будет двумя запросами обойтись.

2. Это понятно, в Зеброиде и делаю, просто удобнее было бы налету.

Но этот пункт некритичный в отличии от первого.



12 сентября 2010, 14:27
Зарегистрирован: 10 апреля 2012, 00:00
Мне кажется самый простой вариант после импорта всех пользователей и сообщений сделать один запрос к БД, корректирующий количество сообщений + запрос корректирующий даты регистрации, то есть поставить дату их первого сообщения.

Чтобы запросы не подвисли, можно делать их только для пользователей, зарегившихся в течении дня, тогда даже на больших форумах он должен успеть проработать за 30 секунд, которые обычно ставятся на выполнение php-скрипта. Либо в цикле каждому присвоить (то есть сделать аналог курсора в Oracle).

Но вроде таблица пользователей не очень большая, а в таблице постов должен быть индекс по id пользователей, так что скорее всего можно будет двумя запросами обойтись.


Может я уже стар, или чего-то не помню, но как это одним/двумя запросом можно выкрутится с подобной ситуации: скрипт создал 40 пользователей, почти в каждого из них разное время оставления первого сообщения и так же почти у каждого разное количество постов. Id пользователей известны.



12 сентября 2010, 17:21
Зарегистрирован: 26 апреля 2010, 01:51
Я почти не работал с MySQL, поэтому не в курсе как там со вложенными select, раньше точно были какие-то проблемы, который Oracle легко переваривал.

Основная идея - использовать IN для списка записей.

Навскидку примерно так (скорее всего неверно, уже лет десять запросы не писал):

update a

set a.date = (select min(b.date)

from a, b

where b.user_id in (список_id_через_запятую)

and a.user_id = b.user_id

)

where a.user_id in (список_id_через_запятую)

Я обычно такое через курсор делал, потому что это гарантированно не приводит к зависаниям.

Но в MySQL вроде до сих пор не сделали курсор, там цикл через php можно сделать.



13 сентября 2010, 12:01
Зарегистрирован: 10 апреля 2012, 00:00
Так не получится, он всем одну дату поставит, не думаю, что это правильный выход.



18 сентября 2010, 09:51
Зарегистрирован: 10 апреля 2012, 00:00
Готово, детали тут: viewtopic.php?f=13&t=758&p=3404#p3404