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.

index.php 7.3KB

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