Beispiel #1
0
 }
 //Log and delete
 if (isset($Escaped['delete']) && check_perms('users_mod')) {
     $DB->query("\n\t\t\tSELECT Username\n\t\t\tFROM users_main\n\t\t\tWHERE ID = {$UploaderID}");
     list($UpUsername) = $DB->next_record();
     $Log = "Torrent {$TorrentID} ({$RawName}) uploaded by {$UpUsername} was deleted by " . $LoggedUser['Username'];
     $Log .= $Escaped['resolve_type'] == 'custom' ? '' : ' for the reason: ' . $ResolveType['title'] . ".";
     if (isset($Escaped['log_message']) && $Escaped['log_message'] != '') {
         $Log .= ' ( ' . $Escaped['log_message'] . ' )';
     }
     $DB->query("\n\t\t\tSELECT GroupID, hex(info_hash)\n\t\t\tFROM torrents\n\t\t\tWHERE ID = {$TorrentID}");
     list($GroupID, $InfoHash) = $DB->next_record();
     Torrents::delete_torrent($TorrentID, 0, $ResolveType['reason']);
     //$InfoHash = unpack("H*", $InfoHash);
     $Log .= ' (' . strtoupper($InfoHash) . ')';
     Misc::write_log($Log);
     $Log = 'deleted torrent for the reason: ' . $ResolveType['title'] . '. ( ' . $Escaped['log_message'] . ' )';
     Torrents::write_group_log($GroupID, $TorrentID, $LoggedUser['ID'], $Log, 0);
 } else {
     $Log = "No log message (torrent wasn't deleted).";
 }
 //Warnings / remove upload
 if ($Upload) {
     $Cache->begin_transaction("user_info_heavy_{$UploaderID}");
     $Cache->update_row(false, array('DisableUpload' => '1'));
     $Cache->commit_transaction(0);
     $DB->query("\n\t\t\tUPDATE users_info\n\t\t\tSET DisableUpload = '1'\n\t\t\tWHERE UserID = {$UploaderID}");
 }
 if ($Warning > 0) {
     $WarnLength = $Warning * (7 * 24 * 60 * 60);
     $Reason = "Uploader of torrent ({$TorrentID}) {$RawName} which was resolved with the preset: " . $ResolveType['title'] . '.';
Beispiel #2
0
//Do we need to get artists?
if ($CategoryName === 'Music') {
    $ArtistForm = Requests::get_artists($RequestID);
    $ArtistName = Artists::display_artists($ArtistForm, false, true);
    $FullName = $ArtistName . $Title;
} else {
    $FullName = $Title;
}
// Delete request, votes and tags
$DB->query("DELETE FROM requests WHERE ID = '{$RequestID}'");
$DB->query("DELETE FROM requests_votes WHERE RequestID = '{$RequestID}'");
$DB->query("DELETE FROM requests_tags WHERE RequestID = '{$RequestID}'");
Comments::delete_page('requests', $RequestID);
$DB->query("\n\tSELECT ArtistID\n\tFROM requests_artists\n\tWHERE RequestID = {$RequestID}");
$RequestArtists = $DB->to_array();
foreach ($RequestArtists as $RequestArtist) {
    $Cache->delete_value("artists_requests_{$RequestArtist}");
}
$DB->query("\n\tDELETE FROM requests_artists\n\tWHERE RequestID = '{$RequestID}'");
$Cache->delete_value("request_artists_{$RequestID}");
G::$DB->query("\n\tREPLACE INTO sphinx_requests_delta\n\t\t(ID)\n\tVALUES\n\t\t({$RequestID})");
if ($UserID != $LoggedUser['ID']) {
    Misc::send_pm($UserID, 0, 'A request you created has been deleted', "The request \"{$FullName}\" was deleted by [url=" . site_url() . 'user.php?id=' . $LoggedUser['ID'] . ']' . $LoggedUser['Username'] . '[/url] for the reason: [quote]' . $_POST['reason'] . '[/quote]');
}
Misc::write_log("Request {$RequestID} ({$FullName}) was deleted by user " . $LoggedUser['ID'] . ' (' . $LoggedUser['Username'] . ') for the reason: ' . $_POST['reason']);
$Cache->delete_value("request_{$RequestID}");
$Cache->delete_value("request_votes_{$RequestID}");
if ($GroupID) {
    $Cache->delete_value("requests_group_{$GroupID}");
}
header('Location: requests.php');
Beispiel #3
0
<?php

if (!check_perms('admin_manage_wiki')) {
    error(403);
}
if (!isset($_GET['id']) || !is_number($_GET['id'])) {
    error(404);
}
$ID = (int) $_GET['id'];
if ($ID == INDEX_ARTICLE) {
    error('You cannot delete the main wiki article.');
}
$DB->query("\n\tSELECT Title\n\tFROM wiki_articles\n\tWHERE ID = {$ID}");
if (!$DB->has_results()) {
    error(404);
}
list($Title) = $DB->next_record(MYSQLI_NUM, false);
//Log
Misc::write_log("Wiki article {$ID} ({$Title}) was deleted by " . $LoggedUser['Username']);
//Delete
$DB->query("DELETE FROM wiki_articles WHERE ID = {$ID}");
$DB->query("DELETE FROM wiki_aliases WHERE ArticleID = {$ID}");
$DB->query("DELETE FROM wiki_revisions WHERE ID = {$ID}");
Wiki::flush_aliases();
Wiki::flush_article($ID);
header("location: wiki.php");
Beispiel #4
0
        list($ID, $Deleted) = $DB->next_record();
        if ($Deleted) {
            $Err = 'That collection already exists but needs to be recovered; please <a href="staffpm.php">contact</a> the staff team!';
        } else {
            $Err = "That collection already exists: <a href=\"/collages.php?id={$ID}\">{$ID}</a>.";
        }
    }
}
if (!$Err) {
    if (empty($CollageCats[$P['category']])) {
        $Err = 'Please select a category';
    }
}
if ($Err) {
    $Name = $_POST['name'];
    $Category = $_POST['category'];
    $Tags = $_POST['tags'];
    $Description = $_POST['description'];
    include SERVER_ROOT . '/sections/collages/new.php';
    die;
}
$TagList = explode(',', $_POST['tags']);
foreach ($TagList as $ID => $Tag) {
    $TagList[$ID] = Misc::sanitize_tag($Tag);
}
$TagList = implode(' ', $TagList);
$DB->query("\n\tINSERT INTO collages\n\t\t(Name, Description, UserID, TagList, CategoryID)\n\tVALUES\n\t\t('{$P['name']}', '{$P['description']}', {$LoggedUser['ID']}, '{$TagList}', '{$P['category']}')");
$CollageID = $DB->inserted_id();
$Cache->delete_value("collage_{$CollageID}");
Misc::write_log("Collage {$CollageID} (" . $_POST['name'] . ') was created by ' . $LoggedUser['Username']);
header("Location: collages.php?id={$CollageID}");
Beispiel #5
0
 /**
  * Deletes an artist and their requests, wiki, and tags.
  * Does NOT delete their torrents.
  *
  * @param int $ArtistID
  */
 public static function delete_artist($ArtistID)
 {
     $QueryID = G::$DB->get_query_id();
     G::$DB->query("\n\t\t\tSELECT Name\n\t\t\tFROM artists_group\n\t\t\tWHERE ArtistID = " . $ArtistID);
     list($Name) = G::$DB->next_record(MYSQLI_NUM, false);
     // Delete requests
     G::$DB->query("\n\t\t\tSELECT RequestID\n\t\t\tFROM requests_artists\n\t\t\tWHERE ArtistID = {$ArtistID}\n\t\t\t\tAND ArtistID != 0");
     $Requests = G::$DB->to_array();
     foreach ($Requests as $Request) {
         list($RequestID) = $Request;
         G::$DB->query('DELETE FROM requests WHERE ID=' . $RequestID);
         G::$DB->query('DELETE FROM requests_votes WHERE RequestID=' . $RequestID);
         G::$DB->query('DELETE FROM requests_tags WHERE RequestID=' . $RequestID);
         G::$DB->query('DELETE FROM requests_artists WHERE RequestID=' . $RequestID);
     }
     // Delete artist
     G::$DB->query('DELETE FROM artists_group WHERE ArtistID=' . $ArtistID);
     G::$DB->query('DELETE FROM artists_alias WHERE ArtistID=' . $ArtistID);
     G::$Cache->decrement('stats_artist_count');
     // Delete wiki revisions
     G::$DB->query('DELETE FROM wiki_artists WHERE PageID=' . $ArtistID);
     // Delete tags
     G::$DB->query('DELETE FROM artists_tags WHERE ArtistID=' . $ArtistID);
     // Delete artist comments, subscriptions and quote notifications
     Comments::delete_page('artist', $ArtistID);
     G::$Cache->delete_value('artist_' . $ArtistID);
     G::$Cache->delete_value('artist_groups_' . $ArtistID);
     // Record in log
     if (!empty(G::$LoggedUser['Username'])) {
         $Username = G::$LoggedUser['Username'];
     } else {
         $Username = '******';
     }
     Misc::write_log("Artist {$ArtistID} ({$Name}) was deleted by {$Username}");
     G::$DB->set_query_id($QueryID);
 }
