MyBB Community Forums

Full Version: Use {$onlinemembers} and {$index_stats} In Footer
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
I prefer to use a plugin because if I never released the theme I am working on I don't want to tell people to make core edits and such.

Anyway now all I need is a way to get the online members usernames to display in the footer. Any help?
(2018-04-14, 05:12 PM)Brian. Wrote: [ -> ]I prefer to use a plugin because if I never released the theme I am working on I don't want to tell people to make core edits and such.

Anyway now all I need is a way to get the online members usernames to display in the footer. Any help?
Ah, I thought it was for personal project's use. My mistake, plugin is the correct way in this case.

Use the same code I gave in first post and add that in plugin file, also add language variable and use below hook for global.php.
global_end
Voila, you will have the plugin ready for this Smile
Confused ... Like this? Also how do I add the language variable.

<?php

// Disallow direct access to this file for security reasons
if(!defined("IN_MYBB"))
{
	die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

$plugins->add_hook("global_end", "fonline_global");

function fonline_info()
{
	return array(
		"name"			=> "Stats in Footer - Online",
		"description"	=> "Loads the online users in the footer.",
		"website"		=> "",
		"author"		=> "",
		"authorsite"	=> "",
		"version"		=> "1.0",
		"guid" 		=> "",
		"compatibility" => "18*"
		
	);
}

function fonline_global()
{
 $statspage = '';
if($mybb->settings['statsenabled'] != 0)
{
    eval('$statspage = "'.$templates->get('index_statspage').'";');
}
$whosonline = '';
if($mybb->settings['showwol'] != 0 && $mybb->usergroup['canviewonline'] != 0)
{
    // Get the online users.
    if($mybb->settings['wolorder'] == 'username')
    {
        $order_by = 'u.username ASC';
        $order_by2 = 's.time DESC';
    }
    else
    {
        $order_by = 's.time DESC';
        $order_by2 = 'u.username ASC';
    }
    $timesearch = TIME_NOW - (int)$mybb->settings['wolcutoff'];
    $comma = '';
    $query = $db->query("
        SELECT s.sid, s.ip, s.uid, s.time, s.location, s.location1, u.username, u.invisible, u.usergroup, u.displaygroup
        FROM ".TABLE_PREFIX."sessions s
        LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)
        WHERE s.time > '".$timesearch."'
        ORDER BY {$order_by}, {$order_by2}
    ");
    $forum_viewers = $doneusers = array();
    $membercount = $guestcount = $anoncount = $botcount = 0;
    $onlinemembers = $comma = '';
    // Fetch spiders
    $spiders = $cache->read('spiders');
    // Loop through all users.
    while($user = $db->fetch_array($query))
    {
        // Create a key to test if this user is a search bot.
        $botkey = my_strtolower(str_replace('bot=', '', $user['sid']));
        // Decide what type of user we are dealing with.
        if($user['uid'] > 0)
        {
            // The user is registered.
            if(empty($doneusers[$user['uid']]) || $doneusers[$user['uid']] < $user['time'])
            {
                // If the user is logged in anonymously, update the count for that.
                if($user['invisible'] == 1)
                {
                    ++$anoncount;
                }
                ++$membercount;
                if($user['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $user['uid'] == $mybb->user['uid'])
                {
                    // If this usergroup can see anonymously logged-in users, mark them.
                    if($user['invisible'] == 1)
                    {
                        $invisiblemark = '*';
                    }
                    else
                    {
                        $invisiblemark = '';
                    }
                    // Properly format the username and assign the template.
                    $user['username'] = format_name(htmlspecialchars_uni($user['username']), $user['usergroup'], $user['displaygroup']);
                    $user['profilelink'] = build_profile_link($user['username'], $user['uid']);
                    eval('$onlinemembers .= "'.$templates->get('index_whosonline_memberbit', 1, 0).'";');
                    $comma = $lang->comma;
                }
                // This user has been handled.
                $doneusers[$user['uid']] = $user['time'];
            }
        }
        elseif(my_strpos($user['sid'], 'bot=') !== false && $spiders[$botkey])
        {
            // The user is a search bot.
            $onlinemembers .= $comma.format_name($spiders[$botkey]['name'], $spiders[$botkey]['usergroup']);
            $comma = $lang->comma;
            ++$botcount;
        }
        else
        {
            // The user is a guest.
            ++$guestcount;
        }
        if($user['location1'])
        {
            ++$forum_viewers[$user['location1']];
        }
    }
    // Build the who's online bit on the index page.
    $onlinecount = $membercount + $guestcount + $botcount;
    if($onlinecount != 1)
    {
        $onlinebit = $lang->online_online_plural;
    }
    else
    {
        $onlinebit = $lang->online_online_singular;
    }
    if($membercount != 1)
    {
        $memberbit = $lang->online_member_plural;
    }
    else
    {
        $memberbit = $lang->online_member_singular;
    }
    if($anoncount != 1)
    {
        $anonbit = $lang->online_anon_plural;
    }
    else
    {
        $anonbit = $lang->online_anon_singular;
    }
    if($guestcount != 1)
    {
        $guestbit = $lang->online_guest_plural;
    }
    else
    {
        $guestbit = $lang->online_guest_singular;
    }
    $lang->online_note = $lang->sprintf($lang->online_note, my_number_format($onlinecount), $onlinebit, $mybb->settings['wolcutoffmins'], my_number_format($membercount), $memberbit, my_number_format($anoncount), $anonbit, my_number_format($guestcount), $guestbit);
    eval('$whosonline = "'.$templates->get('index_whosonline').'";');
}

// Build the forum statistics to show on the index page.
$forumstats = '';
if($mybb->settings['showindexstats'] != 0)
{
    // First, load the stats cache.
    $stats = $cache->read('stats');
    // Check who's the newest member.
    if(!$stats['lastusername'])
    {
        $newestmember = $lang->nobody;;
    }
    else
    {
        $newestmember = build_profile_link($stats['lastusername'], $stats['lastuid']);
    }
    // Format the stats language.
    $lang->stats_posts_threads = $lang->sprintf($lang->stats_posts_threads, my_number_format($stats['numposts']), my_number_format($stats['numthreads']));
    $lang->stats_numusers = $lang->sprintf($lang->stats_numusers, my_number_format($stats['numusers']));
    $lang->stats_newestuser = $lang->sprintf($lang->stats_newestuser, $newestmember);
    // Find out what the highest users online count is.
    $mostonline = $cache->read('mostonline');
    if($onlinecount > $mostonline['numusers'])
    {
        $time = TIME_NOW;
        $mostonline['numusers'] = $onlinecount;
        $mostonline['time'] = $time;
        $cache->update('mostonline', $mostonline);
    }
    $recordcount = $mostonline['numusers'];
    $recorddate = my_date($mybb->settings['dateformat'], $mostonline['time']);
    $recordtime = my_date($mybb->settings['timeformat'], $mostonline['time']);
    // Then format that language string.
    $lang->stats_mostonline = $lang->sprintf($lang->stats_mostonline, my_number_format($recordcount), $recorddate, $recordtime);
    eval('$forumstats = "'.$templates->get('index_stats').'";');
}

// Show the board statistics table only if one or more index statistics are enabled.
$boardstats = '';
if(($mybb->settings['showwol'] != 0 && $mybb->usergroup['canviewonline'] != 0) || $mybb->settings['showindexstats'] != 0 || ($mybb->settings['showbirthdays'] != 0 && $bdaycount > 0))
{
    if(!isset($stats) || isset($stats) && !is_array($stats))
    {
        // Load the stats cache.
        $stats = $cache->read('stats');
    }
    eval('$boardstats = "'.$templates->get('index_boardstats').'";');
}  
}
?>
Pages: 1 2