diff options
-rw-r--r-- | phpBB/includes/functions.php | 63 | ||||
-rw-r--r-- | phpBB/includes/functions_posting.php | 21 |
2 files changed, 42 insertions, 42 deletions
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 6a73019dfe..ab88e5b9e3 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -106,10 +106,37 @@ function generate_forum_nav(&$forum_data) global $db, $user, $template, $phpEx, $SID; // Get forum parents + $forum_parents = get_forum_parents($forum_data); + + // Build navigation links + foreach ($forum_parents as $parent_forum_id => $parent_name) + { + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $parent_name, + 'U_VIEW_FORUM' => 'viewforum.' . $phpEx . $SID . '&f=' . $parent_forum_id + )); + } + $template->assign_block_vars('navlinks', array( + 'FORUM_NAME' => $forum_data['forum_name'], + 'U_VIEW_FORUM' => 'viewforum.' . $phpEx . $SID . '&f=' . $forum_data['forum_id'] + )); + + $template->assign_vars(array( + 'FORUM_ID' => $forum_data['forum_id'], + 'FORUM_NAME' => $forum_data['forum_name'], + 'FORUM_DESC' => $forum_data['forum_desc'] + )); + + return; +} + +// Returns forum parents as an array. Get them from forum_data if available, or update the database otherwise +function get_forum_parents($forum_data) +{ $forum_parents = array(); if ($forum_data['parent_id'] > 0) { - if (empty($forum_data['forum_parents'])) + if ($forum_data['forum_parents'] == '') { $sql = 'SELECT forum_id, forum_name FROM ' . FORUMS_TABLE . ' @@ -134,26 +161,7 @@ function generate_forum_nav(&$forum_data) } } - // Build navigation links - foreach ($forum_parents as $parent_forum_id => $parent_name) - { - $template->assign_block_vars('navlinks', array( - 'FORUM_NAME' => $parent_name, - 'U_VIEW_FORUM' => 'viewforum.' . $phpEx . $SID . '&f=' . $parent_forum_id - )); - } - $template->assign_block_vars('navlinks', array( - 'FORUM_NAME' => $forum_data['forum_name'], - 'U_VIEW_FORUM' => 'viewforum.' . $phpEx . $SID . '&f=' . $forum_data['forum_id'] - )); - - $template->assign_vars(array( - 'FORUM_ID' => $forum_data['forum_id'], - 'FORUM_NAME' => $forum_data['forum_name'], - 'FORUM_DESC' => $forum_data['forum_desc'] - )); - - return; + return $forum_parents; } // Obtain list of moderators of each forum @@ -235,11 +243,13 @@ function gen_sort_selects(&$limit_days, &$sort_by_text, &$sort_days, &$sort_key, return; } -function make_jumpbox($action, $forum_id = false, $extra_form_fields = array()) +function make_jumpbox($action, $forum_id = false, $enable_select_all = false) { global $auth, $template, $user, $db, $nav_links, $phpEx, $SID; - $boxstring = '<select name="f" onChange="if(this.options[this.selectedIndex].value != -1){ forms[\'jumpbox\'].submit() }"><option value="-1">' . $user->lang['SELECT_FORUM'] . '</option><option value="-1">-----------------</option>'; + $boxstring = '<select name="f" onChange="if(this.options[this.selectedIndex].value != -1){ forms[\'jumpbox\'].submit() }">'; + $boxstring .= ($enable_select_all) ? '<option value="0">' . $user->lang['ALL_FORUMS'] : '<option value="-1">' . $user->lang['SELECT_FORUM']; + $boxstring .= '</option><option value="-1">-----------------</option>'; $sql = 'SELECT forum_id, forum_name, forum_postable, left_id, right_id FROM ' . FORUMS_TABLE . ' @@ -305,12 +315,7 @@ function make_jumpbox($action, $forum_id = false, $extra_form_fields = array()) } $boxstring .= '</select>'; - - $extra_form_fields['sid'] = $user->session_id; - foreach ($extra_form_fields as $key => $val) - { - $boxstring .= '<input type="hidden" name="' . $key . '" value="' . htmlspecialchars($val) . '" />'; - } + $boxstring .= '<input type="hidden" name="sid" value="' . $user->session_id . '" />'; $template->assign_vars(array( 'S_JUMPBOX_SELECT' => $boxstring, diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 12c85a1e16..168bd440f7 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -297,6 +297,7 @@ function update_last_post_information($type, $id) { case 'forum': $sql_select_add = ', f.forum_parents'; +// $sql_select_add = ', f.left_id'; $sql_table_add = ', ' . FORUMS_TABLE . ' f'; $sql_where_add = 'AND (t.forum_id = f.forum_id) AND (f.forum_id = ' . $id . ')'; $sql_update_table = FORUMS_TABLE; @@ -330,16 +331,13 @@ function update_last_post_information($type, $id) case 'forum': // Update forums: last post info, topics, posts ... we need to update // each parent too ... + $forum_ids = $id; - $forum_parents = trim($row['forum_parents']); + $forum_parents = get_forum_parents($row); - if ($forum_parents != '') + foreach ($forum_parents as $parent_forum_id => $parent_name) { - $forum_parents = unserialize($forum_parents); - foreach ($forum_parents as $parent_forum_id => $parent_name) - { - $forum_ids .= ', ' . $parent_forum_id; - } + $forum_ids .= ', ' . $parent_forum_id; } $where_clause = 'forum_id IN (' . $forum_ids . ')'; @@ -815,13 +813,10 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_ // Update forums: last post info, topics, posts ... we need to update // each parent too ... $forum_ids = $post_data['forum_id']; - if (!empty($post_data['forum_parents'])) + $forum_parents = get_forum_parents($post_data); + foreach ($forum_parents as $parent_forum_id => $parent_name) { - $post_data['forum_parents'] = unserialize($post_data['forum_parents']); - foreach ($post_data['forum_parents'] as $parent_forum_id => $parent_name) - { - $forum_ids .= ', ' . $parent_forum_id; - } + $forum_ids .= ', ' . $parent_forum_id; } $forum_topics_sql = ($mode == 'post') ? ', forum_topics = forum_topics + 1' : ''; |