query(" SELECT CategoryID, Name FROM torrents_group WHERE ID = '$NewGroupID'"); if (!$DB->has_results()) { error('Target group does not exist.'); } list($CategoryID, $NewName) = $DB->next_record(); if ($Categories[$CategoryID - 1] != 'Music') { error('Only music groups can be merged.'); } $DB->query(" SELECT Name FROM torrents_group WHERE ID = $GroupID"); list($Name) = $DB->next_record(); // Everything is legit, let's just confim they're not retarded if (empty($_POST['confirm'])) { $Artists = Artists::get_artists(array($GroupID, $NewGroupID)); View::show_header(); ?>

Merge Confirm!

You are attempting to merge the group:

  • -

Into the group:

  • -
query(" SELECT UserID FROM users_votes WHERE GroupID = '$GroupID'"); while (list($UserID) = $DB->next_record()) { $Cache->delete_value("voted_albums_$UserID"); } // 2. Update the existing votes where possible, clear out the duplicates left by key // conflicts, and update the torrents_votes table $DB->query(" UPDATE IGNORE users_votes SET GroupID = '$NewGroupID' WHERE GroupID = '$GroupID'"); $DB->query(" DELETE FROM users_votes WHERE GroupID = '$GroupID'"); $DB->query(" INSERT INTO torrents_votes (GroupID, Ups, Total, Score) SELECT $NewGroupID, UpVotes, TotalVotes, VoteScore FROM ( SELECT IFNULL(SUM(IF(Type = 'Up', 1, 0)), 0) As UpVotes, COUNT(1) AS TotalVotes, binomial_ci(IFNULL(SUM(IF(Type = 'Up', 1, 0)), 0), COUNT(1)) AS VoteScore FROM users_votes WHERE GroupID = $NewGroupID GROUP BY GroupID ) AS a ON DUPLICATE KEY UPDATE Ups = a.UpVotes, Total = a.TotalVotes, Score = a.VoteScore;"); // 3. Clear the votes_pairs keys! $DB->query(" SELECT v2.GroupID FROM users_votes AS v1 INNER JOIN users_votes AS v2 USING (UserID) WHERE (v1.Type = 'Up' OR v2.Type = 'Up') AND (v1.GroupID IN($GroupID, $NewGroupID)) AND (v2.GroupID NOT IN($GroupID, $NewGroupID));"); while (list($CacheGroupID) = $DB->next_record()) { $Cache->delete_value("vote_pairs_$CacheGroupID"); } // 4. Clear the new groups vote keys $Cache->delete_value("votes_$NewGroupID"); $DB->query(" UPDATE torrents SET GroupID = '$NewGroupID' WHERE GroupID = '$GroupID'"); $DB->query(" UPDATE wiki_torrents SET PageID = '$NewGroupID' WHERE PageID = '$GroupID'"); $DB->query(" UPDATE torrents_comments SET GroupID = '$NewGroupID' WHERE GroupID = '$GroupID'"); Torrents::delete_group($GroupID); Torrents::write_group_log($NewGroupID, 0, $LoggedUser['ID'], "Merged Group $GroupID ($Name) to $NewGroupID ($NewName)", 0); $DB->query(" UPDATE group_log SET GroupID = $NewGroupID WHERE GroupID = $GroupID"); $GroupID = $NewGroupID; //Collages $DB->query(" SELECT CollageID FROM collages_torrents WHERE GroupID = '$OldGroupID'"); // Select all collages that contain edited group while (list($CollageID) = $DB->next_record()) { $DB->query(" UPDATE IGNORE collages_torrents SET GroupID = '$NewGroupID' WHERE GroupID = '$OldGroupID' AND CollageID = '$CollageID'"); // Change collage group ID to new ID $DB->query(" DELETE FROM collages_torrents WHERE GroupID = '$OldGroupID' AND CollageID = '$CollageID'"); $Cache->delete_value("collage_$CollageID"); } $Cache->delete_value("torrent_collages_$NewGroupID"); $Cache->delete_value("torrent_collages_personal_$NewGroupID"); // Requests $DB->query(" SELECT ID FROM requests WHERE GroupID = '$OldGroupID'"); $Requests = $DB->collect('ID'); $DB->query(" UPDATE requests SET GroupID = 'NewGroupID' WHERE GroupID = '$OldGroupID'"); foreach ($Requests as $RequestID) { $Cache->delete_value("request_$RequestID"); } $DB->query(" SELECT ID FROM torrents WHERE GroupID = '$OldGroupID'"); while (list($TorrentID) = $DB->next_record()) { $Cache->delete_value("torrent_download_$TorrentID"); } $Cache->delete_value("torrents_details_$GroupID"); $Cache->delete_value("torrent_comments_{$GroupID}_catalogue_0"); $Cache->delete_value("torrent_comments_$GroupID"); $Cache->delete_value("groups_artists_$GroupID"); Torrents::update_hash($GroupID); header("Location: torrents.php?id=" . $GroupID); } ?>