Source for file statistic.php

Documentation is available at statistic.php

  1. <?php
  2. ////////////////////////////////////////////////////////////////////////////////
  3. // Copyright (C) ReloadCMS Development Team //
  4. // http://reloadcms.sf.net //
  5. // //
  6. // This program is distributed in the hope that it will be useful, //
  7. // but WITHOUT ANY WARRANTY, without even the implied warranty of //
  8. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. //
  9. // //
  10. // This product released under GNU General Public License v2 //
  11. ////////////////////////////////////////////////////////////////////////////////
  12.  
  13. function statistic_register(){
  14. global $system;
  15. if(is_file(DATA_PATH . 'stats.dat')) {
  16. $stats = @file(DATA_PATH . 'stats.dat');
  17. $stats = @unserialize($stats[0]);
  18. }
  19. $useragent = ($_SERVER['HTTP_USER_AGENT']);
  20. $userip = ($_SERVER['REMOTE_ADDR']);
  21. $referer = ($_SERVER['HTTP_REFERER']);
  22. $page = ($_SERVER['REQUEST_URI']);
  23. // Add popularity to browser
  24. if(!empty($stats['ua'][$useragent])) {
  25. $stats['ua'][$useragent]++;
  26. } else {
  27. $stats['ua'][$useragent] = 1;
  28. }
  29. // Add popularity to referer
  30. if(!empty($referer) && $referer = parse_url($referer)) {
  31. if(!empty($stats['ref'][$referer['host']])) {
  32. $stats['ref'][$referer['host']]++;
  33. } else {
  34. $stats['ref'][$referer['host']] = 1;
  35. }
  36. }
  37. // Add popularity to page
  38. if(!empty($stats['popular'][$page])) {
  39. $stats['popular'][$page]++;
  40. } else {
  41. $stats['popular'][$page] = 1;
  42. }
  43. // Register last user's visit time
  44. $stats['ips'][$userip] = time();
  45. // Register user in total hits count
  46. if(!empty($stats['totalhits'])) {
  47. $stats['totalhits']++;
  48. } else {
  49. $stats['totalhits'] = 1;
  50. }
  51. // Check the last update time
  52. if(!empty($stats['update']) && $stats['update'] < mktime(0, 0, 0, date('n'), date('j'), date('Y'))) {
  53. unset($stats['todayhits']); // Remove yestarday's hits
  54. unset($stats['todayhosts']); // Remove yestarday's hosts
  55. }
  56. if(!empty($stats['todayhits'])) {
  57. $stats['todayhits']++;
  58. } else {
  59. $stats['todayhits'] = 1;
  60. }
  61. if(empty($stats['todayhosts'][$userip])) {
  62. $stats['todayhosts'][$userip] = true;
  63. }
  64. // Online users
  65. $stats['online'][$userip]['name'] = $system->user['username'];
  66. $stats['online'][$userip]['nick'] = $system->user['nickname'];
  67. $stats['online'][$userip]['time'] = rcms_get_time();
  68. $online = array();
  69. $registered_already = array();
  70. if(!empty($stats['online'])){
  71. foreach ($stats['online'] as $ip => $data) {
  72. if($data['time'] > rcms_get_time() - 5 * 60 && !in_array($data['name'], $registered_already)) {
  73. $online[$ip] = $data;
  74. $registered_already[] = $data['name'];
  75. }
  76. }
  77. }
  78. $stats['online'] = $online;
  79. // Update time's update
  80. $stats['update'] = rcms_get_time();
  81. @file_write_contents(DATA_PATH . 'stats.dat', serialize($stats));
  82. return true;
  83. }
  84.  
  85. function statistic_get(){
  86. if(is_file(DATA_PATH . 'stats.dat')) {
  87. $stats = @file(DATA_PATH . 'stats.dat');
  88. $stats = @unserialize($stats[0]);
  89. if(!empty($stats)) {
  90. striptags_array($stats);
  91. }
  92. return $stats;
  93. } else {
  94. return false;
  95. }
  96. }
  97.  
  98. function striptags_array(&$array){
  99. foreach ($array as $key => $value) {
  100. if(is_array($array[$key])) {
  101. striptags_array($array[$key]);
  102. } else {
  103. $array[$key] = strip_tags($value);
  104. }
  105. }
  106. return true;
  107. }
  108.  
  109. function statistic_clean(){
  110. return rcms_delete_files(DATA_PATH . 'stats.dat');
  111. }
  112. if(basename($_SERVER['SCRIPT_FILENAME']) == 'index.php') statistic_register();
  113. ?>

Documentation generated on Fri, 08 Jun 2007 12:21:27 +0300 by phpDocumentor 1.3.0RC3