Oppaitime's version of Gazelle
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

users.php 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?
  2. // error out on invalid requests (before caching)
  3. if (isset($_GET['details'])) {
  4. if (in_array($_GET['details'],array('ul','dl','numul','uls','dls'))) {
  5. $Details = $_GET['details'];
  6. } else {
  7. error(404);
  8. }
  9. } else {
  10. $Details = 'all';
  11. }
  12. View::show_header('Top 10 Users');
  13. ?>
  14. <div class="thin">
  15. <div class="header">
  16. <h2>Top 10 Users</h2>
  17. <? Top10View::render_linkbox("users"); ?>
  18. </div>
  19. <?
  20. // defaults to 10 (duh)
  21. $Limit = isset($_GET['limit']) ? intval($_GET['limit']) : 10;
  22. $Limit = in_array($Limit, array(10,100,250)) ? $Limit : 10;
  23. $BaseQuery = "
  24. SELECT
  25. u.ID,
  26. ui.JoinDate,
  27. u.Uploaded,
  28. u.Downloaded,
  29. ABS(u.Uploaded-524288000) / (".time()." - UNIX_TIMESTAMP(ui.JoinDate)) AS UpSpeed,
  30. u.Downloaded / (".time()." - UNIX_TIMESTAMP(ui.JoinDate)) AS DownSpeed,
  31. COUNT(t.ID) AS NumUploads
  32. FROM users_main AS u
  33. JOIN users_info AS ui ON ui.UserID = u.ID
  34. LEFT JOIN torrents AS t ON t.UserID=u.ID
  35. WHERE u.Enabled='1'
  36. AND Uploaded>='". 500*1024*1024 ."'
  37. AND Downloaded>='". 0 ."'
  38. AND u.ID > 2
  39. AND (Paranoia IS NULL OR (Paranoia NOT LIKE '%\"uploaded\"%' AND Paranoia NOT LIKE '%\"downloaded\"%'))
  40. GROUP BY u.ID";
  41. if ($Details == 'all' || $Details == 'ul') {
  42. if (!$TopUserUploads = $Cache->get_value('topuser_ul_'.$Limit)) {
  43. $DB->query("$BaseQuery ORDER BY u.Uploaded DESC LIMIT $Limit;");
  44. $TopUserUploads = $DB->to_array();
  45. $Cache->cache_value('topuser_ul_'.$Limit,$TopUserUploads, 3600 * 12);
  46. }
  47. generate_user_table('Uploaders', 'ul', $TopUserUploads, $Limit);
  48. }
  49. if ($Details == 'all' || $Details == 'dl') {
  50. if (!$TopUserDownloads = $Cache->get_value('topuser_dl_'.$Limit)) {
  51. $DB->query("$BaseQuery ORDER BY u.Downloaded DESC LIMIT $Limit;");
  52. $TopUserDownloads = $DB->to_array();
  53. $Cache->cache_value('topuser_dl_'.$Limit,$TopUserDownloads, 3600 * 12);
  54. }
  55. generate_user_table('Downloaders', 'dl', $TopUserDownloads, $Limit);
  56. }
  57. if ($Details == 'all' || $Details == 'numul') {
  58. if (!$TopUserNumUploads = $Cache->get_value('topuser_numul_'.$Limit)) {
  59. $DB->query("$BaseQuery ORDER BY NumUploads DESC LIMIT $Limit;");
  60. $TopUserNumUploads = $DB->to_array();
  61. $Cache->cache_value('topuser_numul_'.$Limit,$TopUserNumUploads, 3600 * 12);
  62. }
  63. generate_user_table('Torrents Uploaded', 'numul', $TopUserNumUploads, $Limit);
  64. }
  65. if ($Details == 'all' || $Details == 'uls') {
  66. if (!$TopUserUploadSpeed = $Cache->get_value('topuser_ulspeed_'.$Limit)) {
  67. $DB->query("$BaseQuery ORDER BY UpSpeed DESC LIMIT $Limit;");
  68. $TopUserUploadSpeed = $DB->to_array();
  69. $Cache->cache_value('topuser_ulspeed_'.$Limit,$TopUserUploadSpeed, 3600 * 12);
  70. }
  71. generate_user_table('Fastest Uploaders', 'uls', $TopUserUploadSpeed, $Limit);
  72. }
  73. if ($Details == 'all' || $Details == 'dls') {
  74. if (!$TopUserDownloadSpeed = $Cache->get_value('topuser_dlspeed_'.$Limit)) {
  75. $DB->query("$BaseQuery ORDER BY DownSpeed DESC LIMIT $Limit;");
  76. $TopUserDownloadSpeed = $DB->to_array();
  77. $Cache->cache_value('topuser_dlspeed_'.$Limit,$TopUserDownloadSpeed, 3600 * 12);
  78. }
  79. generate_user_table('Fastest Downloaders', 'dls', $TopUserDownloadSpeed, $Limit);
  80. }
  81. echo '</div>';
  82. View::show_footer();
  83. exit;
  84. // generate a table based on data from most recent query to $DB
  85. function generate_user_table($Caption, $Tag, $Details, $Limit) {
  86. global $Time;
  87. ?>
  88. <h3>Top <?=$Limit.' '.$Caption;?>
  89. <small class="top10_quantity_links">
  90. <?
  91. switch ($Limit) {
  92. case 100: ?>
  93. - <a href="top10.php?type=users&amp;details=<?=$Tag?>" class="brackets">Top 10</a>
  94. - <span class="brackets">Top 100</span>
  95. - <a href="top10.php?type=users&amp;limit=250&amp;details=<?=$Tag?>" class="brackets">Top 250</a>
  96. <? break;
  97. case 250: ?>
  98. - <a href="top10.php?type=users&amp;details=<?=$Tag?>" class="brackets">Top 10</a>
  99. - <a href="top10.php?type=users&amp;limit=100&amp;details=<?=$Tag?>" class="brackets">Top 100</a>
  100. - <span class="brackets">Top 250</span>
  101. <? break;
  102. default: ?>
  103. - <span class="brackets">Top 10</span>
  104. - <a href="top10.php?type=users&amp;limit=100&amp;details=<?=$Tag?>" class="brackets">Top 100</a>
  105. - <a href="top10.php?type=users&amp;limit=250&amp;details=<?=$Tag?>" class="brackets">Top 250</a>
  106. <? } ?>
  107. </small>
  108. </h3>
  109. <table class="border">
  110. <tr class="colhead">
  111. <td class="center">Rank</td>
  112. <td>User</td>
  113. <td style="text-align: right;">Uploaded</td>
  114. <td style="text-align: right;">UL speed</td>
  115. <td style="text-align: right;">Downloaded</td>
  116. <td style="text-align: right;">DL speed</td>
  117. <td style="text-align: right;">Uploads</td>
  118. <td style="text-align: right;">Ratio</td>
  119. <td style="text-align: right;">Joined</td>
  120. </tr>
  121. <?
  122. // in the unlikely event that query finds 0 rows...
  123. if (empty($Details)) {
  124. echo '
  125. <tr class="row">
  126. <td colspan="9" class="center">
  127. Found no users matching the criteria
  128. </td>
  129. </tr>
  130. </table><br />';
  131. return;
  132. }
  133. $Rank = 0;
  134. foreach ($Details as $Detail) {
  135. $Rank++;
  136. ?>
  137. <tr class="row">
  138. <td class="center"><?=$Rank?></td>
  139. <td><?=Users::format_username($Detail['ID'], false, false, false)?></td>
  140. <td class="number_column"><?=Format::get_size($Detail['Uploaded'])?></td>
  141. <td class="number_column tooltip" title="Upload speed is reported in base 2 in bytes per second, not bits per second."><?=Format::get_size($Detail['UpSpeed'])?>/s</td>
  142. <td class="number_column"><?=Format::get_size($Detail['Downloaded'])?></td>
  143. <td class="number_column tooltip" title="Download speed is reported in base 2 in bytes per second, not bits per second."><?=Format::get_size($Detail['DownSpeed'])?>/s</td>
  144. <td class="number_column"><?=number_format($Detail['NumUploads'])?></td>
  145. <td class="number_column"><?=Format::get_ratio_html($Detail['Uploaded'], $Detail['Downloaded'])?></td>
  146. <td class="number_column"><?=time_diff($Detail['JoinDate'])?></td>
  147. </tr>
  148. <? } ?>
  149. </table><br />
  150. <?
  151. }
  152. ?>