<?php
//Latest Posts Board Index Mod by Borbole
//Trying to access directly the file, are we :D
if(!defined("IN_MYBB"))
{
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}
//Hooking into index_start with our function
$plugins->add_hook("index_start", "recentposts_box");
//Show some info about our mod
function recentpostsindex_info()
{
return array(
"name" => "Recent Posts Forum Index",
"description" => "It shows the recent posts on your board index.",
"website" => "http://www.forumservices.eu/mybb",
"version" => "1.0",
"author" => "borbole",
"authorsite" => "http://www.forumservices.eu/mybb",
"compatibility" => "16*",
'guid' => 'f8cd8d11a353a4f58a29fbc0d72ec9c3'
);
}
//Activate it
function recentpostsindex_activate()
{
global $db;
//Insert the mod settings in the forumhome settinggroup. It looks beter there :D
$query = $db->simple_select("settinggroups", "gid", "name='forumhome'");
$gid = $db->fetch_field($query, "gid");
$setting = array(
'name' => 'enable',
'title' => 'Recent Posts Forum Index',
'description' => 'Would you like to display the Recent Posts Box at your board index?',
'optionscode' => 'yesno',
'value' => '1',
'disporder' => '90',
'gid' => intval($gid)
);
$db->insert_query('settings',$setting);
$setting = array(
"name" => "limit_posts_nr",
"title" => "Recent Posts!",
"description" => "Enter here the number of the recent posts that you would like to show at the forum index. By default it set to show 5 posts.",
"optionscode" => "text",
"value" => "5",
"disporder" => "91",
"gid" => intval($gid),
);
$db->insert_query("settings", $setting);
rebuild_settings();
//Add our custom var in the index template to display the latest posts box
require_once MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets("index", "#".preg_quote('{$header}') . "#i", '{$header}' . "\n" . '{$recentposts}');
}
//Don't want to use it anymore? Let 's deactivate it then and drop the settings and the custom var as well
function recentpostsindex_deactivate()
{
global $db;
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='enable'");
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='limit_posts_nr'");
rebuild_settings();
require_once MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets("index", "#".preg_quote('{$header}' . "\n" . '{$recentposts}') . "#i", '{$header}',0);
}
//Insert our function
function recentposts_box()
{
global $db, $mybb, $lang, $theme, $recentposts;
//Enable it
if($mybb->settings['enable'] == 1 )
{
//Load the language files and set up the table for the recent posts box
$lang->load('recentpostsindex');
$recentposts .= '
<table border="0" cellspacing="' . $theme['borderwidth'] . '" cellpadding="' . $theme['tablespace'] . '" class="tborder">
<tbody>
<tr>
<td class="thead" colspan="4" align="left">
<strong>' . $lang->recentpostname . '</strong>
</td>
</tr>
<tr>
<td class="tcat" width="25%"><span class="smalltext"><strong>' . $lang->postforum . '</strong></span></td>
<td class="tcat" align="center" width="15%"><span class="smalltext"><strong>' . $lang->lastposttime . '</strong></span></td>
<td class="tcat" align="center" width="20%"><span class="smalltext"><strong>' . $lang->poster . '</strong></span></td>
<td class="tcat" align="center" width="35%"><span class="smalltext"><strong>' . $lang->recentpoststitle . '</strong></span></td>
</tr>
';
//Preserve the forum viewing permissions intact
$fids = "";
$unviewablefids = get_unviewable_forums();
if($unviewablefids)
{
$fids = "WHERE t.fid NOT IN ({$unviewablefids})";
}
//Exclude inactive forums from showing up
$inactivefids = get_inactive_forums();
if ($inactivefids)
{
$fids .= " WHERE t.fid NOT IN ($inactivefids)";
}
//Run the query to get the most recent posts along with their posters, time and forums
$query = $db->query("
SELECT t.tid, t.fid, t.subject, t.lastpost,
t.lastposter, t.lastposteruid, f.name,
u.usergroup, u.displaygroup
FROM ".TABLE_PREFIX."threads AS t
INNER JOIN ".TABLE_PREFIX."forums as f
ON (f.fid = t.fid)
LEFT JOIN " . TABLE_PREFIX . "users AS u
ON (t.lastposteruid = u.uid)
{$fids}
AND t.visible = '1'
GROUP BY t.tid
ORDER BY t.lastpost DESC
LIMIT " . $mybb->settings['limit_posts_nr']);
while($row = $db->fetch_array($query))
{
$recentposts .= '
<tr>';
//Trim the thread titles if they are over 49 characters
$subject = htmlspecialchars_uni($row['subject']);
if (strlen($subject) > 49)
{
$subject = substr($subject, 0, 49) . "...";
}
//Trim the usernames if they are over 9 characters
if (strlen($row['lastposter']) > 9)
{
$row['lastposter'] = substr($row['lastposter'], 0, 9) . "...";
}
//Trim the forum names if they are over 19 characters so everything will be in porpotion
if (strlen($row['name']) > 19)
{
$row['name'] = substr($row['name'], 0, 19) . "...";
}
//Get the date and time of the most recent posts
$lastpostdate = my_date($mybb->settings['dateformat'], $row['lastpost']);
$lastposttime = my_date($mybb->settings['timeformat'], $row['lastpost']);
//Get the usernames and make them pretty too with the group styling
$username = build_profile_link(format_name($row['lastposter'],$row['usergroup'],$row['displaygroup']), $row['lastposteruid']);
//Display them all trimmed up and pretty :D
$recentposts .= '
<td class="trow2" align="left" width="25%">
<a href="forumdisplay.php?&fid=' . $row['fid'] . '">' . $row['name'] . '</a>
</td>
<td class="trow1" align="center" width="15%">
' .$lastpostdate . ' ' . $lastposttime . '
</td>
<td class="trow2" align="center" width="15%">
' . $username . '
</td>
<td class="trow1" align="center" width="35%">
<a href="showthread.php?tid=' . $row['tid'] . '&action=lastpost">' . $subject .'</a>
</td>
</tr>';
}
//End of mod. I hope you enjoy it as much as I did coding it :)
$recentposts .= "</tbody></table><br /><br />";
}
}
?>