Автоматическое добавление форума

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

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

Автоматическое добавление форума

Сообщение rodman »

У меня появилась такая необходимость добавлять форум не из админки, а при помощи php-скрипта с sql-запросами.
Новые форумы нормально создаются в нужном месте, видны в админке, но они не видны в списке форумов. Если в админке ставишь права доступа, форум становится виден. Но это не устраивает. Нужно, чтобы форум полностью добавлялся php-скриптом и был виден в списке.
Я нашел 2 таблицы, в которых прописаны права к форумам: _acl_users и _acl_groups, но добавление туда данных для новых форумов, аналогичных существующим форумам, ничего не дает. Помогите разобраться с проблемой. Может права доступа лежат не только в таблицах _acl_users и _acl_groups?
Ниже код добавления форума (все запросы правильно выполняются и данные добавляются в нужные таблицы):

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

// добавление форума
// 664 это parent_id
$sql = "INSERT INTO phpbb_forums VALUES ('', 664, '$left_id', '$right_id', '', '$title','', '', 7, '', '', '', 0, '', '', '', '', 7, '', 0, 1, 0, 0, 0, 0, 0, 0, '', 0, '', '', 34, 1, 1, 1, 0, 0, 0, 0, 0, 0)";
// групповые разрешения
$sql = "INSERT INTO phpbb_acl_groups VALUES (40, '$forum_id', 0, 14, 0)";
$sql = "INSERT INTO phpbb_acl_groups VALUES (39, '$forum_id', 0, 15, 0)";
$sql = "INSERT INTO phpbb_acl_groups VALUES (41, '$forum_id', 0, 14, 0)";
$sql = "INSERT INTO phpbb_acl_groups VALUES (37, '$forum_id', 0, 17, 0)";
$sql = "INSERT INTO phpbb_acl_groups VALUES (42, '$forum_id', 0, 19, 0)";
$sql = "INSERT INTO phpbb_acl_groups VALUES (38, '$forum_id', 0, 21, 0)";
$sql = "INSERT INTO phpbb_acl_groups VALUES (3, '$forum_id', 0, 14, 0)";
$sql = "INSERT INTO phpbb_acl_groups VALUES (36, '$forum_id', 0, 14, 0)";
// юзерские разрешения
$sql9 = "INSERT INTO phpbb_acl_users VALUES (58, '$forum_id', 26, 0, 1)";
$sql10 = "INSERT INTO phpbb_acl_users VALUES (58, '$forum_id', 1, 0, 1)";
$sql11 = "INSERT INTO phpbb_acl_users VALUES (58, '$forum_id', 2, 0, 1)";
$sql12 = "INSERT INTO phpbb_acl_users VALUES (58, '$forum_id', 0, 15, 0)";
$sql13 = "INSERT INTO phpbb_acl_users VALUES (58, '$forum_id', 0, 11, 0)";
// left_id and right_id 
$sql = 'UPDATE phpbb_forums SET left_id = left_id + 2, right_id = right_id + 2 WHERE parent_id!=664 AND left_id!=1 ';
$sql = 'UPDATE phpbb_forums SET right_id = right_id + 2 WHERE left_id=1 ';
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Автоматическое добавление форума

Сообщение Палыч »

Теме место скорее в форуме для авторов. Перенесено.

По сабжу...
Из того, что здесь представлено, видно, что ни одной предустановленной группе (кроме Зарегистрированных пользователей COPPA) права не присваиваются. Отсюда может быть первый вывод: суммирование прав выдаёт НИКОГДА. Наример, пользователь из группы ID=36 является одновременно и пользователем группы Зарегистрированные пользователи (ID=2), где у него нет права. Можно было поробовать сделать трассировку права и отследить результат.

Во-вторых, возможно, нужно просто очистить кеш...
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
rodman
phpBB 1.2.0
Сообщения: 10
Стаж: 18 лет 1 месяц

Re: Автоматическое добавление форума

Сообщение rodman »

видно, что ни одной предустановленной группе (кроме Зарегистрированных пользователей COPPA) права не присваиваются.
как это видно? какие должны быть значения в таблицах? Дело в том, что я добавлял в таблицы данные для новых форумов, аналогичных существующим форумам. И при обновлении прав доступа через админку изменения данных в таблицах _acl_users и _acl_groups не происходит, а форум становится виден. Ответьте пожалуйста поподробнее. Я новичек а работе с форумом.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Автоматическое добавление форума

Сообщение Палыч »

rodman писал(а):как это видно?
Существует шесть предустановленных групп (таблица _grups) c ID = 1,2,3,4,5,6 (гости, зарегистрированные пользователи, зарегистрированные пользователи COPPA, супермодераторы, администраторы, боты)
Все остальные группы, созданные вами, имеют следующие (автоинкремент) значения ID
Вы же добавляете (в вашем примере) права группам с ID=3,36,37,38,39,40,41,42
rodman писал(а): И при обновлении прав доступа через админку изменения данных в таблицах _acl_users и _acl_groups не происходит
Такой "видимый" эффект теоретически возможен, например, если вы изменили данные напрямую, а потом аналогично изменили их через админку (то есть запросы к базе скриптами форума были сделаны, но они изменили значения на точно такие же 5 на 5, 15 на 15 и т.д., то есть "видимого" изменения не произошло).
rodman писал(а): а форум становится виден.
Палыч писал(а):Во-вторых, возможно, нужно просто очистить кеш...
кешируются не только файлы стиля, но и запросы к базе. Вы открыли индекс (главную страницу), в кеше уже сохранились запросы к базе для индекса, далее вы напрямую (своим скриптом) меняете значение полей в базе, но функционал форума об этом не знает, поэтому при переходе на индекс вызывается сохранённая в кеше старница, так как с точки зрения движка форума, на ней ничего не изменилось. А при заходе в админку вновь делаются запросы для формирования списка форумов из базы, но там они уже есть, поэтому в админке они видны. "Обновив", по вашим словам, права доступа, вы тем самым заставляете движок форума учесть, что состояние базы данных изменилось, то есть при вызове индекса страница формируется заново.
rodman писал(а):какие должны быть значения в таблицах?
ну это уж сами смотрите, вам виднее, что вы хотите добиться.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
rodman
phpBB 1.2.0
Сообщения: 10
Стаж: 18 лет 1 месяц

Re: Автоматическое добавление форума

Сообщение rodman »

Палыч, спасибо за помощь!!! Я разобрался. С индексами все в порядке. дело было в кэше. Теперь при добавлении форума я чищу папку cache и все прекрасно работает.
Аватара пользователя
Alive_UA
phpBB 1.0.0
Сообщения: 3
Стаж: 18 лет 1 месяц

Re: Автоматическое добавление форума

Сообщение Alive_UA »

Спасибо, помогло :D

Вернуться в «Для авторов (phpBB 3.0.x)»