class_forums.php
来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 866 行 · 第 1/2 页
PHP
866 行
$this->ipsclass->print->add_output( $this->output ); $this->ipsclass->print->do_output( array( 'TITLE' => $this->ipsclass->vars['board_name']." -> ".$this->forum_by_id[$fid]['name'], 'JS' => 0, 'NAV' => array( "<a href='".$this->ipsclass->base_url."showforum={$fid}'>{$this->forum_by_id[$fid]['name']}</a>", ), ) ); } /*-------------------------------------------------------------------------*/ // Get parents // ------------------ // Find all the parents of a child without getting the nice lady to // use the superstore tannoy to shout "Small ugly boy in tears at reception" /*-------------------------------------------------------------------------*/ function forums_get_parents($root_id, $ids=array()) { if ( $this->forum_by_id[ $root_id ]['parent_id'] and $this->forum_by_id[ $root_id ]['parent_id'] != 'root' ) { $ids[] = $this->forum_by_id[ $root_id ]['parent_id']; $ids = $this->forums_get_parents( $this->forum_by_id[ $root_id ]['parent_id'], $ids ); } return $ids; } /*-------------------------------------------------------------------------*/ // Gets children (Debug purposes) // ------------------ // Get all meh children /*-------------------------------------------------------------------------*/ function forums_get_children( $root_id, $ids=array() ) { if ( is_array( $this->forum_cache[ $root_id ] ) ) { foreach( $this->forum_cache[ $root_id ] as $id => $forum_data ) { $ids[] = $forum_data['id']; $ids = $this->forums_get_children($forum_data['id'], $ids); } } return $ids; } /*-------------------------------------------------------------------------*/ // Calcualte Children // ------------------ // Gets cumulative posts/topics - sets new post marker and last topic id /*-------------------------------------------------------------------------*/ function forums_calc_children($root_id, $forum_data=array(), $done_pass=0) { if ( is_array( $this->forum_cache[ $root_id ] ) ) { foreach( $this->forum_cache[ $root_id ] as $id => $data ) { if ($data['last_post'] > $forum_data['last_post']) { $forum_data['last_post'] = $data['last_post']; $forum_data['fid'] = $data['id']; $forum_data['last_id'] = $data['last_id']; $forum_data['last_title'] = $data['last_title']; $forum_data['password'] = $data['password']; $forum_data['last_poster_id'] = $data['last_poster_id']; $forum_data['last_poster_name'] = $data['last_poster_name']; $forum_data['status'] = $data['status']; //----------------------------------------- // Is this forum last post > current last post // and if so, did we clear the marker more recently for // this topic? //----------------------------------------- if ( $data['_db_row']['marker_last_cleared'] > $forum_data['_db_row']['marker_last_cleared'] ) { $forum_data['_db_row']['marker_last_cleared'] = $data['_db_row']['marker_last_cleared']; } } //----------------------------------------- // Sort out forum marker //----------------------------------------- $forum_data['_db_row']['marker_unread'] += $data['_db_row']['marker_unread']; //----------------------------------------- // Figure out if we have markers // Takes care of rows not in the DB yet //----------------------------------------- if ( ! $data['_db_row']['marker_unread'] ) { $test_time = $this->ipsclass->member['members_markers']['board'] > $data['_db_row']['marker_last_cleared'] ? $this->ipsclass->member['members_markers']['board'] : $data['_db_row']['marker_last_cleared']; if ( $data['last_post'] > $test_time ) { $data['_db_row']['marker_unread'] = 1; } } //----------------------------------------- // Copy last cleared date //----------------------------------------- if ( $data['_db_row']['marker_unread'] ) { $forum_data['_db_row']['marker_last_cleared'] = $data['_db_row']['marker_last_cleared']; } //----------------------------------------- // Topics and posts //----------------------------------------- $forum_data['posts'] += $data['posts']; $forum_data['topics'] += $data['topics']; if ( $this->ipsclass->member['g_is_supmod'] or $this->ipsclass->member['_moderator'][ $data['id'] ]['post_q'] == 1 ) { $forum_data['queued_posts'] += $data['queued_posts']; $forum_data['queued_topics'] += $data['queued_topics']; } if ( ! $done_pass ) { $forum_data['subforums'][ $data['id'] ] = $this->ipsclass->compiled_templates['skin_boards']->show_subforum_link($data['id'],$data['name']); } $forum_data = $this->forums_calc_children( $data['id'], $forum_data, 1 ); } } return $forum_data; } /*-------------------------------------------------------------------------*/ // Create forum breadcrumb nav // ------------------ // Simple and effective - just like me :( /*-------------------------------------------------------------------------*/ function forums_breadcrumb_nav($root_id, $url='showforum=') { $nav_array[] = "<a href='".$this->ipsclass->base_url."$url{$root_id}'>{$this->forum_by_id[$root_id]['name']}</a>"; $ids = $this->forums_get_parents( $root_id ); if ( is_array($ids) and count($ids) ) { foreach( $ids as $id ) { $data = $this->forum_by_id[$id]; $nav_array[] = "<a href='".$this->ipsclass->base_url."$url{$data['id']}'>{$data['name']}</a>"; } } return array_reverse($nav_array); } /*-------------------------------------------------------------------------*/ // forum jumpee // ------------------ // Builds the forum jumpee dunnit /*-------------------------------------------------------------------------*/ function forums_forum_jump($html=0, $override=0, $remove_redirects=0) { foreach( $this->forum_cache['root'] as $id => $forum_data ) { if ( $forum_data['sub_can_post'] or ( is_array($this->forum_cache[ $forum_data['id'] ]) and count($this->forum_cache[ $forum_data['id'] ]) ) ) { if( $remove_redirects == 1 AND $forum_data['redirect_on'] == 1 ) { continue; } if ($html == 1 or $override == 1) { $selected = ""; if ($this->ipsclass->input['f'] and $this->ipsclass->input['f'] == $forum_data['id']) { $selected = ' selected="selected"'; } } $jump_string .= "<option value=\"{$forum_data['id']}\"".$selected.">".$forum_data['name']."</option>\n"; $depth_guide = $this->depth_guide; if ( is_array( $this->forum_cache[ $forum_data['id'] ] ) ) { foreach( $this->forum_cache[ $forum_data['id'] ] as $id => $forum_data ) { if( $remove_redirects == 1 AND $forum_data['redirect_on'] == 1 ) { continue; } if ($html == 1 or $override == 1) { $selected = ""; if ($this->ipsclass->input['f'] and $this->ipsclass->input['f'] == $forum_data['id']) { $selected = ' selected="selected"'; } } $jump_string .= "<option value=\"{$forum_data['id']}\"".$selected."> |".$depth_guide." ".$forum_data['name']."</option>\n"; if( $this->ipsclass->vars['short_forum_jump'] == 0 OR $override == 1 ) { $jump_string = $this->forums_forum_jump_internal( $forum_data['id'], $jump_string, $depth_guide . $this->depth_guide, $html, $override, $remove_redirects ); } } } } } return $jump_string; } function forums_forum_jump_internal($root_id, $jump_string="", $depth_guide="",$html=0, $override=0, $remove_redirects=0) { if ( is_array( $this->forum_cache[ $root_id ] ) ) { foreach( $this->forum_cache[ $root_id ] as $id => $forum_data ) { if( $remove_redirects == 1 AND $forum_data['redirect_on'] == 1 ) { continue; } if ($html == 1 or $override == 1) { $selected = ""; if ($this->ipsclass->input['f'] and $this->ipsclass->input['f'] == $forum_data['id']) { $selected = ' selected="selected"'; } } $jump_string .= "<option value=\"{$forum_data['id']}\"".$selected."> |".$depth_guide." ".$forum_data['name']."</option>\n"; $jump_string = $this->forums_forum_jump_internal( $forum_data['id'], $jump_string, $depth_guide . $this->depth_guide, $html, $override ); } } return $jump_string; } /*-------------------------------------------------------------------------*/ // Format Forum // ------------------ // Sorts out last poster, etc /*-------------------------------------------------------------------------*/ function forums_format_lastinfo($forum_data) { $show_subforums = 1; if ( $this->ipsclass->check_perms($this->forum_by_id[ $forum_data['id'] ]['read_perms']) != TRUE ) { $show_subforums = 0; } $forum_data['img_new_post'] = $this->forums_new_posts($forum_data); if ( $forum_data['img_new_post'] == '<{C_ON}>' ) { $forum_data['img_new_post'] = $this->ipsclass->compiled_templates['skin_boards']->forum_img_with_link($forum_data['img_new_post'], $forum_data['id']); } else if ( $forum_data['img_new_post'] == '<{C_ON_CAT}>' ) { $forum_data['img_new_post'] = $this->ipsclass->compiled_templates['skin_boards']->subforum_img_with_link($forum_data['img_new_post'], $forum_data['id']); } $forum_data['last_post'] = $this->ipsclass->get_date($forum_data['last_post'], 'LONG'); $forum_data['last_topic'] = $this->ipsclass->lang['f_none']; $forum_data['full_last_title'] = $forum_data['last_title']; if (isset($forum_data['last_title']) and $forum_data['last_id']) { $forum_data['last_title'] = strip_tags($forum_data['last_title']); $forum_data['last_title'] = str_replace( "!" , "!", $forum_data['last_title'] ); $forum_data['last_title'] = str_replace( """, "\"", $forum_data['last_title'] ); $forum_data['last_title'] = $this->ipsclass->txt_truncate($forum_data['last_title'], 30); //-----utf-8 cut by IPBER.ORG----- if (strlen($forum_data['last_title']) >= 30) { $forum_data['last_title'] = $this->ipsclass->utf8_trim(substr($forum_data['last_title'],0,27)) . '...'; } //-----utf-8 cut end----- if ( $forum_data['password'] OR ( $this->ipsclass->check_perms($this->forum_by_id[ $forum_data['fid'] ]['read_perms']) != TRUE AND $this->forum_by_id[ $forum_data['fid'] ]['permission_showtopic'] == 0 ) ) { $forum_data['last_topic'] = $this->ipsclass->lang['f_protected']; } else { $forum_data['last_unread'] = $this->ipsclass->compiled_templates['skin_boards']->forumrow_lastunread_link($forum_data['id'], $forum_data['last_id']); $forum_data['last_topic'] = "<a href='{$this->ipsclass->base_url}showtopic={$forum_data['last_id']}&view=getnewpost' title='{$this->ipsclass->lang['tt_gounread']}: {$forum_data['full_last_title']}'>{$forum_data['last_title']}</a>"; } } if ( isset($forum_data['last_poster_name'])) { $forum_data['last_poster'] = $forum_data['last_poster_id'] ? "<a href='{$this->ipsclass->base_url}showuser={$forum_data['last_poster_id']}'>{$forum_data['last_poster_name']}</a>" : $forum_data['last_poster_name']; } else { $forum_data['last_poster'] = $this->ipsclass->lang['f_none']; } //----------------------------------------- // Moderators //----------------------------------------- $forum_data['moderator'] = $this->forums_get_moderators($forum_data['id']); $forum_data['posts'] = $this->ipsclass->do_number_format($forum_data['posts']); $forum_data['topics'] = $this->ipsclass->do_number_format($forum_data['topics']); if ( $this->ipsclass->vars['disable_subforum_show'] == 0 AND $show_subforums == 1 ) { if ( is_array( $forum_data['subforums'] ) and count( $forum_data['subforums'] ) ) { $forum_data['show_subforums'] = $this->ipsclass->compiled_templates['skin_boards']->show_subforum_all_links( implode( ', ', $forum_data['subforums'] ) ); } } if ( $this->ipsclass->member['g_is_supmod'] or $this->ipsclass->member['_moderator'][ $forum_data['id'] ]['post_q'] == 1 ) { if ( $forum_data['queued_posts'] or $forum_data['queued_topics'] ) { $forum_data['_queued_info'] = $this->ipsclass->compiled_templates['skin_boards']->show_queued_info( intval($forum_data['queued_posts']), intval($forum_data['queued_topics']) ); } if ( $this->forum_by_id[ $forum_data['id'] ]['queued_posts'] or $this->forum_by_id[ $forum_data['id'] ]['queued_topics'] ) { $forum_data['_queued_img'] = $this->ipsclass->compiled_templates['skin_boards']->show_queued_img( $forum_data['id'] ); } } return $forum_data; } /*-------------------------------------------------------------------------*/ // // Generate the appropriate folder icon for a forum // /*-------------------------------------------------------------------------*/ function forums_new_posts($forum_data) { $sub = 0; if ( count($forum_data['subforums']) ) { $sub = 1; } $fid = $forum_data['fid'] == "" ? $forum_data['id'] : $forum_data['fid']; # Uncomment if you want to clear markers from the last visit. //$rtime = $this->ipsclass->member['last_visit'] > $this->ipsclass->member['members_markers']['board'] ? $this->ipsclass->member['last_visit'] : $this->ipsclass->member['members_markers']['board']; $this->ipsclass->member['members_markers']['board'] = $this->ipsclass->member['members_markers']['board'] ? $this->ipsclass->member['members_markers']['board'] : $this->ipsclass->forum_read[ 0 ]; $forum_data['_db_row']['marker_last_cleared'] = $forum_data['_db_row']['marker_last_cleared'] ? $forum_data['_db_row']['marker_last_cleared'] : $this->ipsclass->forum_read[ $fid ]; $rtime = $this->ipsclass->member['members_markers']['board']; $ctime = $this->ipsclass->forum_read[ $fid ]; $rtime = $rtime > $ctime ? $rtime : $ctime; //----------------------------------------- // Got a last cleared date so we have a db // row... and there are no unread topics //----------------------------------------- if ( is_array( $forum_data['_db_row'] ) ) { $rtime = $this->ipsclass->member['members_markers']['board'] > $forum_data['_db_row']['marker_last_cleared'] ? $this->ipsclass->member['members_markers']['board'] : $forum_data['_db_row']['marker_last_cleared']; } //----------------------------------------- // Sub forum? //----------------------------------------- if ($sub == 0) { if ( ! $forum_data['status'] ) { return "<{C_LOCKED}>"; } $sub_cat_img = ''; } else { $sub_cat_img = '_CAT'; } if ( $forum_data['password'] AND $sub == 0 ) { return $forum_data['last_post'] && $forum_data['last_post'] > $rtime ? "<{C_ON_RES}>" : "<{C_OFF_RES}>"; } return ( $forum_data['last_post'] && $forum_data['last_post'] > $rtime ) ? "<{C_ON".$sub_cat_img."}>" : "<{C_OFF".$sub_cat_img."}>"; }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?