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.">&nbsp;&nbsp;&#0124;".$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.">&nbsp;&nbsp;&#0124;".$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( "&#33;" , "!", $forum_data['last_title'] );			$forum_data['last_title'] = str_replace( "&quot;", "\"", $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']}&amp;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 + -
显示快捷键?