<?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 />";
   }
}
?>