diff options
Diffstat (limited to 'phpBB/viewtopic.php')
| -rw-r--r-- | phpBB/viewtopic.php | 81 | 
1 files changed, 33 insertions, 48 deletions
| diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 0b5fac444b..1f927b99e8 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -639,7 +639,7 @@ if (!empty($poll_start))  		include_once($phpbb_root_path . 'includes/bbcode.'.$phpEx);  		$poll_bbcode = new bbcode(); -		for ($i = 0, $j = sizeof($poll_info); $i < $j; $i++) +		for ($i = 0, $size = sizeof($poll_info); $i < $size; $i++)  		{  			$poll_bbcode->bbcode_second_pass($poll_info[$i]['poll_option_text'], $poll_info[$i]['bbcode_uid'], $poll_option['bbcode_bitfield']);  			$poll_info[$i]['poll_option_text'] = smilie_text($poll_info[$i]['poll_option_text']); @@ -953,14 +953,15 @@ while ($row = $db->sql_fetchrow($result))  while ($row = $db->sql_fetchrow($result));  $db->sql_freeresult($result); -/* -if ($config['load_cp_viewtopic']) +// Load custom profile fields +if ($config['load_cpf_viewtopic'])  {  	include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);  	$cp = new custom_profile(); + +	// Grab all profile fields from users in id cache for later use - similar to the poster cache  	$profile_fields_cache = $cp->generate_profile_fields_template('grab', $id_cache);  } -*/  // Generate online information for user  if ($config['load_onlinetrack'] && sizeof($id_cache)) @@ -1119,12 +1120,9 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i)  	$message = $row['post_text'];  	// If the board has HTML off but the post has HTML on then we process it, else leave it alone -	if (!$auth->acl_get('f_html', $forum_id)) +	if (!$auth->acl_get('f_html', $forum_id) && $row['enable_html'])  	{ -		if ($row['enable_html'] && $auth->acl_get('f_bbcode', $forum_id)) -		{ -			$message = preg_replace('#(<)([\/]?.*?)(>)#is', "<\\2>", $message); -		} +		$message = preg_replace('#(<!\-\- h \-\-><)([\/]?.*?)(><!\-\- h \-\->)#is', "<\\2>", $message);  	}  	// Second parse bbcode here @@ -1136,6 +1134,17 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i)  	// Always process smilies after parsing bbcodes  	$message = smilie_text($message); +	if (isset($attachments[$row['post_id']]) && sizeof($attachments[$row['post_id']])) +	{ +		$unset_attachments = parse_inline_attachments($message, $attachments[$row['post_id']], $update_count, $forum_id); + +		// Needed to let not display the inlined attachments at the end of the post again +		foreach ($unset_attachments as $index) +		{ +			unset($attachments[$row['post_id']][$index]); +		} +	} +  	// Highlight active words (primarily for search)  	if ($highlight_match)  	{ @@ -1144,6 +1153,12 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i)  		$message = str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "preg_replace('#\b(" . $highlight_match . ")\b#i', '<span class=\"posthilit\">\\\\1</span>', '\\0')", '>' . $message . '<'), 1, -1));  	} +	if ($row['enable_html'] && $auth->acl_get('f_html', $forum_id)) +	{ +		// Remove Comments from post content? +		$message = preg_replace('#<!\-\-(.*?)\-\->#is', '', $message); +	} +	  	// Replace naughty words such as farty pants  	$row['post_subject'] = censor_text($row['post_subject']);  	$message = str_replace("\n", '<br />', censor_text($message)); @@ -1196,47 +1211,15 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i)  		$l_bumped_by = '';  	} -	if (isset($attachments[$row['post_id']]) && sizeof($attachments[$row['post_id']])) -	{ -		$tpl = &$attachments[$row['post_id']]; -		$tpl = display_attachments($forum_id, NULL, $tpl, $update_count, false, true); -		$tpl_size = sizeof($tpl); - -		$unset_tpl = array(); - -		preg_match_all('#<!\-\- ia([0-9]+) \-\->(.*?)<!\-\- ia\1 \-\->#', $message, $matches); - -		$replace = array(); -		foreach ($matches[0] as $num => $capture) -		{ -			// Flip index if we are displaying the reverse way -			$index = ($config['display_order']) ? ($tpl_size-($matches[1][$num] + 1)) : $matches[1][$num]; - -			$replace['from'][] = $matches[0][$index]; -			$replace['to'][] = (isset($tpl[$index])) ? $tpl[$index] : sprintf($user->lang['MISSING_INLINE_ATTACHMENT'], $matches[2][$num]); - -			$unset_tpl[] = $index; -		} -		unset($tpl, $tpl_size); +	$cp_row = array(); -		if (isset($replace['from'])) -		{ -			$message = str_replace($replace['from'], $replace['to'], $message); - -			foreach (array_unique($unset_tpl) as $index) -			{ -				unset($attachments[$row['post_id']][$index]); -			} -		} -	} - -	/* Dump vars into template -	if ($config['load_cp_viewtopic']) +	// +	if ($config['load_cpf_viewtopic'])  	{  		$cp_row = (isset($profile_fields_cache[$poster_id])) ? $cp->generate_profile_fields_template('show', false, $profile_fields_cache[$poster_id]) : array();  	} -	*/ +	//  	$postrow = array(  		'POSTER_NAME' 	=> $row['poster'],  		'POSTER_RANK' 	=> $user_cache[$poster_id]['rank_title'], @@ -1290,14 +1273,16 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i)  		'S_DISPLAY_NOTICE'	=> $display_notice && $row['post_attachment'],  		'S_FRIEND'			=> ($row['friend']) ? true : false,  		'S_UNREAD'			=> ($user->data['user_id'] != ANONYMOUS && $row['post_time'] > $user->data['user_lastvisit'] && $row['post_time'] > $topic_last_read) ? true : false, -		'S_FIRST_UNREAD'	=> ($unread_post_id == $row['post_id']) ? true : false +		'S_FIRST_UNREAD'	=> ($unread_post_id == $row['post_id']) ? true : false, +		'S_CUSTOM_FIELDS'	=> (sizeof($cp_row)) ? true : false  	); -/*	if (sizeof($cp_row)) +	if (sizeof($cp_row))  	{  		$postrow = array_merge($postrow, $cp_row); -	}*/ +	} +	// Dump vars into template  	$template->assign_block_vars('postrow', $postrow);  	// Display not already displayed Attachments for this post, we already parsed them. ;) | 
