Центр пользователя  |  Ваши сообщения  |  FAQ
Форум поддержки phpBB » phpBB 3.0.x » Сборки phpBB 3.0.x » Обсуждение сборок от BB3x.ru

Как создать разделы с форумами из списка (список.txt)?

Если у Вас возникли вопросы по сборкам, Вы можете обсудить их в этом форуме.

Сообщение 28 авг 2014, 20:38

yuriyuri писал(а):Что означает закрыть тему? Чтобы в нее больше никто не мог писать? Или что-то еще имелось в виду?

Знаете в каких случаях закрывают тему? Когда вопрос решен, если вы говорите что разработали модуль, ты лучше создать спец тему для него и придумать ему логическое название.
А тема была с вопросом, вопрос решен, вот почему я пользуюсь термином "Закрыть тему"
Mixail_fet
Пользователь
 
Сообщений: 25
Зарегистрирован:
04 янв 2013, 13:20
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.

Сообщение 28 авг 2014, 20:51

Понятно, Михаил!

Кстати, пользуясь случаем выражаю Вам Благодарность за подсказки, которые сходу ввели меня в тему! Если бы не ваши подсказки я бы долго еще соображал и ленился вникать в код.

Михаил, подскажите любезно какие таблицы (скрипты) связаны с правами, их копированием.
yuriyuri
Активный участник
 
Сообщений: 57
Зарегистрирован:
25 май 2014, 17:28
Благодарил (а): 25 раз.
Поблагодарили: 1 раз.

Сообщение 29 авг 2014, 15:54

Ес...

Кое-что надыбал интересное:

есть такая функция copy_forum_permissions(...) !!!!!!!!!!!!!!

$src_forum_id - откуда
$dest_forum_ids - массив, куда

Код: выделить все
 
function copy_forum_permissions($src_forum_id, $dest_forum_ids, $clear_dest_perms = true, $add_log = true)
{
   global $db;

   // Only one forum id specified
   if (!is_array($dest_forum_ids))
   {
      $dest_forum_ids = array($dest_forum_ids);
   }

   // Make sure forum ids are integers
   $src_forum_id = (int) $src_forum_id;
   $dest_forum_ids = array_map('intval', $dest_forum_ids);

   // No source forum or no destination forums specified
   if (empty($src_forum_id) || empty($dest_forum_ids))
   {
      return false;
   }

   // Check if source forum exists
   $sql = 'SELECT forum_name
      FROM ' . FORUMS_TABLE . '
      WHERE forum_id = ' . $src_forum_id;
   $result = $db->sql_query($sql);
   $src_forum_name = $db->sql_fetchfield('forum_name');
   $db->sql_freeresult($result);

   // Source forum doesn't exist
   if (empty($src_forum_name))
   {
      return false;
   }

   // Check if destination forums exists
   $sql = 'SELECT forum_id, forum_name
      FROM ' . FORUMS_TABLE . '
      WHERE ' . $db->sql_in_set('forum_id', $dest_forum_ids);
   $result = $db->sql_query($sql);

   $dest_forum_ids = $dest_forum_names = array();
   while ($row = $db->sql_fetchrow($result))
   {
      $dest_forum_ids[]   = (int) $row['forum_id'];
      $dest_forum_names[]   = $row['forum_name'];
   }
   $db->sql_freeresult($result);

   // No destination forum exists
   if (empty($dest_forum_ids))
   {
      return false;
   }

   // From the mysql documentation:
   // Prior to MySQL 4.0.14, the target table of the INSERT statement cannot appear
   // in the FROM clause of the SELECT part of the query. This limitation is lifted in 4.0.14.
   // Due to this we stay on the safe side if we do the insertion "the manual way"

   // Rowsets we're going to insert
   $users_sql_ary = $groups_sql_ary = array();

   // Query acl users table for source forum data
   $sql = 'SELECT user_id, auth_option_id, auth_role_id, auth_setting
      FROM ' . ACL_USERS_TABLE . '
      WHERE forum_id = ' . $src_forum_id;
   $result = $db->sql_query($sql);

   while ($row = $db->sql_fetchrow($result))
   {
      $row = array(
         'user_id'         => (int) $row['user_id'],
         'auth_option_id'   => (int) $row['auth_option_id'],
         'auth_role_id'      => (int) $row['auth_role_id'],
         'auth_setting'      => (int) $row['auth_setting'],
      );

      foreach ($dest_forum_ids as $dest_forum_id)
      {
         $users_sql_ary[] = $row + array('forum_id' => $dest_forum_id);
      }
   }
   $db->sql_freeresult($result);

   // Query acl groups table for source forum data
   $sql = 'SELECT group_id, auth_option_id, auth_role_id, auth_setting
      FROM ' . ACL_GROUPS_TABLE . '
      WHERE forum_id = ' . $src_forum_id;
   $result = $db->sql_query($sql);

   while ($row = $db->sql_fetchrow($result))
   {
      $row = array(
         'group_id'         => (int) $row['group_id'],
         'auth_option_id'   => (int) $row['auth_option_id'],
         'auth_role_id'      => (int) $row['auth_role_id'],
         'auth_setting'      => (int) $row['auth_setting'],
      );

      foreach ($dest_forum_ids as $dest_forum_id)
      {
         $groups_sql_ary[] = $row + array('forum_id' => $dest_forum_id);
      }
   }
   $db->sql_freeresult($result);

   $db->sql_transaction('begin');

   // Clear current permissions of destination forums
   if ($clear_dest_perms)
   {
      $sql = 'DELETE FROM ' . ACL_USERS_TABLE . '
         WHERE ' . $db->sql_in_set('forum_id', $dest_forum_ids);
      $db->sql_query($sql);

      $sql = 'DELETE FROM ' . ACL_GROUPS_TABLE . '
         WHERE ' . $db->sql_in_set('forum_id', $dest_forum_ids);
      $db->sql_query($sql);
   }

   $db->sql_multi_insert(ACL_USERS_TABLE, $users_sql_ary);
   $db->sql_multi_insert(ACL_GROUPS_TABLE, $groups_sql_ary);

   if ($add_log)
   {
      add_log('admin', 'LOG_FORUM_COPIED_PERMISSIONS', $src_forum_name, implode(', ', $dest_forum_names));
   }

   $db->sql_transaction('commit');

   return true;
}



Теперь надо научиться ей четко пользоваться!
yuriyuri
Активный участник
 
Сообщений: 57
Зарегистрирован:
25 май 2014, 17:28
Благодарил (а): 25 раз.
Поблагодарили: 1 раз.

СообщениеСообщение было удалено | удалил: yuriyuri | 30 авг 2014, 14:29.
Причина: А из этого важного вопроса сделал отдельную тему


Вернуться в Обсуждение сборок от BB3x.ru

Кто сейчас на форуме

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

Форум поддержки phpBB
2008 - 2017 © BB3x.ru - русская поддержка форума phpBB3
Создано на основе phpBB® Forum Software © phpBB Group
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама