Mercurial > hg > vamp-website
diff forum/Sources/Subs-MessageIndex.php @ 76:e3e11437ecea website
Add forum code
author | Chris Cannam |
---|---|
date | Sun, 07 Jul 2013 11:25:48 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forum/Sources/Subs-MessageIndex.php Sun Jul 07 11:25:48 2013 +0200 @@ -0,0 +1,84 @@ +<?php + +/** + * Simple Machines Forum (SMF) + * + * @package SMF + * @author Simple Machines http://www.simplemachines.org + * @copyright 2011 Simple Machines + * @license http://www.simplemachines.org/about/smf/license.php BSD + * + * @version 2.0 + */ + +if (!defined('SMF')) + die('Hacking attempt...'); + +function getBoardList($boardListOptions = array()) +{ + global $smcFunc, $user_info; + + if (isset($boardListOptions['excluded_boards']) && isset($boardListOptions['included_boards'])) + trigger_error('getBoardList(): Setting both excluded_boards and included_boards is not allowed.', 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']('messageindex_fetch_boards', ' + SELECT c.name AS cat_name, c.id_cat, b.id_board, b.name AS board_name, b.child_level + 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'][] = array( + 'id' => $row['id_board'], + 'name' => $row['board_name'], + 'child_level' => $row['child_level'], + 'selected' => isset($boardListOptions['selected_board']) && $boardListOptions['selected_board'] == $row['id_board'], + ); + } + } + $smcFunc['db_free_result']($request); + + return $return_value; +} + +?> \ No newline at end of file