Code:
<?php
/**
* Copyright c 2006-2008 CraKteR, crakter [at] gmail [dot] com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @version $Id: onlinetoday.php 29 2008-08-14 19:00:36Z CraKteR $
* @copyright $LastChangedDate: 2008-08-14 21:00:36 +0200 (to, 14 aug 2008) $
* @author CraKteR <crakter@gmail.com>
* @modified by MrBrechreiz
*/
if(!defined("IN_MYBB"))
{
die("This file cannot be accessed directly.");
}
$plugins->add_hook('index_start', 'add_onlinetoday', 1000000);
function onlinetoday_info()
{
global $mybb, $cache, $db;
$online_today_config_link = '';
$query = $db->simple_select('settinggroups', '*', "name='online_today'");
if (count($db->fetch_array($query)))
{
$online_today_config_link = '<div style="float: right;"><a href="index.php?module=config&action=change&search=online_today" style="color:#035488; background: url(../images/usercp/options.gif) no-repeat 0px 18px; padding: 18px; text-decoration: none;">Zu den Einstellungen</a></div>';
}
return array(
"name" => "<span style=\"font-familiy: arial; font-size: 1em; color: green;\">Anzeigen der Mitglieder in den letzten 24 Stunden</span>",
"description" => "Welche Mitglieder waren in den letzten 24 Stunden Online.<br /><i>Modifiziert von <a href=\"https://www.mybb.de/forum/user-5076.html\" target=\"_blank\">MrBrechreiz</a></i><br /> {$online_today_config_link}",
"website" => "",
"author" => "CraKteR",
"authorsite" => "mailto:crakter@gmail.com",
"version" => "2.0",
"compatibility" => "18*",
);
}
function onlinetoday_activate()
{
global $mybb, $db, $templates;
$setting_group = array(
"name" => "online_today",
"title" => "Wer war Online in den letzten 24 Stunden",
"description" => "Einstellungen zu \"Wer war Online in den letzten 24 Stunden\"",
"disporder" => 35,
"isdefault" => 0,
);
$gid = $db->insert_query("settinggroups", $setting_group);
$setting = array(
"name" => "online_today_status",
"title" => "Plugin aktivieren / deaktivieren",
"description" => "Soll das Plugin aktiviert oder deaktiviert werden ?",
"optionscode" => "onoff",
"value" => 0,
"disporder" => 1,
"gid" => (int)$gid
);
$db->insert_query('settings',$setting);
$setting = array(
"name" => "online_today_avatar",
"title" => "Mitglieder Avatar",
"description" => "Soll der Avatar der Mitglieder angezeigt werden ?",
"optionscode" => "yesno",
"value" => 1,
"disporder" => 2,
"gid" => (int)$gid
);
$db->insert_query('settings',$setting);
rebuild_settings();
$template = array(
"tid" => NULL,
"title" => "online_today_index",
"template" => "
<tr>
<td class=\"tcat\" colspan=\"3\"><strong>{\$lang->whos_online_today}</strong> [<a href=\"online.php?action=today\">{\$lang->complete_list}</a>]</td>
</tr>
<tr>
<td class=\"trow1\" colspan=\"3\"><span class=\"smalltext\">{\$lang->online_note_today}<br />{\$onlinemembers}</span></td>
</tr>",
"sid" => "-1"
);
$db->insert_query("templates", $template);
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('index_boardstats', '#{\$whosonline}#', "{\$whosonline}\n{\$online_today}");
}
function onlinetoday_deactivate()
{
global $mybb, $cache, $db;
$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='online_today_index'");
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('index_boardstats', '#(\n?){\$online_today}#', '', 0);
$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE name='online_today'");
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='online_today_status'");
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name='online_today_avatar'");
rebuild_settings();
}
function add_onlinetoday()
{
global $db, $mybb, $templates, $online_today, $lang, $theme;
if($mybb->settings['online_today_status'] == '0' && $mybb->settings['online_today_avatar'] == '0')
{
return false;
}
$online_today = '';
if($mybb->settings['showwol'] != 0 && $mybb->usergroup['canviewonline'] != 0 && $mybb->settings['online_today_status'] != 0)
{
$lang->load("onlinetoday");
$lang->load("index");
$timesearch = time() - 24*60*60;
$queries = array();
$queries[] = $db->simple_select(
"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.avatar",
"u.lastactive > $timesearch ORDER BY u.username ASC, s.time DESC"
);
$queries[] = $db->simple_select(
"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, u.avatar",
"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($mybb->settings['online_today_avatar'] == '1')
{
$avatar = format_avatar($user['avatar'], $user['dimensions']);
$avatarurl = $avatar['image'];
$dimensions = " style=\"height:20px;width:20px;\"";
$onlineavatar = "<img src=\"{$avatarurl}\" {$dimensions} alt=\"{$avatarurl}\" />";
}else{
$onlineavatar = "";
}
if($user['invisible'] == 1)
{
++$anoncount;
}
++$membercount;
if($user['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $user['uid'] == $mybb->user['uid'])
{
$invisiblemark = ($user['invisible'] == 1) ? "*" : "";
$username = format_name($user['username'], $user['usergroup'], $user['displaygroup']);
$query = $db->simple_select("usergroups", "gid, title, usertitle", "gid=".$user['usergroup']."");
while($usergroup = $db->fetch_array($query))
{
$titlename = $usergroup['title'];
}
$title = " title=\"Dieses Mitglied gehört zu der Gruppe $titlename\"";
$user['profilelink'] = build_profile_link($username, $user['uid']);
$onlinemembers .= "{$comma}{$onlineavatar}<span class=\"smalltext\"$title>{$user['profilelink']}</span>{$invisiblemark}";
$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 = $lang->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")."\";");
}
}
?>