|
Если у Вас возникли вопросы по сборкам, Вы можете обсудить их в этом форуме.
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
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
|
|
|
|
|