aboutsummaryrefslogtreecommitdiff
path: root/engine/lib
diff options
context:
space:
mode:
Diffstat (limited to 'engine/lib')
-rw-r--r--engine/lib/statistics.php13
-rw-r--r--engine/lib/users.php23
2 files changed, 31 insertions, 5 deletions
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