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.

index.php 8.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. <?php
  2. enforce_login();
  3. if (!defined('LOG_ENTRIES_PER_PAGE')) {
  4. define('LOG_ENTRIES_PER_PAGE', 100);
  5. }
  6. View::show_header("Site log");
  7. include SERVER_ROOT.'/sections/log/sphinx.php';
  8. ?>
  9. <div>
  10. <div class="header">
  11. <h2>Site log</h2>
  12. </div>
  13. <div class="box pad">
  14. <form class="search_form" name="log" action="" method="get">
  15. <table cellpadding="6" cellspacing="1" border="0" class="layout" width="100%">
  16. <tr>
  17. <td class="label"><strong>Search for:</strong></td>
  18. <td>
  19. <input type="search" name="search" size="60" <?=(!empty($_GET['search']) ? ' value="'.display_str($_GET['search']).'"' : '')?>
  20. />
  21. &nbsp;
  22. <input type="submit" value="Search log" />
  23. </td>
  24. </tr>
  25. </table>
  26. </form>
  27. </div>
  28. <?php
  29. if ($TotalMatches > LOG_ENTRIES_PER_PAGE) { ?>
  30. <div class="linkbox">
  31. <?php
  32. $Pages = Format::get_pages($Page, $TotalMatches, LOG_ENTRIES_PER_PAGE, 9);
  33. echo $Pages;
  34. ?>
  35. </div>
  36. <?php
  37. }
  38. ?>
  39. <div class="box">
  40. <table cellpadding="6" cellspacing="1" border="0" class="log_table" id="log_table" width="100%">
  41. <tr class="colhead">
  42. <td style="width: 180px;">
  43. <strong>Time</strong>
  44. </td>
  45. <td>
  46. <strong>Message</strong>
  47. </td>
  48. </tr>
  49. <?php if ($QueryStatus) { ?>
  50. <tr class="nobr">
  51. <td colspan="2">Search request failed (<?=$QueryError?>).
  52. </td>
  53. </tr>
  54. <?php } elseif (!$DB->has_results()) { ?>
  55. <tr class="nobr">
  56. <td colspan="2">Nothing found!</td>
  57. </tr>
  58. <?php
  59. }
  60. $Usernames = [];
  61. while (list($ID, $Message, $LogTime) = $DB->next_record()) {
  62. $MessageParts = explode(' ', $Message);
  63. $Message = '';
  64. $Color = $Colon = false;
  65. for ($i = 0, $PartCount = sizeof($MessageParts); $i < $PartCount; $i++) {
  66. if (strpos($MessageParts[$i], 'https://'.SITE_DOMAIN) === 0) {
  67. $Offset = strlen('https://'.SITE_DOMAIN.'/');
  68. $MessageParts[$i] = '<a href="'.substr($MessageParts[$i], $Offset).'">'.substr($MessageParts[$i], $Offset).'</a>';
  69. }
  70. switch ($MessageParts[$i]) {
  71. case 'Torrent':
  72. case 'torrent':
  73. $TorrentID = $MessageParts[$i + 1];
  74. if (is_numeric($TorrentID)) {
  75. $Message = $Message.' '.$MessageParts[$i]." <a href='torrents.php?torrentid=$TorrentID'>$TorrentID</a>";
  76. $i++;
  77. } else {
  78. $Message = $Message.' '.$MessageParts[$i];
  79. }
  80. break;
  81. case 'Request':
  82. case 'request':
  83. $RequestID = $MessageParts[$i + 1];
  84. if (is_numeric($RequestID)) {
  85. $Message = $Message.' '.$MessageParts[$i]." <a href='requests.php?action=view&amp;id=$RequestID'>$RequestID</a>";
  86. $i++;
  87. } else {
  88. $Message = $Message.' '.$MessageParts[$i];
  89. }
  90. break;
  91. case 'Artist':
  92. case 'artist':
  93. $ArtistID = $MessageParts[$i + 1];
  94. if (is_numeric($ArtistID)) {
  95. $Message = $Message.' '.$MessageParts[$i]." <a href='artist.php?id=$ArtistID'>$ArtistID</a>";
  96. $i++;
  97. } else {
  98. $Message = $Message.' '.$MessageParts[$i];
  99. }
  100. break;
  101. case 'group':
  102. case 'Group':
  103. $GroupID = $MessageParts[$i + 1];
  104. if (is_numeric($GroupID)) {
  105. $Message = $Message.' '.$MessageParts[$i]." <a href='torrents.php?id=$GroupID'>$GroupID</a>";
  106. } else {
  107. $Message = $Message.' '.$MessageParts[$i];
  108. }
  109. $i++;
  110. break;
  111. case 'By':
  112. case 'by':
  113. $UserID = 0;
  114. $User = '';
  115. $URL = '';
  116. if ($MessageParts[$i + 1] === 'user') {
  117. $i++;
  118. if (is_numeric($MessageParts[$i + 1])) {
  119. $UserID = $MessageParts[++$i];
  120. }
  121. $URL = "user $UserID (<a href='user.php?id=$UserID'>".substr($MessageParts[++$i], 1, -1).'</a>)';
  122. } elseif (in_array($MessageParts[$i - 1], ['deleted', 'uploaded', 'edited', 'created', 'recovered'])) {
  123. $User = $MessageParts[++$i];
  124. if (substr($User, -1) === ':') {
  125. $User = substr($User, 0, -1);
  126. $Colon = true;
  127. }
  128. if (!isset($Usernames[$User])) {
  129. $DB->query(
  130. "
  131. SELECT
  132. `ID`
  133. FROM
  134. `users_main`
  135. WHERE
  136. `Username` = ?
  137. ",
  138. $User
  139. );
  140. list($UserID) = $DB->next_record();
  141. $Usernames[$User] = $UserID ? $UserID : '';
  142. } else {
  143. $UserID = $Usernames[$User];
  144. }
  145. $URL = $Usernames[$User] ? "<a href='user.php?id=$UserID'>$User</a>".($Colon ? ':' : '') : $User;
  146. if (in_array($MessageParts[$i - 2], ['uploaded', 'edited'])) {
  147. $DB->query(
  148. "
  149. SELECT
  150. `UserID`,
  151. `Anonymous`
  152. FROM
  153. `torrents`
  154. WHERE
  155. `ID` = ?
  156. ",
  157. $MessageParts[1]
  158. );
  159. if ($DB->has_results()) {
  160. list($UploaderID, $AnonTorrent) = $DB->next_record();
  161. if ($AnonTorrent && $UploaderID === $UserID) {
  162. $URL = '<em>Anonymous</em>';
  163. }
  164. }
  165. }
  166. $DB->set_query_id($Log);
  167. }
  168. $Message = "$Message by $URL";
  169. break;
  170. case 'Uploaded':
  171. case 'uploaded':
  172. if ($Color === false) {
  173. $Color = 'green';
  174. }
  175. $Message = $Message.' '.$MessageParts[$i];
  176. break;
  177. case 'Deleted':
  178. case 'deleted':
  179. if ($Color === false || $Color === 'green') {
  180. $Color = 'red';
  181. }
  182. $Message = $Message.' '.$MessageParts[$i];
  183. break;
  184. case 'Edited':
  185. case 'edited':
  186. if ($Color === false) {
  187. $Color = 'blue';
  188. }
  189. $Message = $Message.' '.$MessageParts[$i];
  190. break;
  191. case 'Un-filled':
  192. case 'un-filled':
  193. if ($Color === false) {
  194. $Color = '';
  195. }
  196. $Message = $Message.' '.$MessageParts[$i];
  197. break;
  198. case 'Marked':
  199. case 'marked':
  200. if ($i === 1) {
  201. $User = $MessageParts[$i - 1];
  202. if (!isset($Usernames[$User])) {
  203. $DB->query("
  204. SELECT
  205. `ID`
  206. FROM
  207. `users_main`
  208. WHERE
  209. `Username` = _utf8 '".db_string($User)."' COLLATE utf8_bin
  210. ");
  211. list($UserID) = $DB->next_record();
  212. $Usernames[$User] = $UserID ? $UserID : '';
  213. $DB->set_query_id($Log);
  214. } else {
  215. $UserID = $Usernames[$User];
  216. }
  217. $URL = $Usernames[$User] ? "<a href='user.php?id=$UserID'>$User</a>" : $User;
  218. $Message = $URL.' '.$MessageParts[$i];
  219. } else {
  220. $Message = $Message.' '.$MessageParts[$i];
  221. }
  222. break;
  223. case 'Collage':
  224. case 'collage':
  225. $CollageID = $MessageParts[$i + 1];
  226. if (is_numeric($CollageID)) {
  227. $Message = $Message.' '.$MessageParts[$i]." <a href='collages.php?id=$CollageID'>$CollageID</a>";
  228. $i++;
  229. } else {
  230. $Message = $Message.' '.$MessageParts[$i];
  231. }
  232. break;
  233. default:
  234. $Message = $Message.' '.$MessageParts[$i];
  235. }
  236. } ?>
  237. <tr class="row" id="log_<?=$ID?>">
  238. <td class="nobr">
  239. <?=time_diff($LogTime)?>
  240. </td>
  241. <td>
  242. <span<?php if ($Color) { ?> style="color: <?=$Color?>;"
  243. <?php } ?>><?=$Message?></span>
  244. </td>
  245. </tr>
  246. <?php
  247. }
  248. ?>
  249. </table>
  250. </div>
  251. <?php if (isset($Pages)) { ?>
  252. <div class="linkbox">
  253. <?=$Pages?>
  254. </div>
  255. <?php } ?>
  256. </div>
  257. <?php
  258. View::show_footer();