torrentpier/admin/admin_extensions.php
Roman Kelesidis bf7fea1f20
Added demo mode 📺 (#1399)
* Added demo mode 📺

* Updated

* Update main.php

* Updated

* Updated

* Update admin_cron.php

* Update admin_phpinfo.php

* Updated

* Update admin_forums.php

* Update admin_extensions.php

* Update admin_ug_auth.php

* Update index.php

* Update admin_phpinfo.php

* Update admin_forums.php

* Updated

* Update admin_extensions.php

* Update register.php

* Updated

* Update mysql.sql

* Updated

* Update demo_mode.php

* Update demo_mode.php

* Update demo_mode.php

* Updated

* Update demo_mode.php

* Update demo_mode.php

* Update demo_mode.php

* Update demo_mode.php

* Update mysql.sql

* Update mysql.sql

* Update demo_mode.php

* Update admin_cron.php

* Update admin_phpinfo.php

* Revert "Update mysql.sql"

This reverts commit d2ec089d8f.

* Revert "Update mysql.sql"

This reverts commit dd7a584c47.

* Update mysql.sql

* Update demo_mode.php

* Updated

* Update usercp_viewprofile.tpl

* Update demo_mode.php

* Update main.php

* Update demo_mode.php

* Updated

* Update admin_cron.php

* Update admin_cron.php

* Update edit_user_profile.php

* Update CHANGELOG.md

* Update viewtopic.tpl

* Update CHANGELOG.md
2024-02-12 22:30:32 +07:00

678 lines
24 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2024 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
if (!empty($setmodules)) {
$filename = basename(__FILE__);
$module['ATTACHMENTS']['EXTENSION_CONTROL'] = $filename . '?mode=extensions';
$module['ATTACHMENTS']['EXTENSION_GROUP_MANAGE'] = $filename . '?mode=groups';
return;
}
require __DIR__ . '/pagestart.php';
function update_attach_extensions()
{
$GLOBALS['datastore']->update('attach_extensions');
}
register_shutdown_function('update_attach_extensions');
if (($attach_config['upload_dir'][0] == '/') || (($attach_config['upload_dir'][0] != '/') && ($attach_config['upload_dir'][1] == ':'))) {
$upload_dir = $attach_config['upload_dir'];
} else {
$upload_dir = BB_ROOT . $attach_config['upload_dir'];
}
include ATTACH_DIR . '/includes/functions_selects.php';
// Init Vars
$types_download = array(INLINE_LINK, PHYSICAL_LINK);
$modes_download = array('inline', 'physical');
$types_category = array(IMAGE_CAT);
$modes_category = array($lang['CATEGORY_IMAGES']);
$size = get_var('size', '');
$mode = get_var('mode', '');
$e_mode = get_var('e_mode', '');
$error = false;
$add_forum = isset($_POST['add_forum']);
$delete_forum = isset($_POST['del_forum']);
$submit = isset($_POST['submit']);
// Check for demo mode
if (IN_DEMO_MODE && ($submit || $add_forum || $delete_forum)) {
bb_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
// Get Attachment Config
$attach_config = [];
$sql = 'SELECT * FROM ' . BB_ATTACH_CONFIG;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not query attachment information');
}
while ($row = DB()->sql_fetchrow($result)) {
$attach_config[$row['config_name']] = trim($row['config_value']);
}
DB()->sql_freeresult($result);
// Extension Management
if ($submit && $mode == 'extensions') {
// Change Extensions ?
$extension_change_list = get_var('extension_change_list', array(0));
$extension_explain_list = get_var('extension_explain_list', array(''));
$group_select_list = get_var('group_select', array(0));
// Generate correct Change List
$extensions = [];
for ($i = 0, $iMax = count($extension_change_list); $i < $iMax; $i++) {
$extensions['_' . $extension_change_list[$i]]['comment'] = $extension_explain_list[$i];
$extensions['_' . $extension_change_list[$i]]['group_id'] = (int)$group_select_list[$i];
}
$sql = 'SELECT * FROM ' . BB_EXTENSIONS . ' ORDER BY ext_id';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not get extension informations #1');
}
$num_rows = DB()->num_rows($result);
$extension_row = DB()->sql_fetchrowset($result);
DB()->sql_freeresult($result);
if ($num_rows > 0) {
for ($i = 0, $iMax = count($extension_row); $i < $iMax; $i++) {
if ($extension_row[$i]['comment'] != $extensions['_' . $extension_row[$i]['ext_id']]['comment'] || (int)$extension_row[$i]['group_id'] != (int)$extensions['_' . $extension_row[$i]['ext_id']]['group_id']) {
$sql_ary = array(
'comment' => (string)$extensions['_' . $extension_row[$i]['ext_id']]['comment'],
'group_id' => (int)$extensions['_' . $extension_row[$i]['ext_id']]['group_id']
);
$sql = 'UPDATE ' . BB_EXTENSIONS . ' SET ' . DB()->build_array('UPDATE', $sql_ary) . '
WHERE ext_id = ' . (int)$extension_row[$i]['ext_id'];
if (!DB()->sql_query($sql)) {
bb_die('Could not update extension informations');
}
}
}
}
// Delete Extension?
$extension_id_list = get_var('extension_id_list', array(0));
$extension_id_sql = implode(', ', $extension_id_list);
if ($extension_id_sql != '') {
$sql = 'DELETE FROM ' . BB_EXTENSIONS . ' WHERE ext_id IN (' . $extension_id_sql . ')';
if (!$result = DB()->sql_query($sql)) {
bb_die('Could not delete extensions');
}
}
// Add Extension ?
$extension = get_var('add_extension', '');
$extension_explain = get_var('add_extension_explain', '');
$extension_group = get_var('add_group_select', 0);
$add = isset($_POST['add_extension_check']);
if ($extension != '' && $add) {
$template->assign_vars(array(
'ADD_EXTENSION' => $extension,
'ADD_EXTENSION_EXPLAIN' => $extension_explain,
));
if (!$error) {
// check extension
$sql = 'SELECT extension FROM ' . BB_EXTENSIONS;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not query extensions');
}
$row = DB()->sql_fetchrowset($result);
$num_rows = DB()->num_rows($result);
DB()->sql_freeresult($result);
if ($num_rows > 0) {
for ($i = 0; $i < $num_rows; $i++) {
if (strtolower(trim($row[$i]['extension'])) == strtolower(trim($extension))) {
$error = true;
if (isset($error_msg)) {
$error_msg .= '<br />';
}
$error_msg .= sprintf($lang['EXTENSION_EXIST'], strtolower(trim($extension)));
}
}
}
if (!$error) {
$sql_ary = array(
'group_id' => (int)$extension_group,
'extension' => (string)strtolower($extension),
'comment' => (string)$extension_explain
);
$sql = 'INSERT INTO ' . BB_EXTENSIONS . ' ' . DB()->build_array('INSERT', $sql_ary);
if (!DB()->sql_query($sql)) {
bb_die('Could not add extension');
}
}
}
}
if (!$error) {
bb_die($lang['ATTACH_CONFIG_UPDATED'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_ATTACH_CONFIG'], '<a href="admin_extensions.php?mode=extensions">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
}
}
if ($mode == 'extensions') {
// Extensions
$template->assign_vars(array(
'TPL_ATTACH_EXTENSIONS' => true,
'S_CANCEL_ACTION' => 'admin_extensions.php?mode=extensions',
'S_ATTACH_ACTION' => 'admin_extensions.php?mode=extensions',
));
if ($submit) {
$template->assign_vars(array(
'S_ADD_GROUP_SELECT' => group_select('add_group_select', $extension_group))
);
} else {
$template->assign_vars(array(
'S_ADD_GROUP_SELECT' => group_select('add_group_select'))
);
}
$sql = 'SELECT * FROM ' . BB_EXTENSIONS . ' ORDER BY group_id';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not get extension informations #2');
}
$extension_row = DB()->sql_fetchrowset($result);
$num_extension_row = DB()->num_rows($result);
DB()->sql_freeresult($result);
if ($num_extension_row > 0) {
$extension_row = sort_multi_array($extension_row, 'group_id');
for ($i = 0; $i < $num_extension_row; $i++) {
if ($submit) {
$template->assign_block_vars('extension_row', array(
'EXT_ID' => $extension_row[$i]['ext_id'],
'EXTENSION' => $extension_row[$i]['extension'],
'EXTENSION_EXPLAIN' => $extension_explain_list[$i],
'S_GROUP_SELECT' => group_select('group_select[]', $group_select_list[$i]))
);
} else {
$template->assign_block_vars('extension_row', array(
'EXT_ID' => $extension_row[$i]['ext_id'],
'EXTENSION' => $extension_row[$i]['extension'],
'EXTENSION_EXPLAIN' => $extension_row[$i]['comment'],
'S_GROUP_SELECT' => group_select('group_select[]', $extension_row[$i]['group_id']))
);
}
}
}
}
// Extension Groups
if ($submit && $mode == 'groups') {
// Change Extension Groups ?
$group_change_list = get_var('group_change_list', array(0));
$extension_group_list = get_var('extension_group_list', array(''));
$group_allowed_list = get_var('allowed_list', array(0));
$download_mode_list = get_var('download_mode_list', array(0));
$category_list = get_var('category_list', array(0));
$upload_icon_list = get_var('upload_icon_list', array(''));
$filesize_list = get_var('max_filesize_list', array(0));
$size_select_list = get_var('size_select_list', array(''));
$allowed_list = [];
foreach ($group_allowed_list as $iValue) {
for ($j = 0, $jMax = count($group_change_list); $j < $jMax; $j++) {
if ($iValue == $group_change_list[$j]) {
$allowed_list[$j] = 1;
}
}
}
for ($i = 0, $iMax = count($group_change_list); $i < $iMax; $i++) {
$allowed = isset($allowed_list[$i]) ? 1 : 0;
$filesize_list[$i] = ($size_select_list[$i] == 'kb') ? round($filesize_list[$i] * 1024) : (($size_select_list[$i] == 'mb') ? round($filesize_list[$i] * 1048576) : $filesize_list[$i]);
$sql_ary = array(
'group_name' => (string)$extension_group_list[$i],
'cat_id' => (int)$category_list[$i],
'allow_group' => (int)$allowed,
'download_mode' => (int)$download_mode_list[$i],
'upload_icon' => (string)$upload_icon_list[$i],
'max_filesize' => (int)$filesize_list[$i]
);
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . ' SET ' . DB()->build_array('UPDATE', $sql_ary) . '
WHERE group_id = ' . (int)$group_change_list[$i];
if (!DB()->sql_query($sql)) {
bb_die('Could not update extension groups informations');
}
}
// Delete Extension Groups
$group_id_list = get_var('group_id_list', array(0));
$group_id_sql = implode(', ', $group_id_list);
if ($group_id_sql != '') {
$sql = 'DELETE
FROM ' . BB_EXTENSION_GROUPS . '
WHERE group_id IN (' . $group_id_sql . ')';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not delete extension groups');
}
// Set corresponding Extensions to a pending Group
$sql = 'UPDATE ' . BB_EXTENSIONS . '
SET group_id = 0
WHERE group_id IN (' . $group_id_sql . ')';
if (!$result = DB()->sql_query($sql)) {
bb_die('Could not assign extensions to pending group');
}
}
// Add Extensions?
$extension_group = get_var('add_extension_group', '');
$download_mode = get_var('add_download_mode', 0);
$cat_id = get_var('add_category', 0);
$upload_icon = get_var('add_upload_icon', '');
$filesize = get_var('add_max_filesize', 0);
$size_select = get_var('add_size_select', '');
$is_allowed = isset($_POST['add_allowed']) ? 1 : 0;
$add = isset($_POST['add_extension_group_check']);
if ($extension_group != '' && $add) {
// check Extension Group
$sql = 'SELECT group_name FROM ' . BB_EXTENSION_GROUPS;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not query extension groups table');
}
$row = DB()->sql_fetchrowset($result);
$num_rows = DB()->num_rows($result);
DB()->sql_freeresult($result);
if ($num_rows > 0) {
for ($i = 0; $i < $num_rows; $i++) {
if ($row[$i]['group_name'] == $extension_group) {
$error = true;
if (isset($error_msg)) {
$error_msg .= '<br />';
}
$error_msg .= sprintf($lang['EXTENSION_GROUP_EXIST'], $extension_group);
}
}
}
if (!$error) {
$filesize = ($size_select == 'kb') ? round($filesize * 1024) : (($size_select == 'mb') ? round($filesize * 1048576) : $filesize);
$sql_ary = array(
'group_name' => (string)$extension_group,
'cat_id' => (int)$cat_id,
'allow_group' => (int)$is_allowed,
'download_mode' => (int)$download_mode,
'upload_icon' => (string)$upload_icon,
'max_filesize' => (int)$filesize,
'forum_permissions' => ''
);
$sql = 'INSERT INTO ' . BB_EXTENSION_GROUPS . ' ' . DB()->build_array('INSERT', $sql_ary);
if (!DB()->sql_query($sql)) {
bb_die('Could not add extension group');
}
}
}
if (!$error) {
bb_die($lang['ATTACH_CONFIG_UPDATED'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_ATTACH_CONFIG'], '<a href="admin_extensions.php?mode=groups">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
}
}
if ($mode == 'groups') {
// Extension Groups
if (!$size && !$submit) {
$max_add_filesize = $attach_config['max_filesize'];
$size = ($max_add_filesize >= 1048576) ? 'mb' : (($max_add_filesize >= 1024) ? 'kb' : 'b');
}
if ($max_add_filesize >= 1048576) {
$max_add_filesize = round($max_add_filesize / 1048576 * 100) / 100;
} elseif ($max_add_filesize >= 1024) {
$max_add_filesize = round($max_add_filesize / 1024 * 100) / 100;
}
$viewgroup = get_var(POST_GROUPS_URL, 0);
$template->assign_vars(array(
'TPL_ATTACH_EXTENSION_GROUPS' => true,
'ADD_GROUP_NAME' => $extension_group ?? '',
'MAX_FILESIZE' => $max_add_filesize,
'S_FILESIZE' => size_select('add_size_select', $size),
'S_ADD_DOWNLOAD_MODE' => download_select('add_download_mode'),
'S_SELECT_CAT' => category_select('add_category'),
'S_CANCEL_ACTION' => 'admin_extensions.php?mode=groups',
'S_ATTACH_ACTION' => 'admin_extensions.php?mode=groups',
));
$sql = 'SELECT * FROM ' . BB_EXTENSION_GROUPS;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not get extension group informations');
}
$extension_group = DB()->sql_fetchrowset($result);
$num_extension_group = DB()->num_rows($result);
DB()->sql_freeresult($result);
for ($i = 0; $i < $num_extension_group; $i++) {
// Format the filesize
if (!$extension_group[$i]['max_filesize']) {
$extension_group[$i]['max_filesize'] = $attach_config['max_filesize'];
}
$size_format = ($extension_group[$i]['max_filesize'] >= 1048576) ? 'mb' : (($extension_group[$i]['max_filesize'] >= 1024) ? 'kb' : 'b');
if ($extension_group[$i]['max_filesize'] >= 1048576) {
$extension_group[$i]['max_filesize'] = round($extension_group[$i]['max_filesize'] / 1048576 * 100) / 100;
} elseif ($extension_group[$i]['max_filesize'] >= 1024) {
$extension_group[$i]['max_filesize'] = round($extension_group[$i]['max_filesize'] / 1024 * 100) / 100;
}
$s_allowed = ($extension_group[$i]['allow_group'] == 1) ? 'checked' : '';
$template->assign_block_vars('grouprow', array(
'GROUP_ID' => $extension_group[$i]['group_id'],
'EXTENSION_GROUP' => $extension_group[$i]['group_name'],
'UPLOAD_ICON' => $extension_group[$i]['upload_icon'],
'S_ALLOW_SELECTED' => $s_allowed,
'S_SELECT_CAT' => category_select('category_list[]', $extension_group[$i]['group_id']),
'S_DOWNLOAD_MODE' => download_select('download_mode_list[]', $extension_group[$i]['group_id']),
'S_FILESIZE' => size_select('size_select_list[]', $size_format),
'MAX_FILESIZE' => $extension_group[$i]['max_filesize'],
'CAT_BOX' => ($viewgroup == $extension_group[$i]['group_id']) ? '-' : '+',
'U_VIEWGROUP' => ($viewgroup == $extension_group[$i]['group_id']) ? 'admin_extensions.php?mode=groups' : 'admin_extensions.php?mode=groups&' . POST_GROUPS_URL . '=' . $extension_group[$i]['group_id'],
'U_FORUM_PERMISSIONS' => "admin_extensions.php?mode=$mode&amp;e_mode=perm&amp;e_group=" . $extension_group[$i]['group_id'],
));
if ($viewgroup && $viewgroup == $extension_group[$i]['group_id']) {
$sql = 'SELECT comment, extension FROM ' . BB_EXTENSIONS . ' WHERE group_id = ' . (int)$viewgroup;
if (!$result = DB()->sql_query($sql)) {
bb_die('Could not get extension informations #3');
}
$extension = DB()->sql_fetchrowset($result);
$num_extension = DB()->num_rows($result);
DB()->sql_freeresult($result);
for ($j = 0; $j < $num_extension; $j++) {
$template->assign_block_vars('grouprow.extensionrow', array(
'EXPLANATION' => $extension[$j]['comment'],
'EXTENSION' => $extension[$j]['extension'])
);
}
}
}
}
if ($e_mode == 'perm') {
$group = get_var('e_group', 0);
if (isset($_POST['close_perm'])) {
$e_mode = '';
}
}
// Add Forums
if ($add_forum && $e_mode == 'perm' && $group) {
$add_forums_list = get_var('entries', array(0));
$add_all_forums = false;
foreach ($add_forums_list as $iValue) {
if ($iValue == 0) {
$add_all_forums = true;
}
}
// If we add ALL FORUMS, we are able to overwrite the Permissions
if ($add_all_forums) {
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . " SET forum_permissions = '' WHERE group_id = " . (int)$group;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not update permissions #1');
}
}
// Else we have to add Permissions
if (!$add_all_forums) {
$sql = 'SELECT forum_permissions
FROM ' . BB_EXTENSION_GROUPS . '
WHERE group_id = ' . (int)$group . '
LIMIT 1';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not get group permissions from ' . BB_EXTENSION_GROUPS);
}
$row = DB()->sql_fetchrow($result);
DB()->sql_freeresult($result);
if (trim($row['forum_permissions']) == '') {
$auth_p = [];
} else {
$auth_p = auth_unpack($row['forum_permissions']);
}
// Generate array for Auth_Pack, do not add doubled forums
foreach ($add_forums_list as $i => $iValue) {
if (!in_array($add_forums_list[$i], $auth_p)) {
$auth_p[] = $iValue;
}
}
$auth_bitstream = auth_pack($auth_p);
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . " SET forum_permissions = '" . DB()->escape($auth_bitstream) . "' WHERE group_id = " . (int)$group;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not update permissions #2');
}
}
}
// Delete Forums
if ($delete_forum && $e_mode == 'perm' && $group) {
$delete_forums_list = get_var('entries', array(0));
// Get the current Forums
$sql = 'SELECT forum_permissions
FROM ' . BB_EXTENSION_GROUPS . '
WHERE group_id = ' . (int)$group . '
LIMIT 1';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not get group permissions from ' . BB_EXTENSION_GROUPS);
}
$row = DB()->sql_fetchrow($result);
DB()->sql_freeresult($result);
$auth_p2 = auth_unpack(trim($row['forum_permissions']));
$auth_p = [];
// Generate array for Auth_Pack, delete the chosen ones
foreach ($auth_p2 as $i => $iValue) {
if (!in_array($auth_p2[$i], $delete_forums_list)) {
$auth_p[] = $iValue;
}
}
$auth_bitstream = (count($auth_p) > 0) ? auth_pack($auth_p) : '';
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . " SET forum_permissions = '" . DB()->escape($auth_bitstream) . "' WHERE group_id = " . (int)$group;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not update permissions #3');
}
}
// Display the Group Permissions Box for configuring it
if ($e_mode == 'perm' && $group) {
$sql = 'SELECT group_name, forum_permissions
FROM ' . BB_EXTENSION_GROUPS . '
WHERE group_id = ' . (int)$group . '
LIMIT 1';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not get group name from ' . BB_EXTENSION_GROUPS);
}
$row = DB()->sql_fetchrow($result);
DB()->sql_freeresult($result);
$group_name = $row['group_name'];
$allowed_forums = trim($row['forum_permissions']);
$forum_perm = [];
if ($allowed_forums == '') {
$forum_perm[0]['forum_id'] = 0;
$forum_perm[0]['forum_name'] = $lang['PERM_ALL_FORUMS'];
} else {
$forum_p = [];
$act_id = 0;
$forum_p = auth_unpack($allowed_forums);
$sql = 'SELECT forum_id, forum_name FROM ' . BB_FORUMS . ' WHERE forum_id IN (' . implode(', ', $forum_p) . ')';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not get forum names');
}
while ($row = DB()->sql_fetchrow($result)) {
$forum_perm[$act_id]['forum_id'] = $row['forum_id'];
$forum_perm[$act_id]['forum_name'] = $row['forum_name'];
$act_id++;
}
}
for ($i = 0, $iMax = count($forum_perm); $i < $iMax; $i++) {
$template->assign_block_vars('allow_option_values', array(
'VALUE' => $forum_perm[$i]['forum_id'],
'OPTION' => htmlCHR($forum_perm[$i]['forum_name']))
);
}
$template->assign_vars(array(
'TPL_ATTACH_EXTENSION_GROUPS_PERMISSIONS' => true,
'L_GROUP_PERMISSIONS_TITLE' => sprintf($lang['GROUP_PERMISSIONS_TITLE_ADMIN'], trim($group_name)),
'A_PERM_ACTION' => "admin_extensions.php?mode=groups&amp;e_mode=perm&amp;e_group=$group",
));
$forum_option_values = array(0 => $lang['PERM_ALL_FORUMS']);
$sql = 'SELECT forum_id, forum_name FROM ' . BB_FORUMS;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not get forums #1');
}
while ($row = DB()->sql_fetchrow($result)) {
$forum_option_values[(int)$row['forum_id']] = $row['forum_name'];
}
DB()->sql_freeresult($result);
foreach ($forum_option_values as $value => $option) {
$template->assign_block_vars('forum_option_values', array(
'VALUE' => $value,
'OPTION' => htmlCHR($option))
);
}
$empty_perm_forums = [];
$sql = 'SELECT forum_id, forum_name FROM ' . BB_FORUMS . ' WHERE auth_attachments < ' . AUTH_ADMIN;
if (!($f_result = DB()->sql_query($sql))) {
bb_die('Could not get forums #2');
}
while ($row = DB()->sql_fetchrow($f_result)) {
$forum_id = $row['forum_id'];
$sql = 'SELECT forum_permissions
FROM ' . BB_EXTENSION_GROUPS . '
WHERE allow_group = 1
ORDER BY group_name ASC';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not query extension groups');
}
$rows = DB()->sql_fetchrowset($result);
$num_rows = DB()->num_rows($result);
DB()->sql_freeresult($result);
$found_forum = false;
for ($i = 0; $i < $num_rows; $i++) {
$allowed_forums = auth_unpack(trim($rows[$i]['forum_permissions']));
if (in_array($forum_id, $allowed_forums) || trim($rows[$i]['forum_permissions']) == '') {
$found_forum = true;
break;
}
}
if (!$found_forum) {
$empty_perm_forums[$forum_id] = $row['forum_name'];
}
}
DB()->sql_freeresult($f_result);
$message = '';
foreach ($empty_perm_forums as $forum_id => $forum_name) {
$message .= ($message == '') ? $forum_name : '<br />' . $forum_name;
}
if (count($empty_perm_forums) > 0) {
$template->assign_vars(array('ERROR_MESSAGE' => $lang['NOTE_ADMIN_EMPTY_GROUP_PERMISSIONS'] . $message));
}
}
if ($error) {
$template->assign_vars(array('ERROR_MESSAGE' => $error_msg));
}
print_page('admin_extensions.tpl', 'admin');