Forum Link to Topic Title
Posted: 14 Apr 2012, 09:36
Forum Link to Topic Title
Written by BartVB and 4_seven
This is one of the forgotten snippets.
It changes internal links to topic title.
Internal forum link example: Top Stats
Internal forum topic example: viewtopic.php?f=37&t=1346
Internal forum post example: General Error (Post by KreatorTeam #8664)
Open: includes/functions_content.php
Find:
Replace with:
Find:
Replace with:
Find:
Add before:
Written by BartVB and 4_seven
This is one of the forgotten snippets.
It changes internal links to topic title.
Internal forum link example: Top Stats
Internal forum topic example: viewtopic.php?f=37&t=1346
Internal forum post example: General Error (Post by KreatorTeam #8664)
Open: includes/functions_content.php
Find:
Code: Select all
$text = $relative_url;
Code: Select all
$text = fetch_forumtitle($url);
Code: Select all
$text = htmlspecialchars($text);
Code: Select all
$text = str_replace('&', '&', $text);
Code: Select all
/**
* make_clickable function
Code: Select all
/**
* BartVB Show actual forumname or topic title instead of link to forum URLs
*/
function fetch_forumtitle($url)
{
global $db, $auth;
// Search for relevant URL parameters (preceded by '?' or 'amp;'
if(preg_match_all('/(?:\?|&)([ptf])=(\d+)/', $url, $matches))
{
$post_id = $topic_id = $forum_id = 0;
foreach($matches[1] as $set => $param)
{
switch ($param)
{
case 'p':
$post_id = $matches[2][$set];
break;
case 't':
$topic_id = $matches[2][$set];
break;
case 'f':
$forum_id = $matches[2][$set];
break;
}
}
if ($forum_id != 0 && !$auth->acl_get('f_read', $forum_id))
{
return $url;
}
if ($topic_id != 0 || $post_id != 0)
{
$sql = "SELECT
t.forum_id, topic_title, forum_name " . ($post_id != 0 ? ", username" : "") . "
FROM " .
($post_id != 0 ? POSTS_TABLE . " p, " . USERS_TABLE . " u, " : "") .
TOPICS_TABLE . " t
LEFT JOIN " . FORUMS_TABLE . " f ON (t.forum_id = f.forum_id)
WHERE " .
($post_id != 0 ? "post_id = $post_id AND p.topic_id = t.topic_id AND p.poster_id = u.user_id " : "topic_id = " . $topic_id);
$result = $db->sql_query($sql);
if($row = $db->sql_fetchrow($result))
{
if (!$auth->acl_get('f_read', $row['forum_id']))
{
return $url;
}
$username = ($post_id != 0) ? $row['username'] . " @ " : '';
$forum_abbr = (preg_match('/^(\[.+\])/', $row['forum_name'], $matches)) ? $matches[1] . ' ' : '';
return $username . $forum_abbr . $row['topic_title'];
}
}
elseif ($forum_id != 0)
{
$sql = "SELECT forum_name FROM " . FORUMS_TABLE . " WHERE forum_id = " . $forum_id;
$result = $db->sql_query($sql);
if ($row = $db->sql_fetchrow($result))
{
return $row['forum_name'];
}
}
}
return $url;
}