Chris@76
|
1 <?php
|
Chris@76
|
2
|
Chris@76
|
3 /**
|
Chris@76
|
4 * Simple Machines Forum (SMF)
|
Chris@76
|
5 *
|
Chris@76
|
6 * @package SMF
|
Chris@76
|
7 * @author Simple Machines http://www.simplemachines.org
|
Chris@76
|
8 * @copyright 2011 Simple Machines
|
Chris@76
|
9 * @license http://www.simplemachines.org/about/smf/license.php BSD
|
Chris@76
|
10 *
|
Chris@76
|
11 * @version 2.0
|
Chris@76
|
12 */
|
Chris@76
|
13
|
Chris@76
|
14 if (!defined('SMF'))
|
Chris@76
|
15 die('Hacking attempt...');
|
Chris@76
|
16
|
Chris@76
|
17 function getBoardList($boardListOptions = array())
|
Chris@76
|
18 {
|
Chris@76
|
19 global $smcFunc, $user_info;
|
Chris@76
|
20
|
Chris@76
|
21 if (isset($boardListOptions['excluded_boards']) && isset($boardListOptions['included_boards']))
|
Chris@76
|
22 trigger_error('getBoardList(): Setting both excluded_boards and included_boards is not allowed.', E_USER_ERROR);
|
Chris@76
|
23
|
Chris@76
|
24 $where = array();
|
Chris@76
|
25 $where_parameters = array();
|
Chris@76
|
26 if (isset($boardListOptions['excluded_boards']))
|
Chris@76
|
27 {
|
Chris@76
|
28 $where[] = 'b.id_board NOT IN ({array_int:excluded_boards})';
|
Chris@76
|
29 $where_parameters['excluded_boards'] = $boardListOptions['excluded_boards'];
|
Chris@76
|
30 }
|
Chris@76
|
31
|
Chris@76
|
32 if (isset($boardListOptions['included_boards']))
|
Chris@76
|
33 {
|
Chris@76
|
34 $where[] = 'b.id_board IN ({array_int:included_boards})';
|
Chris@76
|
35 $where_parameters['included_boards'] = $boardListOptions['included_boards'];
|
Chris@76
|
36 }
|
Chris@76
|
37
|
Chris@76
|
38 if (!empty($boardListOptions['ignore_boards']))
|
Chris@76
|
39 $where[] = '{query_wanna_see_board}';
|
Chris@76
|
40
|
Chris@76
|
41 elseif (!empty($boardListOptions['use_permissions']))
|
Chris@76
|
42 $where[] = '{query_see_board}';
|
Chris@76
|
43
|
Chris@76
|
44 if (!empty($boardListOptions['not_redirection']))
|
Chris@76
|
45 {
|
Chris@76
|
46 $where[] = 'b.redirect = {string:blank_redirect}';
|
Chris@76
|
47 $where_parameters['blank_redirect'] = '';
|
Chris@76
|
48 }
|
Chris@76
|
49
|
Chris@76
|
50 $request = $smcFunc['db_query']('messageindex_fetch_boards', '
|
Chris@76
|
51 SELECT c.name AS cat_name, c.id_cat, b.id_board, b.name AS board_name, b.child_level
|
Chris@76
|
52 FROM {db_prefix}boards AS b
|
Chris@76
|
53 LEFT JOIN {db_prefix}categories AS c ON (c.id_cat = b.id_cat)' . (empty($where) ? '' : '
|
Chris@76
|
54 WHERE ' . implode('
|
Chris@76
|
55 AND ', $where)),
|
Chris@76
|
56 $where_parameters
|
Chris@76
|
57 );
|
Chris@76
|
58
|
Chris@76
|
59 $return_value = array();
|
Chris@76
|
60 if ($smcFunc['db_num_rows']($request) !== 0)
|
Chris@76
|
61 {
|
Chris@76
|
62 while ($row = $smcFunc['db_fetch_assoc']($request))
|
Chris@76
|
63 {
|
Chris@76
|
64 if (!isset($return_value[$row['id_cat']]))
|
Chris@76
|
65 $return_value[$row['id_cat']] = array(
|
Chris@76
|
66 'id' => $row['id_cat'],
|
Chris@76
|
67 'name' => $row['cat_name'],
|
Chris@76
|
68 'boards' => array(),
|
Chris@76
|
69 );
|
Chris@76
|
70
|
Chris@76
|
71 $return_value[$row['id_cat']]['boards'][] = array(
|
Chris@76
|
72 'id' => $row['id_board'],
|
Chris@76
|
73 'name' => $row['board_name'],
|
Chris@76
|
74 'child_level' => $row['child_level'],
|
Chris@76
|
75 'selected' => isset($boardListOptions['selected_board']) && $boardListOptions['selected_board'] == $row['id_board'],
|
Chris@76
|
76 );
|
Chris@76
|
77 }
|
Chris@76
|
78 }
|
Chris@76
|
79 $smcFunc['db_free_result']($request);
|
Chris@76
|
80
|
Chris@76
|
81 return $return_value;
|
Chris@76
|
82 }
|
Chris@76
|
83
|
Chris@76
|
84 ?> |