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.

torrent_collage.php 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. <?
  2. function compare($X, $Y) {
  3. return($Y['count'] - $X['count']);
  4. }
  5. // Build the data for the collage and the torrent list
  6. // TODO: Cache this
  7. $DB->query("
  8. SELECT
  9. ct.GroupID,
  10. ct.UserID
  11. FROM collages_torrents AS ct
  12. JOIN torrents_group AS tg ON tg.ID = ct.GroupID
  13. WHERE ct.CollageID = '$CollageID'
  14. ORDER BY ct.Sort");
  15. $GroupIDs = $DB->collect('GroupID');
  16. $Contributors = $DB->to_pair('GroupID', 'UserID', false);
  17. if (count($GroupIDs) > 0) {
  18. $TorrentList = Torrents::get_groups($GroupIDs);
  19. $UserVotes = Votes::get_user_votes($LoggedUser['ID']);
  20. } else {
  21. $TorrentList = [];
  22. }
  23. // Loop through the result set, building up $Collage and $TorrentTable
  24. // Then we print them.
  25. $Collage = [];
  26. $TorrentTable = '';
  27. $NumGroups = count($TorrentList);
  28. $NumGroupsByUser = 0;
  29. $TopArtists = [];
  30. $UserAdditions = [];
  31. $Number = 0;
  32. foreach ($GroupIDs as $GroupID) {
  33. if (!isset($TorrentList[$GroupID])) {
  34. continue;
  35. }
  36. $Group = $TorrentList[$GroupID];
  37. extract(Torrents::array_group($Group));
  38. $UserID = $Contributors[$GroupID];
  39. $TorrentTags = new Tags($TagList);
  40. // Handle stats and stuff
  41. $Number++;
  42. if ($UserID == $LoggedUser['ID']) {
  43. $NumGroupsByUser++;
  44. }
  45. $CountArtists = $Artists;
  46. if ($CountArtists) {
  47. foreach ($CountArtists as $Artist) {
  48. if (!isset($TopArtists[$Artist['id']])) {
  49. $TopArtists[$Artist['id']] = array('name' => $Artist['name'], 'count' => 1);
  50. } else {
  51. $TopArtists[$Artist['id']]['count']++;
  52. }
  53. }
  54. }
  55. if (!isset($UserAdditions[$UserID])) {
  56. $UserAdditions[$UserID] = 0;
  57. }
  58. $UserAdditions[$UserID]++;
  59. $DisplayName = "$Number - ";
  60. $DisplayName .= Artists::display_artists($Artists);
  61. $DisplayName .= "<a href=\"torrents.php?id=$GroupID\" ";
  62. if (!isset($LoggedUser['CoverArt']) || $LoggedUser['CoverArt']) {
  63. $DisplayName .= 'onmouseover="getCover(event)" data-cover="'.ImageTools::process($WikiImage, true).'" onmouseleave="ungetCover(event)" ';
  64. }
  65. $GroupName = empty($GroupName) ? (empty($GroupNameRJ) ? $GroupNameJP : $GroupNameRJ) : $GroupName;
  66. $DisplayName .= "dir=\"ltr\">$GroupName</a>";
  67. if ($GroupYear > 0) {
  68. $DisplayName = "$DisplayName [$GroupYear]";
  69. }
  70. if ($GroupStudio) {
  71. $DisplayName .= " [$GroupStudio]";
  72. }
  73. if ($GroupCatalogueNumber) {
  74. $DisplayName .= " [$GroupCatalogueNumber]";
  75. }
  76. if ($GroupDLSiteID) {
  77. $DisplayName .= " [$GroupDLSiteID]";
  78. }
  79. $SnatchedGroupClass = ($GroupFlags['IsSnatched'] ? ' snatched_group' : '');
  80. $UserVote = isset($UserVotes[$GroupID]) ? $UserVotes[$GroupID]['Type'] : '';
  81. // Start an output buffer, so we can store this output in $TorrentTable
  82. ob_start();
  83. if (count($Torrents) > 1) {
  84. // Grouped torrents
  85. $ShowGroups = !(!empty($LoggedUser['TorrentGrouping']) && $LoggedUser['TorrentGrouping'] == 1);
  86. ?>
  87. <tr class="group <?=$SnatchedGroupClass?>" id="group_<?=$GroupID?>">
  88. <td class="center">
  89. <div id="showimg_<?=$GroupID?>" class="<?=($ShowGroups ? 'hide' : 'show')?>_torrents">
  90. <a class="tooltip show_torrents_link" onclick="toggle_group(<?=$GroupID?>, this, event);" title="Collapse this group. Hold &quot;Ctrl&quot; while clicking to collapse all groups on this page."></a>
  91. </div>
  92. </td>
  93. <td class="center">
  94. <div title="<?=$TorrentTags->title()?>" class="tooltip <?=Format::css_category($GroupCategoryID)?> <?=$TorrentTags->css_name()?>"></div>
  95. </td>
  96. <td colspan="5">
  97. <strong><?=$DisplayName?></strong>
  98. <? if (Bookmarks::has_bookmarked('torrent', $GroupID)) { ?>
  99. <span class="remove_bookmark float_right">
  100. <a style="float: right;" href="#" id="bookmarklink_torrent_<?=$GroupID?>" class="remove_bookmark brackets" onclick="Unbookmark('torrent', <?=$GroupID?>, 'Bookmark'); return false;">Remove bookmark</a>
  101. </span>
  102. <? } else { ?>
  103. <span class="add_bookmark float_right">
  104. <a style="float: right;" href="#" id="bookmarklink_torrent_<?=$GroupID?>" class="add_bookmark brackets" onclick="Bookmark('torrent', <?=$GroupID?>, 'Remove bookmark'); return false;">Bookmark</a>
  105. </span>
  106. <?
  107. }
  108. Votes::vote_link($GroupID, $UserVote);
  109. ?>
  110. <div class="tags"><?=$TorrentTags->format()?></div>
  111. </td>
  112. </tr>
  113. <?
  114. /*
  115. $LastRemasterYear = '-';
  116. $LastRemasterTitle = '';
  117. $LastRemasterRecordLabel = '';
  118. $LastRemasterCatalogueNumber = '';
  119. $LastMedia = '';
  120. */
  121. $EditionID = 0;
  122. /*
  123. unset($FirstUnknown);
  124. */
  125. foreach ($Torrents as $TorrentID => $Torrent) {
  126. /*
  127. if ($Torrent['Remastered'] && !$Torrent['RemasterYear']) {
  128. $FirstUnknown = !isset($FirstUnknown);
  129. }
  130. */
  131. $SnatchedTorrentClass = $Torrent['IsSnatched'] ? ' snatched_torrent' : '';
  132. /*
  133. if ($Torrent['RemasterTitle'] != $LastRemasterTitle
  134. || $Torrent['RemasterYear'] != $LastRemasterYear
  135. || $Torrent['RemasterRecordLabel'] != $LastRemasterRecordLabel
  136. || $Torrent['RemasterCatalogueNumber'] != $LastRemasterCatalogueNumber
  137. || $FirstUnknown
  138. || $Torrent['Media'] != $LastMedia
  139. ) {
  140. $EditionID++;
  141. ?>
  142. <tr class="group_torrent groupid_<?=$GroupID?> edition<?=$SnatchedGroupClass . (!empty($LoggedUser['TorrentGrouping']) && $LoggedUser['TorrentGrouping'] == 1 ? ' hidden' : '')?>">
  143. <td colspan="7" class="edition_info"><strong><a href="#" onclick="toggle_edition(<?=$GroupID?>, <?=$EditionID?>, this, event)" class="tooltip" title="Collapse this edition. Hold &quot;Ctrl&quot; while clicking to collapse all editions in this torrent group.">&minus;</a> <?=Torrents::edition_string($Torrent, $Group)?></strong></td>
  144. </tr>
  145. <?
  146. }
  147. $LastRemasterTitle = $Torrent['RemasterTitle'];
  148. $LastRemasterYear = $Torrent['RemasterYear'];
  149. $LastRemasterRecordLabel = $Torrent['RemasterRecordLabel'];
  150. $LastRemasterCatalogueNumber = $Torrent['RemasterCatalogueNumber'];
  151. $LastMedia = $Torrent['Media'];
  152. */
  153. ?>
  154. <tr class="group_torrent torrent_row groupid_<?=$GroupID?> edition_<?=$EditionID?><?=$SnatchedTorrentClass . $SnatchedGroupClass . (!empty($LoggedUser['TorrentGrouping']) && $LoggedUser['TorrentGrouping'] == 1 ? ' hidden' : '')?>">
  155. <td colspan="3">
  156. <span class="brackets">
  157. <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" class="tooltip" title="Download">DL</a>
  158. <? if (Torrents::can_use_token($Torrent)) { ?>
  159. | <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" class="tooltip" title="Use a FL Token" onclick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
  160. <? } ?>
  161. | <a href="reportsv2.php?action=report&amp;id=<?=$TorrentID?>" class="tooltip" title="Report">RP</a>
  162. </span>
  163. &nbsp;&nbsp;&raquo;&nbsp; <a href="torrents.php?id=<?=$GroupID?>&amp;torrentid=<?=$TorrentID?>"><?=Torrents::torrent_info($Torrent)?></a>
  164. </td>
  165. <td class="number_column nobr"><?=Format::get_size($Torrent['Size'])?></td>
  166. <td class="number_column"><?=number_format($Torrent['Snatched'])?></td>
  167. <td class="number_column<?=(($Torrent['Seeders'] == 0) ? ' r00' : '')?>"><?=number_format($Torrent['Seeders'])?></td>
  168. <td class="number_column"><?=number_format($Torrent['Leechers'])?></td>
  169. </tr>
  170. <?
  171. }
  172. } else {
  173. // Viewing a type that does not require grouping
  174. list($TorrentID, $Torrent) = each($Torrents);
  175. //$DisplayName = "<a href=\"torrents.php?id=$GroupID\" class=\"tooltip\" title=\"View torrent group\" dir=\"ltr\">$GroupName</a>";
  176. if ($Torrent['IsSnatched']) {
  177. $DisplayName .= ' ' . Format::torrent_label('Snatched!');
  178. }
  179. if ($Torrent['FreeTorrent'] == '1') {
  180. $DisplayName .= ' ' . Format::torrent_label('Freeleech!');
  181. } elseif ($Torrent['FreeTorrent'] == '2') {
  182. $DisplayName .= ' ' . Format::torrent_label('Neutral Leech!');
  183. } elseif ($Torrent['PersonalFL']) {
  184. $DisplayName .= ' ' . Format::torrent_label('Personal Freeleech!');
  185. }
  186. $SnatchedTorrentClass = ($Torrent['IsSnatched'] ? ' snatched_torrent' : '');
  187. ?>
  188. <tr class="torrent torrent_row<?=$SnatchedTorrentClass . $SnatchedGroupClass?>" id="group_<?=$GroupID?>">
  189. <td></td>
  190. <td class="center">
  191. <div title="<?=$TorrentTags->title()?>" class="tooltip <?=Format::css_category($GroupCategoryID)?> <?=$TorrentTags->css_name()?>">
  192. </div>
  193. </td>
  194. <td>
  195. <span class="brackets">
  196. <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" class="tooltip" title="Download">DL</a>
  197. <? if (Torrents::can_use_token($Torrent)) { ?>
  198. | <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" class="tooltip" title="Use a FL Token" onclick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
  199. <? } ?>
  200. | <a href="reportsv2.php?action=report&amp;id=<?=$TorrentID?>" class="tooltip" title="Report">RP</a>
  201. </span>
  202. <strong><?=$DisplayName?></strong>
  203. <? Votes::vote_link($GroupID, $UserVote); ?>
  204. <div class="tags"><?=$TorrentTags->format()?></div>
  205. </td>
  206. <td class="number_column nobr"><?=Format::get_size($Torrent['Size'])?></td>
  207. <td class="number_column"><?=number_format($Torrent['Snatched'])?></td>
  208. <td class="number_column<?=(($Torrent['Seeders'] == 0) ? ' r00' : '')?>"><?=number_format($Torrent['Seeders'])?></td>
  209. <td class="number_column"><?=number_format($Torrent['Leechers'])?></td>
  210. </tr>
  211. <?
  212. }
  213. $TorrentTable .= ob_get_clean();
  214. // Album art
  215. ob_start();
  216. $DisplayName = '';
  217. $DisplayName .= Artists::display_artists($Artists, false);
  218. $DisplayName .= $GroupName;
  219. if ($GroupYear > 0) {
  220. $DisplayName = "$DisplayName [$GroupYear]";
  221. }
  222. $Tags = display_str($TorrentTags->format());
  223. $PlainTags = implode(', ', $TorrentTags->get_tags());
  224. ?>
  225. <div class="collage_image image_group_<?=$GroupID?>">
  226. <a href="torrents.php?id=<?=$GroupID?>">
  227. <? if (!$WikiImage) {
  228. $WikiImage = STATIC_SERVER.'common/noartwork/nocover.png';
  229. } ?>
  230. <img class="tooltip_interactive" src="<?=ImageTools::process($WikiImage, true)?>" alt="<?=$DisplayName?>" title="<?=$DisplayName?> <br /> <?=$Tags?>" data-title-plain="<?="$DisplayName ($PlainTags)"?>" width="100%" />
  231. </a>
  232. </div>
  233. <?
  234. $Collage[] = ob_get_clean();
  235. }
  236. if ($CollageCategoryID === '0' && !check_perms('site_collages_delete')) {
  237. if (!check_perms('site_collages_personal') || $CreatorID !== $LoggedUser['ID']) {
  238. $PreventAdditions = true;
  239. }
  240. }
  241. if (!check_perms('site_collages_delete')
  242. && (
  243. $Locked
  244. || ($MaxGroups > 0 && $NumGroups >= $MaxGroups)
  245. || ($MaxGroupsPerUser > 0 && $NumGroupsByUser >= $MaxGroupsPerUser)
  246. )
  247. ) {
  248. $PreventAdditions = true;
  249. }
  250. // Silly hack for people who are on the old setting
  251. $CollageCovers = isset($LoggedUser['CollageCovers']) ? $LoggedUser['CollageCovers'] : 25 * (abs($LoggedUser['HideCollage'] - 1));
  252. $CollagePages = [];
  253. for ($i = 0; $i < $NumGroups / $CollageCovers; $i++) {
  254. $Groups = array_slice($Collage, $i * $CollageCovers, $CollageCovers);
  255. $CollagePage = '';
  256. foreach ($Groups as $Group) {
  257. $CollagePage .= $Group;
  258. }
  259. $CollagePages[] = $CollagePage;
  260. }
  261. View::show_header($Name, 'browse,collage,bbcode,voting,recommend,wall');
  262. ?>
  263. <div class="thin">
  264. <div class="header">
  265. <h2><?=$Name?></h2>
  266. <div class="linkbox">
  267. <a href="collages.php" class="brackets">List of collections</a>
  268. <? if (check_perms('site_collages_create')) { ?>
  269. <a href="collages.php?action=new" class="brackets">New collection</a>
  270. <? } ?>
  271. <br /><br />
  272. <? if (check_perms('site_collages_subscribe')) { ?>
  273. <a href="#" id="subscribelink<?=$CollageID?>" class="brackets" onclick="CollageSubscribe(<?=$CollageID?>); return false;"><?=(in_array($CollageID, $CollageSubscriptions) ? 'Unsubscribe' : 'Subscribe')?></a>
  274. <?
  275. }
  276. if (check_perms('site_collages_delete') || (check_perms('site_edit_wiki') && !$Locked)) {
  277. ?>
  278. <a href="collages.php?action=edit&amp;collageid=<?=$CollageID?>" class="brackets">Edit description</a>
  279. <? } else { ?>
  280. <span class="brackets">Locked</span>
  281. <?
  282. }
  283. if (Bookmarks::has_bookmarked('collage', $CollageID)) {
  284. ?>
  285. <a href="#" id="bookmarklink_collage_<?=$CollageID?>" class="brackets" onclick="Unbookmark('collage', <?=$CollageID?>, 'Bookmark'); return false;">Remove bookmark</a>
  286. <? } else { ?>
  287. <a href="#" id="bookmarklink_collage_<?=$CollageID?>" class="brackets" onclick="Bookmark('collage', <?=$CollageID?>, 'Remove bookmark'); return false;">Bookmark</a>
  288. <? } ?>
  289. <!-- <a href="#" id="recommend" class="brackets">Recommend</a> -->
  290. <?
  291. if (check_perms('site_collages_manage') && !$Locked) {
  292. ?>
  293. <a href="collages.php?action=manage&amp;collageid=<?=$CollageID?>" class="brackets">Manage torrents</a>
  294. <? } ?>
  295. <a href="reports.php?action=report&amp;type=collage&amp;id=<?=$CollageID?>" class="brackets">Report collection</a>
  296. <? if (check_perms('site_collages_delete') || $CreatorID == $LoggedUser['ID']) { ?>
  297. <a href="collages.php?action=delete&amp;collageid=<?=$CollageID?>&amp;auth=<?=$LoggedUser['AuthKey']?>" class="brackets" onclick="return confirm('Are you sure you want to delete this collage?');">Delete</a>
  298. <? } ?>
  299. </div>
  300. </div>
  301. <? /* Misc::display_recommend($CollageID, "collage"); */ ?>
  302. <div class="sidebar">
  303. <div class="box box_category">
  304. <div class="head"><strong>Category</strong></div>
  305. <div class="pad"><a href="collages.php?action=search&amp;cats[<?=(int)$CollageCategoryID?>]=1"><?=$CollageCats[(int)$CollageCategoryID]?></a></div>
  306. </div>
  307. <div class="box box_description">
  308. <div class="head"><strong>Description</strong></div>
  309. <div class="pad"><?=Text::full_format($Description)?></div>
  310. </div>
  311. <?
  312. // I'm actually commenting this out
  313. /*
  314. if (check_perms('zip_downloader')) {
  315. if (isset($LoggedUser['Collector'])) {
  316. list($ZIPList, $ZIPPrefs) = $LoggedUser['Collector'];
  317. $ZIPList = explode(':', $ZIPList);
  318. } else {
  319. $ZIPList = array('00', '11');
  320. $ZIPPrefs = 1;
  321. }
  322. ?>
  323. <div class="box box_zipdownload">
  324. <div class="head colhead_dark"><strong>Collector</strong></div>
  325. <div class="pad">
  326. <form class="download_form" name="zip" action="collages.php" method="post">
  327. <input type="hidden" name="action" value="download" />
  328. <input type="hidden" name="auth" value="<?=$LoggedUser['AuthKey']?>" />
  329. <input type="hidden" name="collageid" value="<?=$CollageID?>" />
  330. <ul id="list" class="nobullet">
  331. <? foreach ($ZIPList as $ListItem) { ?>
  332. <li id="list<?=$ListItem?>">
  333. <input type="hidden" name="list[]" value="<?=$ListItem?>" />
  334. <span class="float_left"><?=$ZIPOptions[$ListItem]['2']?></span>
  335. <span class="remove remove_collector"><a href="#" onclick="remove_selection('<?=$ListItem?>'); return false;" class="float_right brackets">X</a></span>
  336. <br style="clear: all;" />
  337. </li>
  338. <? } ?>
  339. </ul>
  340. <select id="formats" style="width: 180px;">
  341. <?
  342. $OpenGroup = false;
  343. $LastGroupID = -1;
  344. foreach ($ZIPOptions as $Option) {
  345. list($GroupID, $OptionID, $OptName) = $Option;
  346. if ($GroupID != $LastGroupID) {
  347. $LastGroupID = $GroupID;
  348. if ($OpenGroup) {
  349. ?>
  350. </optgroup>
  351. <? } ?>
  352. <optgroup label="<?=$ZIPGroups[$GroupID]?>">
  353. <?
  354. $OpenGroup = true;
  355. }
  356. ?>
  357. <option id="opt<?=$GroupID.$OptionID?>" value="<?=$GroupID.$OptionID?>"<? if (in_array($GroupID.$OptionID, $ZIPList)) { echo ' disabled="disabled"'; }?>><?=$OptName?></option>
  358. <?
  359. }
  360. ?>
  361. </optgroup>
  362. </select>
  363. <button type="button" onclick="add_selection();">+</button>
  364. <select name="preference" style="width: 210px;">
  365. <option value="0"<? if ($ZIPPrefs == 0) { echo ' selected="selected"'; } ?>>Prefer Original</option>
  366. <option value="1"<? if ($ZIPPrefs == 1) { echo ' selected="selected"'; } ?>>Prefer Best Seeded</option>
  367. <option value="2"<? if ($ZIPPrefs == 2) { echo ' selected="selected"'; } ?>>Prefer Bonus Tracks</option>
  368. </select>
  369. <input type="submit" style="width: 210px;" value="Download" />
  370. </form>
  371. </div>
  372. </div>
  373. <? }
  374. */
  375. ?>
  376. <div class="box box_info box_statistics_collage_torrents">
  377. <div class="head"><strong>Statistics</strong></div>
  378. <ul class="stats nobullet">
  379. <li>Torrents: <?=number_format($NumGroups)?></li>
  380. <? if (!empty($TopArtists)) { ?>
  381. <li>Artists: <?=number_format(count($TopArtists))?></li>
  382. <? } ?>
  383. <li>Subscribers: <?=number_format((int)$Subscribers)?></li>
  384. <li>Built by <?=number_format(count($UserAdditions))?> user<?=(count($UserAdditions) > 1 ? 's' : '')?></li>
  385. <li>Last updated: <?=time_diff($Updated)?></li>
  386. </ul>
  387. </div>
  388. <div class="box box_tags">
  389. <div class="head"><strong>Top Tags</strong></div>
  390. <div class="pad">
  391. <ol style="padding-left: 5px;">
  392. <?
  393. Tags::format_top(5, 'collages.php?action=search&amp;tags=');
  394. ?>
  395. </ol>
  396. </div>
  397. </div>
  398. <? if (!empty($TopArtists)) { ?>
  399. <div class="box box_artists">
  400. <div class="head"><strong>Top Artists</strong></div>
  401. <div class="pad">
  402. <ol style="padding-left: 5px;">
  403. <?
  404. uasort($TopArtists, 'compare');
  405. $i = 0;
  406. foreach ($TopArtists as $ID => $Artist) {
  407. $i++;
  408. if ($i > 10) {
  409. break;
  410. }
  411. ?>
  412. <li><a href="artist.php?id=<?=$ID?>"><?=$Artist['name']?></a> (<?=number_format($Artist['count'])?>)</li>
  413. <?
  414. }
  415. ?>
  416. </ol>
  417. </div>
  418. </div>
  419. <? } ?>
  420. <div class="box box_contributors">
  421. <div class="head"><strong>Top Contributors</strong></div>
  422. <div class="pad">
  423. <ol style="padding-left: 5px;">
  424. <?
  425. arsort($UserAdditions);
  426. $i = 0;
  427. foreach ($UserAdditions as $UserID => $Additions) {
  428. $i++;
  429. if ($i > 5) {
  430. break;
  431. }
  432. ?>
  433. <li><?=Users::format_username($UserID, false, false, false)?> (<?=number_format($Additions)?>)</li>
  434. <?
  435. }
  436. ?>
  437. </ol>
  438. </div>
  439. </div>
  440. <? if (check_perms('site_collages_manage') && !isset($PreventAdditions)) { ?>
  441. <div class="box box_addtorrent">
  442. <div class="head"><strong>Add torrent group</strong><span class="float_right"><a href="#" onclick="$('.add_torrent_container').toggle_class('hidden'); this.innerHTML = (this.innerHTML == 'Batch add' ? 'Individual add' : 'Batch add'); return false;" class="brackets">Batch add</a></span></div>
  443. <div class="pad add_torrent_container">
  444. <form class="add_form" name="torrent" action="collages.php" method="post">
  445. <input type="hidden" name="action" value="add_torrent" />
  446. <input type="hidden" name="auth" value="<?=$LoggedUser['AuthKey']?>" />
  447. <input type="hidden" name="collageid" value="<?=$CollageID?>" />
  448. <div class="field_div">
  449. <input type="text" size="20" name="url" />
  450. </div>
  451. <div class="submit_div">
  452. <input type="submit" value="Add" />
  453. </div>
  454. <span style="font-style: italic;">Enter the URL of a torrent group on the site.</span>
  455. </form>
  456. </div>
  457. <div class="pad hidden add_torrent_container">
  458. <form class="add_form" name="torrents" action="collages.php" method="post">
  459. <input type="hidden" name="action" value="add_torrent_batch" />
  460. <input type="hidden" name="auth" value="<?=$LoggedUser['AuthKey']?>" />
  461. <input type="hidden" name="collageid" value="<?=$CollageID?>" />
  462. <div class="field_div">
  463. <textarea name="urls" rows="5" cols="25" style="white-space: pre; word-wrap: normal; overflow: auto;"></textarea>
  464. </div>
  465. <div class="submit_div">
  466. <input type="submit" value="Add" />
  467. </div>
  468. <span style="font-style: italic;">Enter the URLs of torrent groups on the site, one per line.</span>
  469. </form>
  470. </div>
  471. </div>
  472. <? } ?>
  473. <h3>Comments</h3>
  474. <?
  475. if ($CommentList === null) {
  476. $DB->query("
  477. SELECT
  478. c.ID,
  479. c.Body,
  480. c.AuthorID,
  481. um.Username,
  482. c.AddedTime
  483. FROM comments AS c
  484. LEFT JOIN users_main AS um ON um.ID = c.AuthorID
  485. WHERE c.Page = 'collages'
  486. AND c.PageID = $CollageID
  487. ORDER BY c.ID DESC
  488. LIMIT 15");
  489. $CommentList = $DB->to_array(false, MYSQLI_NUM);
  490. }
  491. foreach ($CommentList as $Comment) {
  492. list($CommentID, $Body, $UserID, $Username, $CommentTime) = $Comment;
  493. ?>
  494. <div class="box comment">
  495. <div class="head">
  496. <?=Users::format_username($UserID, false, false, false) ?> <?=time_diff($CommentTime) ?>
  497. <br />
  498. <a href="reports.php?action=report&amp;type=comment&amp;id=<?=$CommentID?>" class="brackets">Report</a>
  499. </div>
  500. <div class="pad"><?=Text::full_format($Body)?></div>
  501. </div>
  502. <?
  503. }
  504. ?>
  505. <div class="box pad">
  506. <a href="collages.php?action=comments&amp;collageid=<?=$CollageID?>" class="brackets">View all comments</a>
  507. </div>
  508. <?
  509. if (!$LoggedUser['DisablePosting']) {
  510. ?>
  511. <div class="box box_addcomment">
  512. <div class="head"><strong>Add comment</strong></div>
  513. <form class="send_form" name="comment" id="quickpostform" onsubmit="quickpostform.submit_button.disabled = true;" action="comments.php" method="post">
  514. <input type="hidden" name="action" value="take_post" />
  515. <input type="hidden" name="page" value="collages" />
  516. <input type="hidden" name="auth" value="<?=$LoggedUser['AuthKey']?>" />
  517. <input type="hidden" name="pageid" value="<?=$CollageID?>" />
  518. <div class="pad">
  519. <div class="field_div">
  520. <textarea name="body" cols="24" rows="5"></textarea>
  521. </div>
  522. <div class="submit_div">
  523. <input type="submit" id="submit_button" value="Add comment" />
  524. </div>
  525. </div>
  526. </form>
  527. </div>
  528. <?
  529. }
  530. ?>
  531. </div>
  532. <div class="main_column">
  533. <?
  534. if ($CollageCovers != 0) { ?>
  535. <div id="coverart" class="box">
  536. <div class="head" id="coverhead"><strong>Cover Art</strong></div>
  537. <div class="collage_images" id="collage_page0" data-wall-child=".collage_image" data-wall-size="4" data-wall-min="2">
  538. <?
  539. $Page1 = array_slice($Collage, 0, $CollageCovers);
  540. foreach ($Page1 as $Group) {
  541. echo $Group;
  542. }
  543. ?>
  544. </div>
  545. </div>
  546. <? if ($NumGroups > $CollageCovers) { ?>
  547. <div class="linkbox pager" style="clear: left;" id="pageslinksdiv">
  548. <span id="firstpage" class="invisible"><a href="#" class="pageslink" onclick="collageShow.page(0, this); return false;"><strong>&lt;&lt; First</strong></a> | </span>
  549. <span id="prevpage" class="invisible"><a href="#" class="pageslink" onclick="collageShow.prevPage(); return false;"><strong>&lt; Prev</strong></a> | </span>
  550. <? for ($i = 0; $i < $NumGroups / $CollageCovers; $i++) { ?>
  551. <span id="pagelink<?=$i?>" class="<?=(($i > 4) ? 'hidden' : '')?><?=(($i == 0) ? 'selected' : '')?>"><a href="#" class="pageslink" onclick="collageShow.page(<?=$i?>, this); return false;"><strong><?=$CollageCovers * $i + 1?>-<?=min($NumGroups, $CollageCovers * ($i + 1))?></strong></a><?=(($i != ceil($NumGroups / $CollageCovers) - 1) ? ' | ' : '')?></span>
  552. <? } ?>
  553. <span id="nextbar" class="<?=($NumGroups / $CollageCovers > 5) ? 'hidden' : ''?>"> | </span>
  554. <span id="nextpage"><a href="#" class="pageslink" onclick="collageShow.nextPage(); return false;"><strong>Next &gt;</strong></a></span>
  555. <span id="lastpage" class="<?=(ceil($NumGroups / $CollageCovers) == 2 ? 'invisible' : '')?>"> | <a href="#" class="pageslink" onclick="collageShow.page(<?=ceil($NumGroups / $CollageCovers) - 1?>, this); return false;"><strong>Last &gt;&gt;</strong></a></span>
  556. </div>
  557. <script type="text/javascript">//<![CDATA[
  558. $(document).ready(function(){collageShow.init(<?=json_encode($CollagePages)?>)});
  559. //]]></script>
  560. <?
  561. }
  562. }
  563. ?>
  564. <div class="box">
  565. <table class="torrent_table grouping cats" id="discog_table">
  566. <tr class="colhead_dark">
  567. <td><!-- expand/collapse --></td>
  568. <td><!-- Category --></td>
  569. <td width="70%"><strong>Torrents</strong></td>
  570. <td>Size</td>
  571. <td class="sign snatches">
  572. <a><svg width="15" height="15" fill="white" class="tooltip" alt="Snatches" title="Snatches" viewBox="3 0 88 98"><path d="M20 20 A43 43,0,1,0,77 23 L90 10 L55 10 L55 45 L68 32 A30.27 30.27,0,1,1,28 29"></path></svg></a>
  573. </td>
  574. <td class="sign seeders">
  575. <a><svg width="11" height="15" fill="white" class="tooltip" alt="Seeders" title="Seeders"><polygon points="0,7 5.5,0 11,7 8,7 8,15 3,15 3,7"></polygon></svg></a>
  576. </td>
  577. <td class="sign leechers">
  578. <a><svg width="11" height="15" fill="white" class="tooltip" alt="Leechers" title="Leechers"><polygon points="0,8 5.5,15 11,8 8,8 8,0 3,0 3,8"></polygon></svg></a>
  579. </td>
  580. </tr>
  581. <?=$TorrentTable?>
  582. </table>
  583. </div>
  584. </div>
  585. </div>
  586. <?
  587. View::show_footer();
  588. ?>