123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- /**
- * Elgg statistics library.
- *
- * This file contains a number of functions for obtaining statistics about the running system.
- * These statistics are mainly used by the administration pages, and is also where the basic
- * views for statistics are added.
- *
- * @package Elgg.Core
- * @subpackage Statistics
- */
- /**
- * Return an array reporting the number of various entities in the system.
- *
- * @param int $owner_guid Optional owner of the statistics
- *
- * @return array
- */
- function get_entity_statistics($owner_guid = 0) {
- $owner_guid = (int) $owner_guid;
- $entity_stats = array();
- $grouped_entities = elgg_get_entities(array(
- 'selects' => array('COUNT(*) as cnt'),
- 'owner_guids' => ($owner_guid) ? : ELGG_ENTITIES_ANY_VALUE,
- 'group_by' => 'e.type, e.subtype',
- 'limit' => 0,
- 'order_by' => 'cnt DESC',
- ));
-
- if (!empty($grouped_entities)) {
- foreach ($grouped_entities as $entity) {
- $type = $entity->getType();
- if (!isset($entity_stats[$type]) || !is_array($entity_stats[$type])) {
- $entity_stats[$type] = array();
- }
- $subtype = $entity->getSubtype();
- if (!$subtype) {
- $subtype = '__base__';
- }
- $entity_stats[$type][$subtype] = $entity->getVolatileData('select:cnt');
- }
- }
- return $entity_stats;
- }
- /**
- * Return the number of users registered in the system.
- *
- * @param bool $show_deactivated Count not enabled users?
- *
- * @return int
- */
- function get_number_users($show_deactivated = false) {
- global $CONFIG;
- $access = "";
- if (!$show_deactivated) {
- $access = "and " . _elgg_get_access_where_sql(array('table_alias' => ''));
- }
- $query = "SELECT count(*) as count
- from {$CONFIG->dbprefix}entities where type='user' $access";
- $result = get_data_row($query);
- if ($result) {
- return $result->count;
- }
- return false;
- }
- /**
- * Render a list of currently online users
- *
- * @tip This also support options from elgg_list_entities().
- *
- * @param array $options Options array with keys:
- *
- * seconds (int) => Number of seconds (default 600 = 10min)
- *
- * @return string
- */
- function get_online_users(array $options = array()) {
- $options = array_merge(array(
- 'seconds' => 600,
- ), $options);
- return elgg_list_entities($options, 'find_active_users');
- }
- /**
- * Initialise the statistics admin page.
- *
- * @return void
- * @access private
- */
- function statistics_init() {
- elgg_extend_view('core/settings/statistics', 'core/settings/statistics/online');
- elgg_extend_view('core/settings/statistics', 'core/settings/statistics/numentities');
- }
- return function(\Elgg\EventsService $events, \Elgg\HooksRegistrationService $hooks) {
- $events->registerHandler('init', 'system', 'statistics_init');
- };
|