Пропустить

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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

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

Сообщение rodman » 12.08.2008 19:18

У меня появилась такая необходимость добавлять форум не из админки, а при помощи 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 ';

rodman
phpBB 1.2.0
 
Сообщения: 10
Зарегистрирован: 12.08.2008 18:52
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Палыч » 13.08.2008 0:25

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

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

Во-вторых, возможно, нужно просто очистить кеш...
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
Палыч
Просто Палыч
Просто Палыч
 
Сообщения: 9471
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 337 раз.

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

Сообщение rodman » 13.08.2008 11:37

видно, что ни одной предустановленной группе (кроме Зарегистрированных пользователей COPPA) права не присваиваются.

как это видно? какие должны быть значения в таблицах? Дело в том, что я добавлял в таблицы данные для новых форумов, аналогичных существующим форумам. И при обновлении прав доступа через админку изменения данных в таблицах _acl_users и _acl_groups не происходит, а форум становится виден. Ответьте пожалуйста поподробнее. Я новичек а работе с форумом.

rodman
phpBB 1.2.0
 
Сообщения: 10
Зарегистрирован: 12.08.2008 18:52
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Палыч » 13.08.2008 15:02

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 только на форумах. По найму не работаю.
Аватара пользователя
Палыч
Просто Палыч
Просто Палыч
 
Сообщения: 9471
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 337 раз.

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

Сообщение rodman » 13.08.2008 19:15

Палыч, спасибо за помощь!!! Я разобрался. С индексами все в порядке. дело было в кэше. Теперь при добавлении форума я чищу папку cache и все прекрасно работает.

rodman
phpBB 1.2.0
 
Сообщения: 10
Зарегистрирован: 12.08.2008 18:52
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Alive_UA » 14.08.2008 19:24

Спасибо, помогло :D
Аватара пользователя
Alive_UA
phpBB 1.0.0
 
Сообщения: 5
Зарегистрирован: 07.08.2008 20:23
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.


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

 

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Бессрочный конкурс phpBB-ориентированных материалов
FastVPS — надёжный и доступный хостинг для phpBB
Место для вашей рекламы