98 lines
No EOL
2.7 KiB
PHP
98 lines
No EOL
2.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Simple Machines Forum (SMF)
|
|
*
|
|
* @package SMF
|
|
* @author Simple Machines https://www.simplemachines.org
|
|
* @copyright 2022 Simple Machines and individual contributors
|
|
* @license https://www.simplemachines.org/about/smf/license.php BSD
|
|
*
|
|
* @version 2.1.2
|
|
*/
|
|
|
|
if (!defined('SMF'))
|
|
die('No direct access...');
|
|
|
|
/**
|
|
* Generates the query to determine the list of available boards for a user
|
|
* Executes the query and returns the list
|
|
*
|
|
* @param array $boardListOptions An array of options for the board list
|
|
* @return array An array of board info
|
|
*/
|
|
function getBoardList($boardListOptions = array())
|
|
{
|
|
global $smcFunc, $sourcedir, $txt;
|
|
|
|
if (isset($boardListOptions['excluded_boards']) && isset($boardListOptions['included_boards']))
|
|
{
|
|
loadLanguage('Errors');
|
|
trigger_error($txt['get_board_list_cannot_include_and_exclude'], E_USER_ERROR);
|
|
}
|
|
|
|
$where = array();
|
|
$where_parameters = array();
|
|
if (isset($boardListOptions['excluded_boards']))
|
|
{
|
|
$where[] = 'b.id_board NOT IN ({array_int:excluded_boards})';
|
|
$where_parameters['excluded_boards'] = $boardListOptions['excluded_boards'];
|
|
}
|
|
|
|
if (isset($boardListOptions['included_boards']))
|
|
{
|
|
$where[] = 'b.id_board IN ({array_int:included_boards})';
|
|
$where_parameters['included_boards'] = $boardListOptions['included_boards'];
|
|
}
|
|
|
|
if (!empty($boardListOptions['ignore_boards']))
|
|
$where[] = '{query_wanna_see_board}';
|
|
|
|
elseif (!empty($boardListOptions['use_permissions']))
|
|
$where[] = '{query_see_board}';
|
|
|
|
if (!empty($boardListOptions['not_redirection']))
|
|
{
|
|
$where[] = 'b.redirect = {string:blank_redirect}';
|
|
$where_parameters['blank_redirect'] = '';
|
|
}
|
|
|
|
$request = $smcFunc['db_query']('order_by_board_order', '
|
|
SELECT c.name AS cat_name, c.id_cat, b.id_board, b.name AS board_name, b.child_level, b.redirect
|
|
FROM {db_prefix}boards AS b
|
|
LEFT JOIN {db_prefix}categories AS c ON (c.id_cat = b.id_cat)' . (empty($where) ? '' : '
|
|
WHERE ' . implode('
|
|
AND ', $where)),
|
|
$where_parameters
|
|
);
|
|
|
|
$return_value = array();
|
|
if ($smcFunc['db_num_rows']($request) !== 0)
|
|
{
|
|
while ($row = $smcFunc['db_fetch_assoc']($request))
|
|
{
|
|
if (!isset($return_value[$row['id_cat']]))
|
|
$return_value[$row['id_cat']] = array(
|
|
'id' => $row['id_cat'],
|
|
'name' => $row['cat_name'],
|
|
'boards' => array(),
|
|
);
|
|
|
|
$return_value[$row['id_cat']]['boards'][$row['id_board']] = array(
|
|
'id' => $row['id_board'],
|
|
'name' => $row['board_name'],
|
|
'child_level' => $row['child_level'],
|
|
'redirect' => $row['redirect'],
|
|
'selected' => isset($boardListOptions['selected_board']) && $boardListOptions['selected_board'] == $row['id_board'],
|
|
);
|
|
}
|
|
}
|
|
$smcFunc['db_free_result']($request);
|
|
|
|
require_once($sourcedir . '/Subs-Boards.php');
|
|
sortCategories($return_value);
|
|
|
|
return $return_value;
|
|
}
|
|
|
|
?>
|