From 8b7cf8710c8cbb5e6db2bc57e05dffc7bfcf0681 Mon Sep 17 00:00:00 2001 From: marcus Date: Thu, 19 Jun 2008 14:15:58 +0000 Subject: Fixes #55 : "Users online now" function git-svn-id: https://code.elgg.org/elgg/trunk@998 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/statistics.php | 13 ++++++++----- engine/lib/users.php | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) (limited to 'engine') diff --git a/engine/lib/statistics.php b/engine/lib/statistics.php index 844cbfa01..8744db4ab 100644 --- a/engine/lib/statistics.php +++ b/engine/lib/statistics.php @@ -79,13 +79,16 @@ } /** - * Return a list of how many users are currently online. - * - * @param int $limit Number of users to return + * Return a list of how many users are currently online, rendered as a view. */ - function get_online_users($limit = 10) + function get_online_users() { - // TODO: Writeme + $objects = find_active_users(); + + if ($objects) + { + return elgg_view_entity_list($objects, count($objects), 0, 10); + } } /** diff --git a/engine/lib/users.php b/engine/lib/users.php index 51cb748c5..3bd87dbff 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -726,6 +726,29 @@ } return false; } + + /** + * A function that returns a maximum of $limit users who have done something within the last + * $seconds seconds. + * + * @param int $seconds Number of seconds (default 600 = 10min) + * @param int $limit Limit, default 10. + * @param int $offset Offset, defualt 0. + */ + function find_active_users($seconds = 600, $limit = 10, $offset = 0) + { + global $CONFIG; + + $seconds = (int)$seconds; + $limit = (int)$limit; + $offset = (int)$offset; + + $time = time() - $seconds; + + $query = "SELECT * from {$CONFIG->dbprefix}entities where type='user' and time_updated>=$time order by time_updated desc limit $offset, $limit"; + + return get_data($query, "entity_row_to_elggstar"); + } /** * Registers a user, returning false if the username already exists -- cgit v1.2.3