Beispiel #6
0
				</ul>
				<input type="submit" value="Confirm" />
			</form>
		</div>
	</div>
<?php 
    View::show_footer();
} else {
    authorize();
    $DB->query("\n\t\tUPDATE torrents\n\t\tSET\tGroupID = '{$GroupID}'\n\t\tWHERE ID = {$TorrentID}");
    // Delete old torrent group if it's empty now
    $DB->query("\n\t\tSELECT COUNT(ID)\n\t\tFROM torrents\n\t\tWHERE GroupID = '{$OldGroupID}'");
    list($TorrentsInGroup) = $DB->next_record();
    if ($TorrentsInGroup == 0) {
        // TODO: votes etc!
        $DB->query("\n\t\t\tUPDATE comments\n\t\t\tSET PageID = '{$GroupID}'\n\t\t\tWHERE Page = 'torrents'\n\t\t\t\tAND PageID = '{$OldGroupID}'");
        $Cache->delete_value("torrent_comments_{$GroupID}_catalogue_0");
        $Cache->delete_value("torrent_comments_{$GroupID}");
        Torrents::delete_group($OldGroupID);
    } else {
        Torrents::update_hash($OldGroupID);
    }
    Torrents::update_hash($GroupID);
    Misc::write_log("Torrent {$TorrentID} was edited by " . $LoggedUser['Username']);
    // TODO: this is probably broken
    Torrents::write_group_log($GroupID, 0, $LoggedUser['ID'], "merged group {$OldGroupID}", 0);
    $DB->query("\n\t\tUPDATE group_log\n\t\tSET GroupID = {$GroupID}\n\t\tWHERE GroupID = {$OldGroupID}");
    $Cache->delete_value("torrents_details_{$GroupID}");
    $Cache->delete_value("torrent_download_{$TorrentID}");
    header("Location: torrents.php?id={$GroupID}");
}
Beispiel #7
0
    /**
     * Will freeleech / neutral leech / normalise a set of torrents
     *
     * @param array $TorrentIDs An array of torrent IDs to iterate over
     * @param int $FreeNeutral 0 = normal, 1 = fl, 2 = nl
     * @param int $FreeLeechType 0 = Unknown, 1 = Staff picks, 2 = Perma-FL (Toolbox, etc.), 3 = Vanity House
     */
    public static function freeleech_torrents($TorrentIDs, $FreeNeutral = 1, $FreeLeechType = 0)
    {
        if (!is_array($TorrentIDs)) {
            $TorrentIDs = array($TorrentIDs);
        }
        $QueryID = G::$DB->get_query_id();
        G::$DB->query("\n\t\t\tUPDATE torrents\n\t\t\tSET FreeTorrent = '{$FreeNeutral}', FreeLeechType = '{$FreeLeechType}'\n\t\t\tWHERE ID IN (" . implode(', ', $TorrentIDs) . ')');
        G::$DB->query('
			SELECT ID, GroupID, info_hash
			FROM torrents
			WHERE ID IN (' . implode(', ', $TorrentIDs) . ')
			ORDER BY GroupID ASC');
        $Torrents = G::$DB->to_array(false, MYSQLI_NUM, false);
        $GroupIDs = G::$DB->collect('GroupID');
        G::$DB->set_query_id($QueryID);
        foreach ($Torrents as $Torrent) {
            list($TorrentID, $GroupID, $InfoHash) = $Torrent;
            Tracker::update_tracker('update_torrent', array('info_hash' => rawurlencode($InfoHash), 'freetorrent' => $FreeNeutral));
            G::$Cache->delete_value("torrent_download_{$TorrentID}");
            Misc::write_log(G::$LoggedUser['Username'] . " marked torrent {$TorrentID} freeleech type {$FreeLeechType}!");
            Torrents::write_group_log($GroupID, $TorrentID, G::$LoggedUser['ID'], "marked as freeleech type {$FreeLeechType}!", 0);
        }
        foreach ($GroupIDs as $GroupID) {
            Torrents::update_hash($GroupID);
        }
    }
Beispiel #8
0
                $DB->query("\n\t\t\t\t\tUPDATE artists_alias\n\t\t\t\t\tSET ArtistID = '{$ArtistID}', Redirect = 0\n\t\t\t\t\tWHERE AliasID = '{$CloneAliasID}'");
                Misc::write_log("Redirection for the alias {$CloneAliasID} ({$DBAliasName}) for the artist {$ArtistID} was removed by user {$LoggedUser['ID']} ({$LoggedUser['Username']})");
            } else {
                error('No changes were made as the target alias did not redirect anywhere.');
            }
        } else {
            error('An alias by that name already exists <a href="artist.php?id=' . $CloneArtistID . '">here</a>. You can try renaming that artist to this one.');
        }
    }
}
if (!$CloneAliasID) {
    if ($Redirect) {
        $DB->query("\n\t\t\tSELECT ArtistID, Redirect\n\t\t\tFROM artists_alias\n\t\t\tWHERE AliasID = {$Redirect}");
        if (!$DB->has_results()) {
            error('Cannot redirect to a nonexistent artist alias.');
        }
        list($FoundArtistID, $FoundRedirect) = $DB->next_record();
        if ($ArtistID != $FoundArtistID) {
            error('Redirection must target an alias for the current artist.');
        }
        if ($FoundRedirect != 0) {
            $Redirect = $FoundRedirect;
        }
    }
    $DB->query("\n\t\tINSERT INTO artists_alias\n\t\t\t(ArtistID, Name, Redirect, UserID)\n\t\tVALUES\n\t\t\t({$ArtistID}, '{$DBAliasName}', {$Redirect}, " . $LoggedUser['ID'] . ')');
    $AliasID = $DB->inserted_id();
    $DB->query("\n\t\tSELECT Name\n\t\tFROM artists_group\n\t\tWHERE ArtistID = {$ArtistID}");
    list($ArtistName) = $DB->next_record(MYSQLI_NUM, false);
    Misc::write_log("The alias {$AliasID} ({$DBAliasName}) was added to the artist {$ArtistID} (" . db_string($ArtistName) . ') by user ' . $LoggedUser['ID'] . ' (' . $LoggedUser['Username'] . ')');
}
header('Location: ' . $_SERVER['HTTP_REFERER']);
Beispiel #9
0
<?php

