• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

XF 1.2 Members on line (alphabetical order)

Liam W

Well-known member
#2
Nope. It's in the order of the most recently active users, and theres no way to change it in the default software.
 

Chris D

XenForo developer
Staff member
#4
It's possible with a very simple code edit:

Open the file: library/XenForo/Model/Session.php

Find:

PHP:
public function getSessionActivityQuickList(array $viewingUser, array $conditions = array(), array $forceInclude = null)
Shortly below that you'll see:

PHP:
        $fetchOptions = array(
            'join' => self::FETCH_USER,
            'order' => 'view_date'
        );
Change 'view_date' to 'username'.
 

tommydamic68

Well-known member
#5
It's possible with a very simple code edit:

Open the file: library/XenForo/Model/Session.php

Find:

PHP:
public function getSessionActivityQuickList(array $viewingUser, array $conditions = array(), array $forceInclude = null)
Shortly below that you'll see:

PHP:
        $fetchOptions = array(
            'join' => self::FETCH_USER,
            'order' => 'view_date'
        );
Change 'view_date' to 'username'.
Will try shortly. And on your add on "members who visited in the last 24 hrs"? :D
 

tommydamic68

Well-known member
#6
It's possible with a very simple code edit:

Open the file: library/XenForo/Model/Session.php

Find:

PHP:
public function getSessionActivityQuickList(array $viewingUser, array $conditions = array(), array $forceInclude = null)
Shortly below that you'll see:

PHP:
        $fetchOptions = array(
            'join' => self::FETCH_USER,
            'order' => 'view_date'
        );
Change 'view_date' to 'username'.
Worked! Thanks @Chris Deeming!
 

Chris D

XenForo developer
Staff member
#8
Yes, it's the same premise.

Almost exactly the same, actually.

I think the file is WhoHasVisited/Model/WhoHasVisited.php

I'm sure you'll find it.
 

tommydamic68

Well-known member
#9
I didn't fine the exact code as you mentioned above. Do you see anything here that would do the trick?
Yes, it's the same premise.

Almost exactly the same, actually.

I think the file is WhoHasVisited/Model/WhoHasVisited.php

I'm sure you'll find it.
Code:
<?php



class WhoHasVisited_Model_WhoVisited extends XenForo_Model

{

    public function updateWhoVisitedCache()

    {

        $whoVisited = $this->getWhoVisited();

       

        XenForo_Application::setSimpleCacheData('whoHasVisited', $whoVisited);

       

        return $whoVisited;

    }

   

    public function getWhoVisited()

    {

        $timeRange = $this->getTimeRange();

       

        $users = $this->fetchAllKeyed("

            SELECT

                user.user_id, user.username,

                user.avatar_date, user.last_activity,

                user.visible, user.is_banned,

                user.display_style_group_id, activity.view_date

            FROM xf_user AS user

            LEFT JOIN xf_session_activity AS activity ON

                (user.user_id = activity.user_id)

            WHERE last_activity BETWEEN

                $timeRange[from] AND $timeRange[to]

            ORDER BY last_activity DESC

        ", 'user_id');

       

        $whoHasVisited = array(

            'time' => XenForo_Application::$time,

            'users' => $users,

        );

       

        foreach ($whoHasVisited['users'] AS &$user)

        {

            $user['last_activity'] = $user['view_date'] > $user['last_activity'] ? $user['view_date'] : $user['last_activity'];

        }

       

        return $whoHasVisited;

    }

   

    public function getWhoVisitedFromCache()

    {

        $options = XenForo_Application::get('options');

        $currentTime = XenForo_Application::$time;

       

        if ($options->whoHasVisitedCached)

        {

            $whoHasVisited = XenForo_Application::getSimpleCacheData('whoHasVisited');

           

            if (empty($whoHasVisited))

            {

                return $this->updateWhoVisitedCache();

            }

           

            if (!empty($whoHasVisited['time']) && ($currentTime - $whoHasVisited['time']) <= ($options->whoHasVisitedCached * 60))

            {

                return $whoHasVisited;

            }

           

            return $this->updateWhoVisitedCache();

        }

       

        return $this->getWhoVisited();

    }   

   

    public function getTimeRange()

    {

        $options = XenForo_Application::get('options');

       

        $timeRange = array(

            'to' => XenForo_Application::$time,

            'from' => XenForo_Application::$time - ($options->whoHasVisitedHours * 60 * 60)

        );

       

        return $timeRange;

    }

   

    public function prepareWhoHasVisited(array $whoHasVisited)

    {

        foreach ($whoHasVisited['users'] AS $key => &$user)

        {

            if (!$this->getModelFromCache('XenForo_Model_User')->canBypassUserPrivacy())

            {

                if (!$user['visible'])

                {

                    unset($whoHasVisited['users'][$key]);

                }

               

                if ($user['is_banned'])

                {

                    unset($whoHasVisited['users'][$key]);

                }                   

            }

        }

       

        $options = XenForo_Application::get('options');

       

        $whoHasVisited['count'] = count($whoHasVisited['users']);

       

        $whoHasVisited['display_users'] = array_slice($whoHasVisited['users'], 0, $options->whoHasVisitedLimit, true);

        $whoHasVisited['display_count'] = count($whoHasVisited['display_users']);

       

        $whoHasVisited['hide_users'] = array_slice($whoHasVisited['users'], $options->whoHasVisitedLimit, NULL, true);

        $whoHasVisited['hide_count'] = count($whoHasVisited['hide_users']);

       

        return $whoHasVisited;

    }

   

    public function canViewWhoVisited(array $viewingUser = null)

    {

        $this->standardizeViewingUserReference($viewingUser);

       

        $userGroups = XenForo_Application::get('options')->whoHasVisitedGroup;

       

        return $this->getModelFromCache('XenForo_Model_User')->isMemberOfUserGroup($viewingUser, $userGroups);

    }

}
 

Chris D

XenForo developer
Staff member
#16
Yeah... I would ask you to get it from the Server Error log in the Admin CP, but I don't why you would get an error there so it would be good to see if that error still happens.
 

Chris D

XenForo developer
Staff member
#19
Could you get the error out of the Server Error log in the Admin CP?

I'm still intrigued!

Sorry, my bad.

Change:

PHP:
ORDER BY user.username DESC
to

PHP:
ORDER BY user.username ASC