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.

merge.php 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?
  2. #declare(strict_types = 1);
  3. if (!check_perms('torrents_edit')) {
  4. error(403);
  5. }
  6. $GroupID = $_POST['groupid'];
  7. $OldGroupID = $GroupID;
  8. $NewGroupID = db_string($_POST['targetgroupid']);
  9. if (!$GroupID || !is_number($GroupID)) {
  10. error(404);
  11. }
  12. if (!$NewGroupID || !is_number($NewGroupID)) {
  13. error(404);
  14. }
  15. if ($NewGroupID == $GroupID) {
  16. error('Old group ID is the same as new group ID!');
  17. }
  18. $DB->query("
  19. SELECT CategoryID, Name
  20. FROM torrents_group
  21. WHERE ID = '$NewGroupID'");
  22. if (!$DB->has_results()) {
  23. error('Target group does not exist.');
  24. }
  25. list($CategoryID, $NewName) = $DB->next_record();
  26. /*
  27. if ($Categories[$CategoryID - 1] != 'Music') {
  28. error('Only music groups can be merged.');
  29. }
  30. */
  31. $DB->query("
  32. SELECT Name
  33. FROM torrents_group
  34. WHERE ID = $GroupID");
  35. list($Name) = $DB->next_record();
  36. // Everything is legit, let's just confim they're not retarded
  37. if (empty($_POST['confirm'])) {
  38. $Artists = Artists::get_artists(array($GroupID, $NewGroupID));
  39. View::show_header();
  40. ?>
  41. <div class="center">
  42. <div class="header">
  43. <h2>Merge Confirm!</h2>
  44. </div>
  45. <div class="box pad">
  46. <form class="confirm_form" name="torrent_group" action="torrents.php" method="post">
  47. <input type="hidden" name="action" value="merge" />
  48. <input type="hidden" name="auth" value="<?=$LoggedUser['AuthKey']?>" />
  49. <input type="hidden" name="confirm" value="true" />
  50. <input type="hidden" name="groupid" value="<?=$GroupID?>" />
  51. <input type="hidden" name="targetgroupid" value="<?=$NewGroupID?>" />
  52. <h3>You are attempting to merge the group:</h3>
  53. <ul>
  54. <li><?= Artists::display_artists($Artists[$GroupID], true, false)?> - <a href="torrents.php?id=<?=$GroupID?>"><?=$Name?></a></li>
  55. </ul>
  56. <h3>Into the group:</h3>
  57. <ul>
  58. <li><?= Artists::display_artists($Artists[$NewGroupID], true, false)?> - <a href="torrents.php?id=<?=$NewGroupID?>"><?=$NewName?></a></li>
  59. </ul>
  60. <input type="submit" value="Confirm" />
  61. </form>
  62. </div>
  63. </div>
  64. <?
  65. View::show_footer();
  66. } else {
  67. authorize();
  68. $DB->query("
  69. UPDATE torrents
  70. SET GroupID = '$NewGroupID'
  71. WHERE GroupID = '$GroupID'");
  72. $DB->query("
  73. UPDATE wiki_torrents
  74. SET PageID = '$NewGroupID'
  75. WHERE PageID = '$GroupID'");
  76. //Comments
  77. Comments::merge('torrents', $OldGroupID, $NewGroupID);
  78. //Collages
  79. $DB->query("
  80. SELECT CollageID
  81. FROM collages_torrents
  82. WHERE GroupID = '$OldGroupID'"); // Select all collages that contain edited group
  83. while (list($CollageID) = $DB->next_record()) {
  84. $DB->query("
  85. UPDATE IGNORE collages_torrents
  86. SET GroupID = '$NewGroupID'
  87. WHERE GroupID = '$OldGroupID'
  88. AND CollageID = '$CollageID'"); // Change collage group ID to new ID
  89. $DB->query("
  90. DELETE FROM collages_torrents
  91. WHERE GroupID = '$OldGroupID'
  92. AND CollageID = '$CollageID'");
  93. $Cache->delete_value("collage_$CollageID");
  94. }
  95. $Cache->delete_value("torrent_collages_$NewGroupID");
  96. $Cache->delete_value("torrent_collages_personal_$NewGroupID");
  97. // Requests
  98. $DB->query("
  99. SELECT ID
  100. FROM requests
  101. WHERE GroupID = '$OldGroupID'");
  102. $Requests = $DB->collect('ID');
  103. $DB->query("
  104. UPDATE requests
  105. SET GroupID = '$NewGroupID'
  106. WHERE GroupID = '$OldGroupID'");
  107. foreach ($Requests as $RequestID) {
  108. $Cache->delete_value("request_$RequestID");
  109. }
  110. $Cache->delete_value('requests_group_'.$NewGroupID);
  111. Torrents::delete_group($GroupID);
  112. Torrents::write_group_log($NewGroupID, 0, $LoggedUser['ID'], "Merged Group $GroupID ($Name) to $NewGroupID ($NewName)", 0);
  113. $DB->query("
  114. UPDATE group_log
  115. SET GroupID = $NewGroupID
  116. WHERE GroupID = $GroupID");
  117. $GroupID = $NewGroupID;
  118. $DB->query("
  119. SELECT ID
  120. FROM torrents
  121. WHERE GroupID = '$OldGroupID'");
  122. while (list($TorrentID) = $DB->next_record()) {
  123. $Cache->delete_value("torrent_download_$TorrentID");
  124. }
  125. $Cache->delete_value("torrents_details_$GroupID");
  126. $Cache->delete_value("groups_artists_$GroupID");
  127. Torrents::update_hash($GroupID);
  128. header("Location: torrents.php?id=" . $GroupID);
  129. }
  130. ?>