if (!check_perms('site_collages_recover')) {
    error(403);
}
if ($_POST['collage_id'] && is_number($_POST['collage_id'])) {
    authorize();
    $CollageID = $_POST['collage_id'];
    $DB->query("\n\t\tSELECT Name\n\t\tFROM collages\n\t\tWHERE ID = {$CollageID}");
    if (!$DB->has_results()) {
        error('Collage is completely deleted');
    } else {
        $DB->query("\n\t\t\tUPDATE collages\n\t\t\tSET Deleted = '0'\n\t\t\tWHERE ID = {$CollageID}");
        $Cache->delete_value("collage_{$CollageID}");
        Misc::write_log("Collage {$CollageID} was recovered by " . $LoggedUser['Username']);
        header("Location: collages.php?id={$CollageID}");
    }
}
View::show_header('Collage recovery!');
?>
<div class="thin center">
	<div class="box" style="width: 600px; margin: 0px auto;">
		<div class="head colhead">
			Recover deleted collage
		</div>
		<div class="pad">
			<form class="undelete_form" name="collage" action="collages.php" method="post">
				<input type="hidden" name="action" value="recover" />
				<input type="hidden" name="auth" value="<?php 
echo $LoggedUser['AuthKey'];
?>
Beispiel #10
0
    // If we can't take it all out of upload, zero that out and add whatever is left as download.
    $DB->query("\n\t\tUPDATE users_main\n\t\tSET Uploaded = 0\n\t\tWHERE ID = {$FillerID}");
    $DB->query('
		UPDATE users_main
		SET Downloaded = Downloaded + ' . ($RequestVotes['TotalBounty'] - $Uploaded) . "\n\t\tWHERE ID = {$FillerID}");
} else {
    $DB->query('
		UPDATE users_main
		SET Uploaded = Uploaded - ' . $RequestVotes['TotalBounty'] . "\n\t\tWHERE ID = {$FillerID}");
}
Misc::send_pm($FillerID, 0, 'A request you filled has been unfilled', "The request \"[url=" . site_url() . "requests.php?action=view&amp;id={$RequestID}]{$FullName}" . "[/url]\" was unfilled by [url=" . site_url() . 'user.php?id=' . $LoggedUser['ID'] . ']' . $LoggedUser['Username'] . '[/url] for the reason: [quote]' . $_POST['reason'] . "[/quote]\nIf you feel like this request was unjustly unfilled, please [url=" . site_url() . "reports.php?action=report&amp;type=request&amp;id={$RequestID}]report the request[/url] and explain why this request should not have been unfilled.");
$Cache->delete_value("user_stats_{$FillerID}");
if ($UserID !== $LoggedUser['ID']) {
    Misc::send_pm($UserID, 0, 'A request you created has been unfilled', "The request \"[url=" . site_url() . "requests.php?action=view&amp;id={$RequestID}]{$FullName}" . "[/url]\" was unfilled by [url=" . site_url() . 'user.php?id=' . $LoggedUser['ID'] . ']' . $LoggedUser['Username'] . "[/url] for the reason: [quote]" . $_POST['reason'] . '[/quote]');
}
Misc::write_log("Request {$RequestID} ({$FullName}), with a " . Format::get_size($RequestVotes['TotalBounty']) . ' bounty, was unfilled by user ' . $LoggedUser['ID'] . ' (' . $LoggedUser['Username'] . ') for the reason: ' . $_POST['reason']);
$Cache->delete_value("request_{$RequestID}");
$Cache->delete_value("request_artists_{$RequestID}");
if ($GroupID) {
    $Cache->delete_value("requests_group_{$GroupID}");
}
Requests::update_sphinx_requests($RequestID);
if (!empty($ArtistForm)) {
    foreach ($ArtistForm as $ArtistType) {
        foreach ($ArtistType as $Artist) {
            $Cache->delete_value('artists_requests_' . $Artist['id']);
        }
    }
}
$SphQL = new SphinxqlQuery();
$SphQL->raw_query("\n\t\tUPDATE requests, requests_delta\n\t\tSET torrentid = 0, fillerid = 0\n\t\tWHERE id = {$RequestID}", false);
Beispiel #11
0
//******************************************************************************//
//--------------- Validate data in edit form -----------------------------------//
// FIXME: Still need a better perm name
if (!check_perms('site_moderate_requests')) {
    error(403);
}
$Validate->SetFields('torrentid', '1', 'number', 'Invalid torrent ID.', array('maxlength' => 1000000000, 'minlength' => 1));
// we shouldn't have torrent IDs higher than a billion
$Validate->SetFields('groupid', '1', 'number', 'Invalid group ID.', array('maxlength' => 1000000000, 'minlength' => 1));
// we shouldn't have group IDs higher than a billion either
$Validate->SetFields('subject', '0', 'string', 'Invalid subject.', array('maxlength' => 1000, 'minlength' => 1));
$Validate->SetFields('message', '0', 'string', 'Invalid message.', array('maxlength' => 10000, 'minlength' => 1));
$Err = $Validate->ValidateForm($_POST);
// Validate the form
if ($Err) {
    error($Err);
    header('Location: ' . $_SERVER['HTTP_REFERER']);
    die;
}
//******************************************************************************//
//--------------- Send PMs to users --------------------------------------------//
$DB->query("\n\tSELECT uid\n\tFROM xbt_snatched\n\tWHERE fid = {$TorrentID}");
if ($DB->has_results()) {
    // Save this because send_pm uses $DB to run its own query... Oops...
    $Snatchers = $DB->to_array();
    foreach ($Snatchers as $UserID) {
        Misc::send_pm($UserID[0], 0, $Subject, $Message);
    }
}
Misc::write_log($LoggedUser['Username'] . " sent mass notice to snatchers of torrent {$TorrentID} in group {$GroupID}");
header("Location: torrents.php?id={$GroupID}");
Beispiel #12
0
    list($Importance, $ArtistID) = explode(';', $Artist);
    if (is_number($ArtistID) && is_number($Importance)) {
        $CleanArtists[] = array($Importance, $ArtistID);
        $ArtistIDs[] = $ArtistID;
    }
}
if (count($CleanArtists) > 0) {
    $ArtistsString = implode(',', $ArtistIDs);
    if ($_POST['manager_action'] == 'delete') {
        $DB->query("\n\t\t\tSELECT Name\n\t\t\tFROM torrents_group\n\t\t\tWHERE ID = '" . $_POST['groupid'] . "'");
        list($GroupName) = $DB->next_record();
        $DB->query("\n\t\t\tSELECT ArtistID, Name\n\t\t\tFROM artists_group\n\t\t\tWHERE ArtistID IN ({$ArtistsString})");
        $ArtistNames = $DB->to_array('ArtistID', MYSQLI_ASSOC, false);
        foreach ($CleanArtists as $Artist) {
            list($Importance, $ArtistID) = $Artist;
            Misc::write_log('Artist (' . $ArtistTypes[$Importance] . ") {$ArtistID} (" . $ArtistNames[$ArtistID]['Name'] . ") was removed from the group " . $_POST['groupid'] . " ({$GroupName}) by user " . $LoggedUser['ID'] . ' (' . $LoggedUser['Username'] . ')');
            Torrents::write_group_log($GroupID, 0, $LoggedUser['ID'], "Removed artist " . $ArtistNames[$ArtistID]['Name'] . " (" . $ArtistTypes[$Importance] . ")", 0);
            $DB->query("\n\t\t\t\tDELETE FROM torrents_artists\n\t\t\t\tWHERE GroupID = '{$GroupID}'\n\t\t\t\t\tAND ArtistID = '{$ArtistID}'\n\t\t\t\t\tAND Importance = '{$Importance}'");
            $Cache->delete_value("artist_groups_{$ArtistID}");
        }
        $DB->query("\n\t\t\tSELECT ArtistID\n\t\t\t\tFROM requests_artists\n\t\t\t\tWHERE ArtistID IN ({$ArtistsString})\n\t\t\tUNION\n\t\t\tSELECT ArtistID\n\t\t\t\tFROM torrents_artists\n\t\t\t\tWHERE ArtistID IN ({$ArtistsString})");
        $Items = $DB->collect('ArtistID');
        $EmptyArtists = array_diff($ArtistIDs, $Items);
        foreach ($EmptyArtists as $ArtistID) {
            Artists::delete_artist($ArtistID);
        }
    } else {
        $DB->query("\n\t\t\tUPDATE IGNORE torrents_artists\n\t\t\tSET Importance = '" . $_POST['importance'] . "'\n\t\t\tWHERE GroupID = '{$GroupID}'\n\t\t\t\tAND ArtistID IN ({$ArtistsString})");
    }
    $Cache->delete_value("groups_artists_{$GroupID}");
    Torrents::update_hash($GroupID);
Beispiel #13
0
<?php

authorize();
if (!check_perms('torrents_edit')) {
    error(403);
}
$AliasID = $_GET['aliasid'];
if (!is_number($AliasID)) {
    error(0);
}
$DB->query("\n\tSELECT aa.AliasID\n\tFROM artists_alias AS aa\n\t\tJOIN artists_alias AS aa2 ON aa.ArtistID=aa2.ArtistID\n\tWHERE aa.AliasID=" . $AliasID);
if ($DB->record_count() === 1) {
    //This is the last alias on the artist
    error("That alias is the last alias for that artist; removing it would cause bad things to happen.");
}
$DB->query("\n\tSELECT GroupID\n\tFROM torrents_artists\n\tWHERE AliasID='{$AliasID}'");
if ($DB->has_results()) {
    list($GroupID) = $DB->next_record();
    if ($GroupID != 0) {
        error("That alias still has the group (<a href=\"torrents.php?id={$GroupID}\">{$GroupID}</a>) attached. Fix that first.");
    }
}
$DB->query("\n\tSELECT aa.ArtistID, ag.Name, aa.Name\n\tFROM artists_alias AS aa\n\t\tJOIN artists_group AS ag ON aa.ArtistID=ag.ArtistID\n\tWHERE aa.AliasID={$AliasID}");
list($ArtistID, $ArtistName, $AliasName) = $DB->next_record(MYSQLI_NUM, false);
$DB->query("\n\tDELETE FROM artists_alias\n\tWHERE AliasID='{$AliasID}'");
$DB->query("\n\tUPDATE artists_alias\n\tSET Redirect='0'\n\tWHERE Redirect='{$AliasID}'");
Misc::write_log("The alias {$AliasID} ({$AliasName}) was removed from the artist {$ArtistID} ({$ArtistName}) by user {$LoggedUser['ID']} ({$LoggedUser['Username']})");
header("Location: {$_SERVER['HTTP_REFERER']}");
Beispiel #14
0
if (!is_number($CollageID) || !$CollageID) {
    error(404);
}
$DB->query("\n\tSELECT Name, CategoryID, UserID\n\tFROM collages\n\tWHERE ID = '{$CollageID}'");
list($Name, $CategoryID, $UserID) = $DB->next_record(MYSQLI_NUM, false);
if (!check_perms('site_collages_delete') && $UserID !== $LoggedUser['ID']) {
    error(403);
}
$Reason = trim($_POST['reason']);
if (!$Reason) {
    error('You must enter a reason!');
}
$DB->query("\n\tSELECT GroupID\n\tFROM collages_torrents\n\tWHERE CollageID = '{$CollageID}'");
while (list($GroupID) = $DB->next_record()) {
    $Cache->delete_value("torrents_details_{$GroupID}");
    $Cache->delete_value("torrent_collages_{$GroupID}");
    $Cache->delete_value("torrent_collages_personal_{$GroupID}");
}
//Personal collages have CategoryID 0
if ($CategoryID == 0) {
    $DB->query("\n\t\tDELETE FROM collages\n\t\tWHERE ID = '{$CollageID}'");
    $DB->query("\n\t\tDELETE FROM collages_torrents\n\t\tWHERE CollageID = '{$CollageID}'");
    Comments::delete_page('collages', $CollageID);
} else {
    $DB->query("\n\t\tUPDATE collages\n\t\tSET Deleted = '1'\n\t\tWHERE ID = '{$CollageID}'");
    Subscriptions::flush_subscriptions('collages', $CollageID);
    Subscriptions::flush_quote_notifications('collages', $CollageID);
}
Misc::write_log("Collage {$CollageID} ({$Name}) was deleted by " . $LoggedUser['Username'] . ": {$Reason}");
$Cache->delete_value("collage_{$CollageID}");
header('Location: collages.php');
Beispiel #15
0
}
// End competiton
$DB->query("\n\tSELECT LogScore\n\tFROM torrents\n\tWHERE ID = {$TorrentID}");
list($LogScore) = $DB->next_record();
if ($Properties['Trumpable'] == 1 && $LogScore == 100) {
    $DB->query("\n\t\tUPDATE torrents\n\t\tSET LogScore = 99\n\t\tWHERE ID = {$TorrentID}");
    $Results = array();
    $Results[] = 'The original uploader has chosen to allow this log to be deducted one point for using EAC v0.95., -1 point [1]';
    $Details = db_string(serialize($Results));
    $DB->query("\n\t\tUPDATE torrents_logs_new\n\t\tSET Score = 99, Details = '{$Details}'\n\t\tWHERE TorrentID = {$TorrentID}");
}
$DB->query("\n\tSELECT Enabled\n\tFROM users_main\n\tWHERE ID = {$UserID}");
list($Enabled) = $DB->next_record();
if ($Properties['Trumpable'] == 0 && $LogScore == 99 && $Enabled == 1 && strtotime($Time) < 1284422400) {
    $DB->query("\n\t\tSELECT Log\n\t\tFROM torrents_logs_new\n\t\tWHERE TorrentID = {$TorrentID}");
    list($Log) = $DB->next_record();
    if (strpos($Log, 'EAC extraction') === 0) {
        $DB->query("\n\t\t\tUPDATE torrents\n\t\t\tSET LogScore = 100\n\t\t\tWHERE ID = {$TorrentID}");
        $DB->query("\n\t\t\tUPDATE torrents_logs_new\n\t\t\tSET Score = 100, Details = ''\n\t\t\tWHERE TorrentID = {$TorrentID}");
    }
}
$DB->query("\n\tSELECT Name\n\tFROM torrents_group\n\tWHERE ID = {$GroupID}");
list($Name) = $DB->next_record(MYSQLI_NUM, false);
Misc::write_log("Torrent {$TorrentID} ({$Name}) in group {$GroupID} was edited by " . $LoggedUser['Username'] . " ({$LogDetails})");
// TODO: this is probably broken
Torrents::write_group_log($GroupID, $TorrentID, $LoggedUser['ID'], $LogDetails, 0);
$Cache->delete_value("torrents_details_{$GroupID}");
$Cache->delete_value("torrent_download_{$TorrentID}");
Torrents::update_hash($GroupID);
// All done!
header("Location: torrents.php?id={$GroupID}");
Beispiel #16
0
    error(404);
}
if (!check_perms('torrents_edit')) {
    error(403);
}
$DB->query("\n\tDELETE FROM torrents_artists\n\tWHERE GroupID = '{$GroupID}'\n\t\tAND ArtistID = '{$ArtistID}'\n\t\tAND Importance = '{$Importance}'");
$DB->query("\n\tSELECT Name\n\tFROM artists_group\n\tWHERE ArtistID = {$ArtistID}");
list($ArtistName) = $DB->next_record(MYSQLI_NUM, false);
$DB->query("\n\tSELECT Name\n\tFROM torrents_group\n\tWHERE ID = {$GroupID}");
if (!$DB->has_results()) {
    error(404);
}
list($GroupName) = $DB->next_record(MYSQLI_NUM, false);
// Get a count of how many groups or requests use this artist ID
$DB->query("\n\tSELECT ag.ArtistID\n\tFROM artists_group AS ag\n\t\tLEFT JOIN requests_artists AS ra ON ag.ArtistID = ra.ArtistID\n\tWHERE ra.ArtistID IS NOT NULL\n\t\tAND ag.ArtistID = {$ArtistID}");
$ReqCount = $DB->record_count();
$DB->query("\n\tSELECT ag.ArtistID\n\tFROM artists_group AS ag\n\t\tLEFT JOIN torrents_artists AS ta ON ag.ArtistID = ta.ArtistID\n\tWHERE ta.ArtistID IS NOT NULL\n\t\tAND ag.ArtistID = {$ArtistID}");
$GroupCount = $DB->record_count();
if ($ReqCount + $GroupCount == 0) {
    // The only group to use this artist
    Artists::delete_artist($ArtistID);
}
$Cache->delete_value("torrents_details_{$GroupID}");
// Delete torrent group cache
$Cache->delete_value("groups_artists_{$GroupID}");
// Delete group artist cache
Misc::write_log('Artist (' . $ArtistTypes[$Importance] . ") {$ArtistID} ({$ArtistName}) was removed from the group {$GroupID} ({$GroupName}) by user " . $LoggedUser['ID'] . ' (' . $LoggedUser['Username'] . ')');
Torrents::write_group_log($GroupID, 0, $LoggedUser['ID'], "removed artist {$ArtistName} (" . $ArtistTypes[$Importance] . ')', 0);
Torrents::update_hash($GroupID);
$Cache->delete_value("artist_groups_{$ArtistID}");
header('Location: ' . $_SERVER['HTTP_REFERER']);
Beispiel #17
0
            if (!strcasecmp($AliasName, $FoundAliasName)) {
                if ($Redirect) {
                    $AliasID = $Redirect;
                }
                break;
            }
        }
        if (!$AliasID) {
            $AliasName = db_string($AliasName);
            $DB->query("\n\t\t\t\tINSERT INTO artists_group (Name)\n\t\t\t\tVALUES ('{$AliasName}')");
            $ArtistID = $DB->inserted_id();
            $DB->query("\n\t\t\t\tINSERT INTO artists_alias (ArtistID, Name)\n\t\t\t\tVALUES ('{$ArtistID}', '{$AliasName}')");
            $AliasID = $DB->inserted_id();
        }
        $DB->query("\n\t\t\tSELECT Name\n\t\t\tFROM artists_group\n\t\t\tWHERE ArtistID = {$ArtistID}");
        list($ArtistName) = $DB->next_record(MYSQLI_NUM, false);
        $DB->query("\n\t\t\tINSERT IGNORE INTO torrents_artists\n\t\t\t\t(GroupID, ArtistID, AliasID, Importance, UserID)\n\t\t\tVALUES\n\t\t\t\t('{$GroupID}', '{$ArtistID}', '{$AliasID}', '{$Importance}', '{$UserID}')");
        if ($DB->affected_rows()) {
            $Changed = true;
            Misc::write_log("Artist {$ArtistID} ({$ArtistName}) was added to the group {$GroupID} ({$GroupName}) as " . $ArtistTypes[$Importance] . ' by user ' . $LoggedUser['ID'] . ' (' . $LoggedUser['Username'] . ')');
            Torrents::write_group_log($GroupID, 0, $LoggedUser['ID'], "added artist {$ArtistName} as " . $ArtistTypes[$Importance], 0);
        }
    }
}
if ($Changed) {
    $Cache->delete_value("torrents_details_{$GroupID}");
    $Cache->delete_value("groups_artists_{$GroupID}");
    // Delete group artist cache
    Torrents::update_hash($GroupID);
}
header('Location: ' . $_SERVER['HTTP_REFERER']);
Beispiel #18
0
$T['FreeLeech'] = 0;
$T['FreeLeechType'] = 0;
$LogScore = $HasLog == 1 ? $LogScoreAverage : 0;
// Torrent
$DB->query("\n\tINSERT INTO torrents\n\t\t(GroupID, UserID, Media, Format, Encoding,\n\t\tRemastered, RemasterYear, RemasterTitle, RemasterRecordLabel, RemasterCatalogueNumber,\n\t\tScene, HasLog, HasCue, info_hash, FileCount, FileList, FilePath,\n\t\tSize, Time, Description, LogScore, FreeTorrent, FreeLeechType)\n\tVALUES\n\t\t({$GroupID}, {$LoggedUser['ID']}, {$T['Media']}, {$T['Format']}, {$T['Encoding']},\n\t\t{$T['Remastered']}, {$T['RemasterYear']}, {$T['RemasterTitle']}, {$T['RemasterRecordLabel']}, {$T['RemasterCatalogueNumber']},\n\t\t{$T['Scene']}, '{$HasLog}', '{$HasCue}', '" . db_string($InfoHash) . "', {$NumFiles}, '{$FileString}', '{$FilePath}',\n\t\t{$TotalSize}, '" . sqltime() . "', {$T['TorrentDescription']}, {$LogScore}, '{$T['FreeLeech']}', '{$T['FreeLeechType']}')");
$Cache->increment('stats_torrent_count');
$TorrentID = $DB->inserted_id();
Tracker::update_tracker('add_torrent', array('id' => $TorrentID, 'info_hash' => rawurlencode($InfoHash), 'freetorrent' => $T['FreeLeech']));
$Debug->set_flag('upload: ocelot updated');
// Prevent deletion of this torrent until the rest of the upload process is done
// (expire the key after 10 minutes to prevent locking it for too long in case there's a fatal error below)
$Cache->cache_value("torrent_{$TorrentID}_lock", true, 600);
//******************************************************************************//
//--------------- Write torrent file -------------------------------------------//
$DB->query("\n\tINSERT INTO torrents_files (TorrentID, File)\n\tVALUES ({$TorrentID}, '{$TorEnc}')");
Misc::write_log("Torrent {$TorrentID} ({$LogName}) (" . number_format($TotalSize / (1024 * 1024), 2) . ' MB) was uploaded by ' . $LoggedUser['Username']);
Torrents::write_group_log($GroupID, $TorrentID, $LoggedUser['ID'], 'uploaded (' . number_format($TotalSize / (1024 * 1024), 2) . ' MB)', 0);
Torrents::update_hash($GroupID);
$Debug->set_flag('upload: sphinx updated');
if ($Type == 'Music') {
    include SERVER_ROOT . '/sections/upload/insert_extra_torrents.php';
}
//******************************************************************************//
//--------------- Add the log scores to the DB ---------------------------------//
if (!empty($LogScores) && $HasLog) {
    $LogQuery = '
		INSERT INTO torrents_logs_new
			(TorrentID, Log, Details, NotEnglish, Score, Revision, Adjusted, AdjustedBy, AdjustmentReason)
		VALUES (';
    foreach ($LogScores as $LogKey => $LogScore) {
        $LogScores[$LogKey] = "{$TorrentID}, {$LogScore}, 1, 0, 0, NULL";
Beispiel #19
0
<?php

authorize();
$GroupID = $_POST['groupid'];
$OldGroupID = $GroupID;
$NewName = $_POST['name'];
if (!$GroupID || !is_number($GroupID)) {
    error(404);
}
if (empty($NewName)) {
    error('Torrent groups must have a name');
}
if (!check_perms('torrents_edit')) {
    error(403);
}
$DB->query("\n\tSELECT Name\n\tFROM torrents_group\n\tWHERE ID = {$GroupID}");
list($OldName) = $DB->next_record(MYSQLI_NUM, false);
$DB->query("\n\tUPDATE torrents_group\n\tSET Name = '" . db_string($NewName) . "'\n\tWHERE ID = '{$GroupID}'");
$Cache->delete_value("torrents_details_{$GroupID}");
Torrents::update_hash($GroupID);
Misc::write_log("Torrent Group {$GroupID} ({$OldName}) was renamed to \"{$NewName}\" from \"{$OldName}\" by " . $LoggedUser['Username']);
Torrents::write_group_log($GroupID, 0, $LoggedUser['ID'], "renamed to \"{$NewName}\" from \"{$OldName}\"", 0);
header("Location: torrents.php?id={$GroupID}");
Beispiel #20
0
if (check_perms('admin_manage_wiki')) {
    $Read = $_POST['minclassread'];
    $Edit = $_POST['minclassedit'];
    if (!is_number($Read)) {
        error(0);
        //int?
    }
    if (!is_number($Edit)) {
        error(0);
    }
    if ($Edit > $LoggedUser['EffectiveClass']) {
        error('You can\'t restrict articles above your own level');
    }
    if ($Edit < $Read) {
        $Edit = $Read;
        //Human error fix.
    }
} else {
    $Read = 100;
    $Edit = 100;
}
$DB->query("\n\tINSERT INTO wiki_articles\n\t\t(Revision, Title, Body, MinClassRead, MinClassEdit, Date, Author)\n\tVALUES\n\t\t('1', '{$P['title']}', '{$P['body']}', '{$Read}', '{$Edit}', '" . sqltime() . "', '{$LoggedUser['ID']}')");
$ArticleID = $DB->inserted_id();
$TitleAlias = Wiki::normalize_alias($_POST['title']);
$Dupe = Wiki::alias_to_id($_POST['title']);
if ($TitleAlias != '' && $Dupe === false) {
    $DB->query("\n\t\tINSERT INTO wiki_aliases (Alias, ArticleID)\n\t\tVALUES ('" . db_string($TitleAlias) . "', '{$ArticleID}')");
    Wiki::flush_aliases();
}
Misc::write_log("Wiki article {$ArticleID} (" . $_POST['title'] . ") was created by " . $LoggedUser['Username']);
header("Location: wiki.php?action=article&id={$ArticleID}");
Beispiel #21
0
    error("Somebody else has moderated this user since you loaded it. Please go back and refresh the page.");
}
//NOW that we know the class of the current user, we can see if one staff member is trying to hax0r us.
if (!check_perms('users_mod', $Cur['Class'])) {
    //Son of a f*****g bitch
    error(403);
    die;
}
if (!empty($_POST['donor_points_submit']) && !empty($_POST['donation_value']) && is_numeric($_POST['donation_value'])) {
    Donations::regular_donate($UserID, $_POST['donation_value'], "Add Points", $_POST['donation_reason'], $_POST['donation_currency']);
} elseif (!empty($_POST['donor_values_submit'])) {
    Donations::update_rank($UserID, $_POST['donor_rank'], $_POST['total_donor_rank'], $_POST['reason']);
}
// If we're deleting the user, we can ignore all the other crap
if ($_POST['UserStatus'] === 'delete' && check_perms('users_delete_users')) {
    Misc::write_log("User account {$UserID} (" . $Cur['Username'] . ") was deleted by " . $LoggedUser['Username']);
    $DB->query("\n\t\tDELETE FROM users_main\n\t\tWHERE id = {$UserID}");
    $DB->query("\n\t\tDELETE FROM users_info\n\t\tWHERE UserID = {$UserID}");
    $Cache->delete_value("user_info_{$UserID}");
    Tracker::update_tracker('remove_user', array('passkey' => $Cur['torrent_pass']));
    header("Location: log.php?search=User+{$UserID}");
    die;
}
// User was not deleted. Perform other stuff.
$UpdateSet = array();
$EditSummary = array();
$TrackerUserUpdates = array('passkey' => $Cur['torrent_pass']);
$QueryID = G::$DB->get_query_id();
if ($LockType == '---' || $LockedAccount == 0) {
    if ($Cur['Type']) {
        $DB->query("DELETE FROM locked_accounts WHERE UserID = '" . $UserID . "'");
Beispiel #22
0
}
if ($Cache->get_value("torrent_{$TorrentID}_lock")) {
    error('Torrent cannot be deleted because the upload process is not completed yet. Please try again later.');
}
$DB->query("\n\tSELECT\n\t\tt.UserID,\n\t\tt.GroupID,\n\t\tt.Size,\n\t\tt.info_hash,\n\t\ttg.Name,\n\t\tag.Name,\n\t\tt.Time,\n\t\tCOUNT(x.uid)\n\tFROM torrents AS t\n\t\tLEFT JOIN torrents_group AS tg ON tg.ID = t.GroupID\n\t\tLEFT JOIN artists_group AS ag ON ag.ArtistID = tg.ArtistID\n\t\tLEFT JOIN xbt_snatched AS x ON x.fid = t.ID\n\tWHERE t.ID = '{$TorrentID}'");
list($UserID, $GroupID, $Size, $InfoHash, $Name, $ArtistName, $Time, $Snatches) = $DB->next_record(MYSQLI_NUM, false);
if (($LoggedUser['ID'] != $UserID || time_ago($Time) > 3600 * 24 * 7 || $Snatches > 4) && !check_perms('torrents_delete')) {
    error(403);
}
if ($ArtistName) {
    $Name = "{$ArtistName} - {$Name}";
}
if (isset($_SESSION['logged_user']['multi_delete'])) {
    if ($_SESSION['logged_user']['multi_delete'] >= 3 && !check_perms('torrents_delete_fast')) {
        error('You have recently deleted 3 torrents. Please contact a staff member if you need to delete more.');
    }
    $_SESSION['logged_user']['multi_delete']++;
} else {
    $_SESSION['logged_user']['multi_delete'] = 1;
}
$InfoHash = unpack('H*', $InfoHash);
Torrents::delete_torrent($TorrentID, $GroupID);
Misc::write_log("Torrent {$TorrentID} ({$Name}) (" . number_format($Size / (1024 * 1024), 2) . ' MB) (' . strtoupper($InfoHash[1]) . ') was deleted by ' . $LoggedUser['Username'] . ': ' . $_POST['reason'] . ' ' . $_POST['extra']);
Torrents::write_group_log($GroupID, $TorrentID, $LoggedUser['ID'], 'deleted torrent (' . number_format($Size / (1024 * 1024), 2) . ' MB, ' . strtoupper($InfoHash[1]) . ') for reason: ' . $_POST['reason'] . ' ' . $_POST['extra'], 0);
View::show_header('Torrent deleted');
?>
<div class="thin">
	<h3>Torrent was successfully deleted.</h3>
</div>
<?php 
View::show_footer();
Beispiel #23
0
$DB->query("\n\tUPDATE requests\n\tSET FillerID = {$FillerID},\n\t\tTorrentID = {$TorrentID},\n\t\tTimeFilled = '" . sqltime() . "'\n\tWHERE ID = {$RequestID}");
if ($CategoryName === 'Music') {
    $ArtistForm = Requests::get_artists($RequestID);
    $ArtistName = Artists::display_artists($ArtistForm, false, true);
    $FullName = $ArtistName . $Title;
} else {
    $FullName = $Title;
}
$DB->query("\n\tSELECT UserID\n\tFROM requests_votes\n\tWHERE RequestID = {$RequestID}");
$UserIDs = $DB->to_array();
foreach ($UserIDs as $User) {
    list($VoterID) = $User;
    Misc::send_pm($VoterID, 0, "The request \"{$FullName}\" has been filled", 'One of your requests&#8202;&mdash;&#8202;[url=' . site_url() . "requests.php?action=view&amp;id={$RequestID}]{$FullName}" . '[/url]&#8202;&mdash;&#8202;has been filled. You can view it here: [url]' . site_url() . "torrents.php?torrentid={$TorrentID}" . '[/url]');
}
$RequestVotes = Requests::get_votes_array($RequestID);
Misc::write_log("Request {$RequestID} ({$FullName}) was filled by user {$FillerID} ({$FillerUsername}) with the torrent {$TorrentID} for a " . Format::get_size($RequestVotes['TotalBounty']) . ' bounty.');
// Give bounty
$DB->query("\n\tUPDATE users_main\n\tSET Uploaded = (Uploaded + " . $RequestVotes['TotalBounty'] . ")\n\tWHERE ID = {$FillerID}");
$Cache->delete_value("user_stats_{$FillerID}");
$Cache->delete_value("request_{$RequestID}");
if ($GroupID) {
    $Cache->delete_value("requests_group_{$GroupID}");
}
$DB->query("\n\tSELECT ArtistID\n\tFROM requests_artists\n\tWHERE RequestID = {$RequestID}");
$ArtistIDs = $DB->to_array();
foreach ($ArtistIDs as $ArtistID) {
    $Cache->delete_value("artists_requests_{$ArtistID}");
}
Requests::update_sphinx_requests($RequestID);
$SphQL = new SphinxqlQuery();
$SphQL->raw_query("UPDATE requests, requests_delta SET torrentid = {$TorrentID}, fillerid = {$FillerID} WHERE id = {$RequestID}", false);
Beispiel #24
0
        foreach ($BookmarkUsers as $UserID) {
            $Cache->delete_value("notify_artists_{$UserID}");
        }
    }
    if (!empty($Collages)) {
        foreach ($Collages as $CollageID) {
            $Cache->delete_value("collage_{$CollageID}");
        }
    }
    $Cache->delete_value("artist_{$ArtistID}");
    $Cache->delete_value("artist_{$NewArtistID}");
    $Cache->delete_value("artist_groups_{$ArtistID}");
    $Cache->delete_value("artist_groups_{$NewArtistID}");
    // Delete the old artist
    $DB->query("\n\t\tDELETE FROM artists_group\n\t\tWHERE ArtistID = {$ArtistID}");
    Misc::write_log("The artist {$ArtistID} ({$ArtistName}) was made into a non-redirecting alias of artist {$NewArtistID} ({$NewArtistName}) by user " . $LoggedUser['ID'] . " (" . $LoggedUser['Username'] . ')');
    header("Location: artist.php?action=edit&artistid={$NewArtistID}");
} else {
    View::show_header('Merging Artists');
    ?>
	<div class="header">
		<h2>Confirm merge</h2>
	</div>
	<form class="merge_form" name="artist" action="artist.php" method="post">
		<input type="hidden" name="action" value="change_artistid" />
		<input type="hidden" name="auth" value="<?php 
    echo $LoggedUser['AuthKey'];
    ?>
" />
		<input type="hidden" name="artistid" value="<?php 
    echo $ArtistID;