Recent topic(3.1). Select id of topic or URL

Get help with installation and running phpBB 3.1.x here. Please do not post bug reports, feature requests, or extension related questions here.
Suggested Hosts
Forum rules
READ: phpBB.com Board-Wide Rules and Regulations

NOTE: phpBB 3.1.x is at its End of Life stage and support will NOT be provided after July 1st, 2018.
Locked
iliyasuper
Registered User
Posts: 1
Joined: Sat Apr 28, 2018 3:40 am

Recent topic(3.1). Select id of topic or URL

Post by iliyasuper »

Hi Guys.
Could you help me with my question regarding extension “Recent topic” for phpbb 3.1
So, I have site and by this program I show recent topic on news page, we can see it bellow
http://e46fanatics.com.ua/forum
and script related with site by code bellow

Code: Select all

	<script language="JavaScript" type="text/javascript" src="/forum/recent.php"> </script>
This page is show recent topics from my site, but I need to have possibility to choose in script exactly id of Topic.

Now we have already possibility to choose Forum ID in settings

Code: Select all

/* Config section */

$cfg_ignore_forums = ''; 		// ids of forums you don't want to display, separated by commas or empty
$cfg_only_forums = '3';// ids of forums you only want to display, separated by commas or empty
$cfg_nm_topics = 1;			// number of topics to output
$cfg_max_topic_length = 120; 	// max topic length, if more, title will be shortened
$cfg_show_replies = false; 		// show number of replies to topics
$cfg_show_first_post = true;	// show first posts of the recent topics
$cfg_show_attachments = true;	// show attachments in the first posts of recent topics
/* End of config */
Can some body help me please to implement possibility to select ID of topic or URL of topic ?
Please, I`ve been fighting with this idea already one week without successful :(
Thank you so much.

This is the script

Code: Select all

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
/** 
*
* @package phpBB3
* @version $Id: recent.php,v 1.1.2 2007/08/21 23:21:39 rxu Exp $
* @copyright (c) 2005 phpBB Group 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

/**
* @ignore
*/!

/* Config section */

$cfg_ignore_forums = ''; 		// ids of forums you don't want to display, separated by commas or empty
$cfg_only_forums = '3'; // ids of forums you only want to display, separated by commas or empty
$cfg_nm_topics = 1;			// number of topics to output
$cfg_max_topic_length = 120; 	// max topic length, if more, title will be shortened
$cfg_show_replies = false; 		// show number of replies to topics
$cfg_show_first_post = true;	// show first posts of the recent topics
$cfg_show_attachments = true;	// show attachments in the first posts of recent topics
/* End of config */

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

//
// Let's prevent caching
//
$server_software = $request->server('SERVER_SOFTWARE');
if (!empty($server_software) && strstr($request->server('SERVER_SOFTWARE'), 'Apache/2'))
{
	header ('Cache-Control: no-cache, pre-check=0, post-check=0');
}
else
{
	header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
}
header('Content-type: text/html; charset=UTF-8');
header('Expires: 0');
header('Pragma: no-cache');

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('common');

//
// Building URL
//

$board_path = generate_board_url();
$viewtopic_url = $board_path . '/viewtopic.' . $phpEx;

// Fetching forums that should not be displayed
$forums = implode(',', array_keys($auth->acl_getf('!f_read', true)));
$cfg_ignore_forums = (!empty($cfg_ignore_forums) && !empty($forums)) ? $cfg_ignore_forums . ',' . $forums : ((!empty($forums)) ? $forums : ((!empty($cfg_ignore_forums)) ? $cfg_ignore_forums : ''));

// Building sql for forums that should not be displayed
$sql_ignore_forums = (!empty($cfg_ignore_forums)) ? ' AND t.forum_id NOT IN(' . $cfg_ignore_forums .') ' : '';

// Building sql for forums that should only be displayed
$sql_only_forums = (!empty($cfg_only_forums)) ? ' AND t.forum_id IN(' . $cfg_only_forums .') ' : '';

// Fetching topics of public forums
$sql = 'SELECT t.topic_id, t.forum_id, t.topic_title, t.topic_last_post_id, t.topic_first_post_id, t.topic_posts_approved, t.topic_posts_unapproved, t.topic_posts_softdeleted, p.post_id, p.post_text, p.bbcode_uid, p.bbcode_bitfield, p.post_attachment
	FROM ' . TOPICS_TABLE . ' AS t, ' . POSTS_TABLE . ' AS p, ' . FORUMS_TABLE . " AS f
	WHERE t.forum_id = f.forum_id
		$sql_ignore_forums
		$sql_only_forums 
		AND p.post_id = t.topic_first_post_id
		AND t.topic_moved_id = 0
	ORDER BY t.topic_last_post_id DESC LIMIT $cfg_nm_topics";

$result = $db->sql_query($sql);

$recent_topics = $db->sql_fetchrowset($result);

//
// BEGIN ATTACHMENT DATA
//
if($cfg_show_first_post && $cfg_show_attachments)
{
	$attach_list = $update_count = array();
	foreach ($recent_topics as $post_attachment)
	{
		if ($post_attachment['post_attachment'] && $config['allow_attachments'])
		{
			$attach_list[] = $post_attachment['post_id'];

			if ($post_attachment['post_approved'])
			{
				$has_attachments = true;
			}
		}
	}

	// Pull attachment data
	if (sizeof($attach_list))
	{
		if ($auth->acl_get('u_download') )
		{
			$sql_attach = 'SELECT *
				FROM ' . ATTACHMENTS_TABLE . '
				WHERE ' . $db->sql_in_set('post_msg_id', $attach_list) . '
					AND in_message = 0
				ORDER BY filetime DESC, post_msg_id ASC';
			$result_attach = $db->sql_query($sql_attach);

			while ($row_attach = $db->sql_fetchrow($result_attach))
			{
				$attachments[$row_attach['post_msg_id']][] = $row_attach;
			}
			$db->sql_freeresult($result_attach);
		}
		else
		{
			$display_notice = true;
		}
	}
}
//
// END ATTACHMENT DATA
//

foreach ( $recent_topics as $row )
{
	$topic_title = censor_text($row['topic_title']);
	$topic_title = (utf8_strlen($topic_title) > $cfg_max_topic_length) ? utf8_substr($topic_title, 0, $cfg_max_topic_length) . '&hellip;' : $topic_title;
	$topic_title = str_replace(array("\r\n", "\r", "\n"), '<br />', $topic_title);
	$topic_title = addslashes($topic_title);
	
	// Replies
$phpbb_content_visibility = $phpbb_container->get('content.visibility');
	$replies = $phpbb_content_visibility->get_count('topic_posts', $row, $row['forum_id']) - 1;

	// Instantiate BBCode if need be
	if ($row['bbcode_bitfield'] !== '')
	{
		$bbcode = new bbcode(base64_encode($row['bbcode_bitfield']));
	}

	$message = $row['post_text'];

	// Parse the message
	$message = censor_text($message);

	// Second parse bbcode here
	if ($row['bbcode_bitfield'])
	{
		$bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
	}

	$message = str_replace("\n", '<br />', $message);

	// Always process smilies after parsing bbcodes
	$message = smiley_text($message);
	
	// Parse attachments
	if ($cfg_show_first_post && $cfg_show_attachments && !empty($attachments[$row['post_id']]))
	{
		parse_attachments($row['forum_id'], $message, $attachments[$row['post_id']], $update_count);
	}
	
	$message = str_replace(array("\r\n", "\r", "\n"), '<br />', $message);
	$message = addslashes($message);
	$message = str_replace('./', $board_path . '/', $message);
	$tags = array('dl', 'dt', 'dd');
	$message = strip_selected_tags($message, $tags);
	
	
	$template->assign_block_vars('topicrow', array( 
		'U_TOPIC' 		=> $viewtopic_url . '?f=' . $row['forum_id'] . '&amp;t=' . $row['topic_id'] . '&amp;view=unread#unread' ,
		'TOPIC_TITLE' 	=> $topic_title , 
		'TOPIC_REPLIES'	=> ($cfg_show_replies) ? '[' . $replies . '] ' : '',
		'S_HAS_ATTACHMENTS'		=> ($cfg_show_first_post && $cfg_show_attachments && !empty($attachments[$row['post_id']])) ? true : false,
	));

	if ($cfg_show_first_post)
	{
		$template->assign_block_vars('topicrow.first_post_text', array(
			'TOPIC_FIRST_POST_TEXT' => ($cfg_show_first_post) ? '<span style="color:white">' . $message . '</span>' : ''
		));
	}

	// Display not already displayed Attachments for this post, we already parsed them. ;)
	if ($cfg_show_first_post && $cfg_show_attachments && !empty($attachments[$row['post_id']]))
	{
		foreach ($attachments[$row['post_id']] as $attachment)
		{
			$attachment = str_replace(array("\r\n", "\r", "\n"), '<br />', $attachment);
			$attachment = str_replace('"./', '"' . $board_path . '/', $attachment);
			$tags = array('span', 'dt', 'dd');
			$attachment = strip_selected_tags($attachment, $tags);

			$template->assign_block_vars('topicrow.first_post_text.attachment', array(
				'DISPLAY_ATTACHMENT'	=>  $attachment)
			);
		}
	}

}
$db->sql_freeresult($result);
		
//
// Load template
//
$template->set_filenames(array(
	'body' => 'recent_body.html')
);

//
// Output
//
$template->display('body');



/**
* Works like PHP function strip_tags, but it only removes selected tags.
* Example: * strip_selected_tags('<b>Person:</b> <strong>Larcher</strong>', 'strong') => <b>Person:</b> Larcher
* by Matthieu Larcher 
* http://ru2.php.net/manual/en/function.strip-tags.php#76045
*/
function strip_selected_tags($text, $tags = array())
{
	$args = func_get_args();
	$text = array_shift($args);
	$tags = (func_num_args() > 2) ? array_diff($args,array($text)) : (array)$tags;
	foreach ($tags as $tag)
	{
		while(preg_match('/<'.$tag.'(|\W[^>]*)>(.*)<\/'. $tag .'>/iusU', $text, $found))
		{
			$text = str_replace($found[0],$found[2],$text);
		}
	}

	return preg_replace('/(<('.join('|',$tags).')(|\W.*)\/>)/iusU', '', $text);
}


?>
User avatar
Mick
Support Team Member
Support Team Member
Posts: 26505
Joined: Fri Aug 29, 2008 9:49 am

Re: Recent topic(3.1). Select id of topic or URL

Post by Mick »

To receive extension support please visit our Extensions Database and post in the specific extension's designated support area. The link to the support area for each released extension is also available in the first post of each released extension listed in the [3.2.x] Extension Database Releases forum. For extensions still in development (not recommended for a live board) support is in that extensions's topic in the Extensions in Development forum.
  • "The more connected we get the more alone we become" - Kyle Broflovski©
  • "The good news is hell is just the product of a morbid human imagination.
    The bad news is, whatever humans can imagine, they can usually create.
    " - Harmony Cobel
Locked

Return to “[3.1.x] Support Forum”