<?php
/**
 * Copyright  2006 CraKteR.
 */
if(!defined("IN_MYBB")) {
    die("This file cannot be accessed directly.");
}
$plugins->add_hook('index_end', 'add_onlinetoday', 1000000);
function onlinetoday_info() {
    return array(
        "name"            =>    "Show the users that has been online today",
        "description"    =>    "Shows the users that has been online within 24 hours.",
        "website"        =>    "http://mcdcpp.net/",
        "author"        =>    "CraKteR",
        "authorsite"    =>    "http://mcdcpp.net/",
        "version"        =>    "1.2.2"
    );
}
function onlinetoday_activate() {
    global $db;
    $template = array(
        "title"        => "online_today_index",
        "template"    => "<tr>
    <td class=\"tcat\"><strong>{\$lang->whos_online_today}</strong> [<a href=\"online.php?action=today\">{\$lang->complete_list}</a>]</td>
</tr>
<tr>
    <td class=\"trow1\"><span class=\"smalltext\">{\$lang->online_note_today}<br />{\$onlinemembers}</span></td>
</tr>",
        "sid"        => -1
    );
    $db->insert_query(TABLE_PREFIX."templates", $template);
    require MYBB_ROOT."/inc/adminfunctions_templates.php";
    find_replace_templatesets('index', '#{\$whosonline}#', "{\$whosonline}\n{\$online_today}");
}
function onlinetoday_deactivate() {
    global $db;
    $db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='online_today_index'");
    require MYBB_ROOT."/inc/adminfunctions_templates.php";
    find_replace_templatesets('index', '#(\n?){\$online_today}#', '', 0);
}
function add_onlinetoday() {
    global $db, $mybb, $templates, $online_today, $lang, $theme;
    $online_today = '';
    if($mybb->settings['showwol'] != "no" && $mybb->usergroup['canviewonline'] != "no") {
        $timesearch = time() - 24*60*60;
        $queries = array();
        $queries[] = $db->simple_select(
            TABLE_PREFIX."users u LEFT JOIN ".TABLE_PREFIX."sessions s ON (u.uid=s.uid)", 
            "s.sid, s.ip, s.time, s.location, u.uid, u.username, u.invisible, u.usergroup, u.displaygroup",
            "u.lastactive > $timesearch ORDER BY u.username ASC, s.time DESC"
        );
        $queries[] = $db->simple_select(
            TABLE_PREFIX."sessions s LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)",
            "s.sid, s.ip, s.uid, s.time, s.location, u.username, u.invisible, u.usergroup, u.displaygroup",
            "s.time>'$timesearch' ORDER BY u.username ASC, s.time DESC"
        );
        $comma = $onlinemembers = '';
        $membercount = $guestcount = $anoncount = 0;
        $doneusers = $ips = array();
        foreach($queries as $query) {
            while($user = $db->fetch_array($query)) {
                if(isset($user['sid'])) {
                    $botkey = strtolower(str_replace("bot=", '', $user['sid']));
                }
                if($user['uid'] > 0) {
                    if($doneusers[$user['uid']] < $user['time'] || !$doneusers[$user['uid']]) {
                        if($user['invisible'] == "yes") {
                            ++$anoncount;
                        }
                        ++$membercount;
                        if($user['invisible'] != "yes" || $mybb->usergroup['canviewwolinvis'] == "yes" || $user['uid'] == $mybb->user['uid']) {
                            $invisiblemark = ($user['invisible'] == "yes") ? "*" : "";
                            $user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']);
                            eval("\$onlinemembers .= \"".$templates->get("index_whosonline_memberbit", 1, 0)."\";");
                            $comma = ", ";
                        }
                        if(isset($user['time'])) {
                            $doneusers[$user['uid']] = $user['time'];
                        } else {
                            $doneusers[$user['uid']] = $user['lastactive'];
                        }
                    }
                } else if(strstr($user['sid'], "bot=") !== false && $session->bots[$botkey] && !in_array($user['ip'], $ips)) {
                    $onlinemembers .= $comma.format_name($session->bots[$botkey], $session->botgroup);
                    $comma = ", ";
                    ++$botcount;
                } else {
                    ++$guestcount;
                    $guests[] = $user['ip'];
                }
            }
        }
        $onlinecount = $membercount + $guestcount;
        $onlinebit = ($onlinecount != 1) ? $lang->online_online_plural : $lang->online_online_singular;
        $memberbit = ($membercount != 1) ? $lang->online_member_plural : $lang->online_member_singular;
        $anonbit = ($anoncount != 1) ? $lang->online_anon_plural : $lang->online_anon_singular;
        $guestbit = ($guestcount != 1) ? $lang->online_guest_plural : $lang->online_guest_singular;
        $lang->online_note_today = sprintf($lang->online_note_today, my_number_format($onlinecount), $onlinebit, 24, my_number_format($membercount), $memberbit, my_number_format($anoncount), $anonbit, my_number_format($guestcount), $guestbit);
        eval("\$online_today = \"".$templates->get("online_today_index")."\";");
    }
}
?>