BioTorrents.de’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.

registration_log.php 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. #declare(strict_types=1);
  3. if (!check_perms('users_view_ips') || !check_perms('users_view_email')) {
  4. error(403);
  5. }
  6. View::show_header('Registration log');
  7. define('USERS_PER_PAGE', 50);
  8. list($Page, $Limit) = Format::page_limit(USERS_PER_PAGE);
  9. $AfterDate = isset($_POST['after_date']) ? $_POST['after_date'] : null;
  10. $BeforeDate = isset($_POST['before_date']) ? $_POST['before_date'] : null;
  11. $DateSearch = false;
  12. if (!empty($AfterDate) && !empty($BeforeDate)) {
  13. list($Y, $M, $D) = explode('-', $AfterDate);
  14. if (!checkdate($M, $D, $Y)) {
  15. error('Incorrect "after" date format');
  16. }
  17. list($Y, $M, $D) = explode('-', $BeforeDate);
  18. if (!checkdate($M, $D, $Y)) {
  19. error('Incorrect "before" date format');
  20. }
  21. $AfterDate = db_string($AfterDate);
  22. $BeforeDate = db_string($BeforeDate);
  23. $DateSearch = true;
  24. }
  25. $RS = "
  26. SELECT
  27. SQL_CALC_FOUND_ROWS
  28. m.ID,
  29. m.IP,
  30. m.Email,
  31. m.Username,
  32. m.PermissionID,
  33. m.Uploaded,
  34. m.Downloaded,
  35. m.Enabled,
  36. i.Donor,
  37. i.Warned,
  38. i.JoinDate,
  39. im.ID,
  40. im.IP,
  41. im.Email,
  42. im.Username,
  43. im.PermissionID,
  44. im.Uploaded,
  45. im.Downloaded,
  46. im.Enabled,
  47. ii.Donor,
  48. ii.Warned,
  49. ii.JoinDate
  50. FROM users_main AS m
  51. LEFT JOIN users_info AS i ON i.UserID = m.ID
  52. LEFT JOIN users_main AS im ON i.Inviter = im.ID
  53. LEFT JOIN users_info AS ii ON i.Inviter = ii.UserID
  54. WHERE";
  55. if ($DateSearch) {
  56. $RS .= " i.JoinDate BETWEEN '$AfterDate' AND '$BeforeDate' ";
  57. } else {
  58. $RS .= " i.JoinDate > '".time_minus(3600 * 24 * 3)."'";
  59. }
  60. $RS .= "
  61. ORDER BY i.Joindate DESC
  62. LIMIT $Limit";
  63. $QueryID = $DB->query($RS);
  64. $DB->query('SELECT FOUND_ROWS()');
  65. list($Results) = $DB->next_record();
  66. $DB->set_query_id($QueryID);
  67. ?>
  68. <form action="" method="post" class="box pad">
  69. <input type="hidden" name="action" value="registration_log" />
  70. Joined after: <input type="date" name="after_date" />
  71. Joined before: <input type="date" name="before_date" />
  72. <input type="submit" class="button-primary" />
  73. </form>
  74. <?php
  75. if ($DB->has_results()) {
  76. ?>
  77. <div class="linkbox">
  78. <?php
  79. $Pages = Format::get_pages($Page, $Results, USERS_PER_PAGE, 11) ;
  80. echo $Pages; ?>
  81. </div>
  82. <table width="100%">
  83. <tr class="colhead">
  84. <td>User</td>
  85. <td>Ratio</td>
  86. <td>Email</td>
  87. <td>IP address</td>
  88. <td>Country</td>
  89. <td>Host</td>
  90. <td>Registered</td>
  91. </tr>
  92. <?php
  93. while (list($UserID, $IP, $Email, $Username, $PermissionID, $Uploaded, $Downloaded, $Enabled, $Donor, $Warned, $Joined, $InviterID, $InviterIP, $InviterEmail, $InviterUsername, $InviterPermissionID, $InviterUploaded, $InviterDownloaded, $InviterEnabled, $InviterDonor, $InviterWarned, $InviterJoined) = $DB->next_record()) {
  94. $RowClass = $IP === $InviterIP ? 'warning' : '';
  95. $Email = apcu_exists('DBKEY') ? Crypto::decrypt($Email) : '[Encrypted]';
  96. $IP = apcu_exists('DBKEY') ? Crypto::decrypt($IP) : '[Encrypted]';
  97. $InviterEmail = apcu_exists('DBKEY') ? Crypto::decrypt($InviterEmail) : '[Encrypted]';
  98. $InviterIP = apcu_exists('DBKEY') ? Crypto::decrypt($InviterIP) : '[Encrypted]'; ?>
  99. <tr class="<?=$RowClass?>">
  100. <td>
  101. <?=Users::format_username($UserID, true, true, true, true)?><br />
  102. <?=Users::format_username($InviterID, true, true, true, true)?>
  103. </td>
  104. <td>
  105. <?=Format::get_ratio_html($Uploaded, $Downloaded)?><br />
  106. <?=Format::get_ratio_html($InviterUploaded, $InviterDownloaded)?>
  107. </td>
  108. <td>
  109. <span class="float_left">
  110. <?=display_str($Email)?>
  111. </span>
  112. <span class="float_left">
  113. <?=display_str($InviterEmail)?>
  114. </span>
  115. </td>
  116. <td>
  117. <span class="float_left">
  118. <?=display_str($IP)?>
  119. </span>
  120. <span class="float_left">
  121. <?=display_str($InviterIP)?>
  122. </span>
  123. </td>
  124. <td>
  125. <?=Tools::get_host_by_ajax($IP)?><br />
  126. <?=Tools::get_host_by_ajax($InviterIP)?>
  127. </td>
  128. <td>
  129. <?=time_diff($Joined)?><br />
  130. <?=time_diff($InviterJoined)?>
  131. </td>
  132. </tr>
  133. <?php
  134. } ?>
  135. </table>
  136. <div class="linkbox">
  137. <?= $Pages; ?>
  138. </div>
  139. <?php
  140. } else { ?>
  141. <h2>There have been no new registrations in the past 72 hours.</h2>
  142. <?php
  143. }
  144. View::show_footer();