| @@ 323-390 (lines=68) @@ | ||
| 320 | } |
|
| 321 | } |
|
| 322 | ||
| 323 | function who_is_online_count($time_limit = null, $friends = false) |
|
| 324 | { |
|
| 325 | if (empty($time_limit)) { |
|
| 326 | $time_limit = api_get_setting('time_limit_whosonline'); |
|
| 327 | } else { |
|
| 328 | $time_limit = intval($time_limit); |
|
| 329 | } |
|
| 330 | $track_online_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ONLINE); |
|
| 331 | $friend_user_table = Database::get_main_table(TABLE_MAIN_USER_REL_USER); |
|
| 332 | $table_user = Database::get_main_table(TABLE_MAIN_USER); |
|
| 333 | $online_time = time() - $time_limit * 60; |
|
| 334 | $current_date = api_get_utc_datetime($online_time); |
|
| 335 | ||
| 336 | if ($friends) { |
|
| 337 | // who friends from social network is online |
|
| 338 | $query = "SELECT DISTINCT count(login_user_id) as count |
|
| 339 | FROM $track_online_table INNER JOIN $friend_user_table |
|
| 340 | ON (friend_user_id = login_user_id) |
|
| 341 | WHERE |
|
| 342 | login_date >= '$current_date' AND |
|
| 343 | friend_user_id <> '".api_get_user_id()."' AND |
|
| 344 | relation_type='".USER_RELATION_TYPE_FRIEND."' AND |
|
| 345 | user_id = '".api_get_user_id()."' "; |
|
| 346 | } else { |
|
| 347 | // All users online |
|
| 348 | $query = "SELECT count(login_id) as count |
|
| 349 | FROM $track_online_table track INNER JOIN $table_user u |
|
| 350 | ON (u.id=track.login_user_id) |
|
| 351 | WHERE u.status != ".ANONYMOUS." AND login_date >= '$current_date' "; |
|
| 352 | } |
|
| 353 | ||
| 354 | if (api_get_multiple_access_url()) { |
|
| 355 | $access_url_id = api_get_current_access_url_id(); |
|
| 356 | if ($access_url_id != -1) { |
|
| 357 | if ($friends) { |
|
| 358 | // friends from social network is online |
|
| 359 | $query = "SELECT DISTINCT count(login_user_id) as count |
|
| 360 | FROM $track_online_table track |
|
| 361 | INNER JOIN $friend_user_table ON (friend_user_id = login_user_id) |
|
| 362 | WHERE |
|
| 363 | track.access_url_id = $access_url_id AND |
|
| 364 | login_date >= '".$current_date."' AND |
|
| 365 | friend_user_id <> '".api_get_user_id()."' AND |
|
| 366 | relation_type='".USER_RELATION_TYPE_FRIEND."' "; |
|
| 367 | } else { |
|
| 368 | // all users online |
|
| 369 | $query = "SELECT count(login_id) as count FROM $track_online_table track |
|
| 370 | INNER JOIN $table_user u ON (u.id=track.login_user_id) |
|
| 371 | WHERE |
|
| 372 | u.status != ".ANONYMOUS." AND |
|
| 373 | track.access_url_id = $access_url_id AND |
|
| 374 | login_date >= '$current_date' "; |
|
| 375 | } |
|
| 376 | } |
|
| 377 | } |
|
| 378 | ||
| 379 | // Dev purposes show all users online |
|
| 380 | /*$table_user = Database::get_main_table(TABLE_MAIN_USER); |
|
| 381 | $query = "SELECT count(*) as count FROM ".$table_user;*/ |
|
| 382 | ||
| 383 | $result = Database::query($query); |
|
| 384 | if (Database::num_rows($result) > 0) { |
|
| 385 | $row = Database::fetch_array($result); |
|
| 386 | return $row['count']; |
|
| 387 | } else { |
|
| 388 | return false; |
|
| 389 | } |
|
| 390 | } |
|
| 391 | ||
| 392 | ||
| 393 | /** |
|
| @@ 5563-5635 (lines=73) @@ | ||
| 5560 | } |
|
| 5561 | ||
| 5562 | ||
| 5563 | public static function whoIsOnlineCount( |
|
| 5564 | $time_limit = null, |
|
| 5565 | $friends = false |
|
| 5566 | ) { |
|
| 5567 | if (empty($time_limit)) { |
|
| 5568 | $time_limit = api_get_setting('display.time_limit_whosonline'); |
|
| 5569 | } else { |
|
| 5570 | $time_limit = intval($time_limit); |
|
| 5571 | } |
|
| 5572 | $track_online_table = Database::get_main_table( |
|
| 5573 | TABLE_STATISTIC_TRACK_E_ONLINE |
|
| 5574 | ); |
|
| 5575 | $friend_user_table = Database::get_main_table(TABLE_MAIN_USER_REL_USER); |
|
| 5576 | $table_user = Database::get_main_table(TABLE_MAIN_USER); |
|
| 5577 | $online_time = time() - $time_limit * 60; |
|
| 5578 | $current_date = api_get_utc_datetime($online_time); |
|
| 5579 | ||
| 5580 | if ($friends) { |
|
| 5581 | // who friends from social network is online |
|
| 5582 | $query = "SELECT DISTINCT count(login_user_id) as count |
|
| 5583 | FROM $track_online_table INNER JOIN $friend_user_table |
|
| 5584 | ON (friend_user_id = login_user_id) |
|
| 5585 | WHERE |
|
| 5586 | login_date >= '$current_date' AND |
|
| 5587 | friend_user_id <> '".api_get_user_id()."' AND |
|
| 5588 | relation_type='".USER_RELATION_TYPE_FRIEND."' AND |
|
| 5589 | user_id = '".api_get_user_id()."' "; |
|
| 5590 | } else { |
|
| 5591 | // All users online |
|
| 5592 | $query = "SELECT count(login_id) as count |
|
| 5593 | FROM $track_online_table track INNER JOIN $table_user u |
|
| 5594 | ON (u.id=track.login_user_id) |
|
| 5595 | WHERE u.status != ".ANONYMOUS." AND login_date >= '$current_date' "; |
|
| 5596 | } |
|
| 5597 | ||
| 5598 | if (api_get_multiple_access_url()) { |
|
| 5599 | $access_url_id = api_get_current_access_url_id(); |
|
| 5600 | if ($access_url_id != -1) { |
|
| 5601 | if ($friends) { |
|
| 5602 | // friends from social network is online |
|
| 5603 | $query = "SELECT DISTINCT count(login_user_id) as count |
|
| 5604 | FROM $track_online_table track |
|
| 5605 | INNER JOIN $friend_user_table ON (friend_user_id = login_user_id) |
|
| 5606 | WHERE |
|
| 5607 | track.access_url_id = $access_url_id AND |
|
| 5608 | login_date >= '".$current_date."' AND |
|
| 5609 | friend_user_id <> '".api_get_user_id()."' AND |
|
| 5610 | relation_type='".USER_RELATION_TYPE_FRIEND."' "; |
|
| 5611 | } else { |
|
| 5612 | // all users online |
|
| 5613 | $query = "SELECT count(login_id) as count FROM $track_online_table track |
|
| 5614 | INNER JOIN $table_user u ON (u.id=track.login_user_id) |
|
| 5615 | WHERE |
|
| 5616 | u.status != ".ANONYMOUS." AND |
|
| 5617 | track.access_url_id = $access_url_id AND |
|
| 5618 | login_date >= '$current_date' "; |
|
| 5619 | } |
|
| 5620 | } |
|
| 5621 | } |
|
| 5622 | ||
| 5623 | // Dev purposes show all users online |
|
| 5624 | /*$table_user = Database::get_main_table(TABLE_MAIN_USER); |
|
| 5625 | $query = "SELECT count(*) as count FROM ".$table_user;*/ |
|
| 5626 | ||
| 5627 | $result = Database::query($query); |
|
| 5628 | if (Database::num_rows($result) > 0) { |
|
| 5629 | $row = Database::fetch_array($result); |
|
| 5630 | ||
| 5631 | return $row['count']; |
|
| 5632 | } else { |
|
| 5633 | return false; |
|
| 5634 | } |
|
| 5635 | } |
|
| 5636 | ||
| 5637 | /** |
|
| 5638 | * Gives a list of people online now (and in the last $valid minutes) |
|