function transcode_init_sphql() { // Initializes a basic SphinxqlQuery object $SphQL = new SphinxqlQuery(); $SphQL->select('groupid')->from('better_transcode')->where('logscore', 100)->where_match('FLAC', 'format')->order_by('RAND()')->limit(0, TORRENTS_PER_PAGE, TORRENTS_PER_PAGE); if (in_array($_GET['target'], array('v0', 'v2', '320'))) { // V0/V2/320 is missing $SphQL->where_match('!' . $_GET['target'], 'encoding', false); } elseif ($_GET['target'] === 'all') { // all transcodes are missing $SphQL->where_match('!(v0 | v2 | 320)', 'encoding', false); } else { // any transcode is missing $SphQL->where_match('!(v0 v2 320)', 'encoding', false); } if (!empty($_GET['search'])) { $SphQL->where_match($_GET['search'], '(groupname,artistname,year,taglist)'); } return $SphQL; }
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 — [url=' . site_url() . "requests.php?action=view&id={$RequestID}]{$FullName}" . '[/url] — 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); header("Location: requests.php?action=view&id={$RequestID}");
Invite Tree <a href="#" onclick="$('#invitetree').gtoggle(); return false;" class="brackets">View</a> </div> <div id="invitetree" class="hidden"> <?php $Tree->make_tree(); ?> </div> </div> <?php } if (check_perms('users_mod')) { DonationsView::render_donation_history(Donations::get_donation_history($UserID)); } // Requests if (empty($LoggedUser['DisableRequests']) && check_paranoia_here('requestsvoted_list')) { $SphQL = new SphinxqlQuery(); $SphQLResult = $SphQL->select('id, votes, bounty')->from('requests, requests_delta')->where('userid', $UserID)->where('torrentid', 0)->order_by('votes', 'desc')->order_by('bounty', 'desc')->limit(0, 100, 100)->query(); if ($SphQLResult->has_results()) { $SphRequests = $SphQLResult->to_array('id', MYSQLI_ASSOC); ?> <div class="box" id="requests_box"> <div class="head"> Requests <a href="#" onclick="$('#requests').gtoggle(); return false;" class="brackets">View</a> </div> <div id="requests" class="request_table hidden"> <table cellpadding="6" cellspacing="1" border="0" class="border" width="100%"> <tr class="colhead_dark"> <td style="width: 48%;"> <strong>Request Name</strong> </td> <td>
<?php $SphQL = new SphinxqlQuery(); $SphQL->select('id, votes, bounty')->from('requests, requests_delta'); $SortOrders = array('votes' => 'votes', 'bounty' => 'bounty', 'lastvote' => 'lastvote', 'filled' => 'timefilled', 'year' => 'year', 'created' => 'timeadded', 'random' => false); if (empty($_GET['order']) || !isset($SortOrders[$_GET['order']])) { $_GET['order'] = 'created'; } $OrderBy = $_GET['order']; if (!empty($_GET['sort']) && $_GET['sort'] === 'asc') { $OrderWay = 'asc'; } else { $_GET['sort'] = 'desc'; $OrderWay = 'desc'; } $NewSort = $_GET['sort'] === 'asc' ? 'desc' : 'asc'; if ($OrderBy === 'random') { $SphQL->order_by('RAND()', ''); unset($_GET['page']); } else { $SphQL->order_by($SortOrders[$OrderBy], $OrderWay); } $Submitted = !empty($_GET['submit']); //Paranoia if (!empty($_GET['userid'])) { if (!is_number($_GET['userid'])) { error('User ID must be an integer'); } $UserInfo = Users::user_info($_GET['userid']); if (empty($UserInfo)) { error('That user does not exist');
} /** End default parameters and validation **/ /** Start preparation of property arrays **/ array_pop($Bitrates); // remove 'other' $SearchBitrates = array_merge($Bitrates, array('v0', 'v1', 'v2', '24bit')); foreach ($SearchBitrates as $ID => $Val) { $SearchBitrates[$ID] = strtolower($Val); } foreach ($Formats as $ID => $Val) { $SearchFormats[$ID] = strtolower($Val); } /** End preparation of property arrays **/ /** Start query preparation **/ $SphQL = new SphinxqlQuery(); $SphQLTor = new SphinxqlQuery(); if ($OrderBy == 'random') { $SphQL->select('id, groupid, categoryid')->order_by('RAND()', ''); $Random = true; } elseif ($GroupResults) { $OrderProperties = $SortOrders[$OrderBy]; $SphQL->select('groupid, categoryid' . (isset($AggregateExp[$OrderProperties[0]]) ? ', ' . $AggregateExp[$OrderProperties[0]] : ''))->group_by('groupid')->order_by($OrderProperties[0], $OrderWay)->order_group_by($OrderProperties[1], $OrderWay); } else { $SphQL->select('id, groupid, categoryid')->order_by($SortOrders[$OrderBy], $OrderWay); } $SphQL->from('torrents, delta'); $SphQLTor->select('id, groupid')->from('torrents, delta'); /** End query preparation **/ /** Start building search query **/ $Filtered = false; $EnableNegation = false;
if (!isset($_GET['type']) || !is_number($_GET['type']) || $_GET['type'] > 3) { error(0); } $Options = array('v0', 'v2', '320'); $Encodings = array('V0 (VBR)', 'V2 (VBR)', '320'); $EncodingKeys = array_fill_keys($Encodings, true); if ($_GET['type'] === '3') { $List = "!(v0 | v2 | 320)"; } else { $List = '!' . $Options[$_GET['type']]; if ($_GET['type'] !== '0') { $_GET['type'] = display_str($_GET['type']); } } $SphQL = new SphinxqlQuery(); $SphQL->select('id, groupid')->from('better_transcode')->where('logscore', 100)->where_match('FLAC', 'format')->where_match($List, 'encoding', false)->order_by('RAND()')->limit(0, TORRENTS_PER_PAGE, TORRENTS_PER_PAGE); if (!empty($_GET['search'])) { $SphQL->where_match($_GET['search'], '(groupname,artistname,year,taglist)'); } $SphQLResult = $SphQL->query(); $TorrentCount = $SphQLResult->get_meta('total'); if ($TorrentCount == 0) { error('No results found!'); } $Results = $SphQLResult->to_array('groupid'); $Groups = Torrents::get_groups(array_keys($Results)); $TorrentGroups = array(); foreach ($Groups as $GroupID => $Group) { if (empty($Group['Torrents'])) { unset($Groups[$GroupID]);
} if ($HasCue == "'1'") { $Title .= ' / Cue'; } $Title .= ' / ' . trim($Media); if ($Scene == '1') { $Title .= ' / Scene'; } if ($Freeleech == '1') { $Title .= ' / Freeleech!'; } if ($Freeleech == '2') { $Title .= ' / Neutral leech!'; } $UploaderInfo = Users::user_info($UploaderID); $Item = $Feed->item($Title, Text::strip_bbcode($Body), 'torrents.php?action=download&authkey=[[AUTHKEY]]&torrent_pass=[[PASSKEY]]&id=' . $TorrentID, $UploaderInfo['Username'], "torrents.php?id={$PageID}", trim($TagList)); $Feed->populate('torrents_bookmarks_t_' . $LoggedUser['torrent_pass'], $Item); } } elseif ($Type == 'request') { $DB->query("\n\t\t\tSELECT UserID\n\t\t\tFROM {$Table}\n\t\t\tWHERE {$Col} = '" . db_string($PageID) . "'"); if ($DB->record_count() < 100) { // Sphinx doesn't like huge MVA updates. Update sphinx_requests_delta // and live with the <= 1 minute delay if we have more than 100 bookmarkers $Bookmarkers = implode(',', $DB->collect('UserID')); $SphQL = new SphinxqlQuery(); $SphQL->raw_query("UPDATE requests, requests_delta SET bookmarker = ({$Bookmarkers}) WHERE id = {$PageID}"); } else { Requests::update_sphinx_requests($PageID); } } }
$NumResults = $DB->record_count(); if (!$NumResults) { $TotalMatches = 0; } elseif ($NumResults == LOG_ENTRIES_PER_PAGE) { // This is a lot faster than SQL_CALC_FOUND_ROWS $SphQL = new SphinxqlQuery(); $Result = $SphQL->select('id')->from('log, log_delta')->limit(0, 1, 1)->query(); $Debug->log_var($Result, '$Result'); $TotalMatches = min(SPHINX_MAX_MATCHES, $Result->get_meta('total_found')); } else { $TotalMatches = $NumResults + $Offset; } $QueryStatus = 0; } else { $Page = min(SPHINX_MAX_MATCHES / TORRENTS_PER_PAGE, $Page); $SphQL = new SphinxqlQuery(); $SphQL->select('id')->from('log, log_delta')->where_match($_GET['search'], 'message')->order_by('id', 'DESC')->limit($Offset, LOG_ENTRIES_PER_PAGE, $Offset + LOG_ENTRIES_PER_PAGE); $Result = $SphQL->query(); $Debug->log_var($Result, '$Result'); $Debug->set_flag('Finished SphQL query'); if ($QueryStatus = $Result->Errno) { $QueryError = $Result->Error; } $NumResults = $Result->get_result_info('num_rows'); $TotalMatches = min(SPHINX_MAX_MATCHES, $Result->get_meta('total_found')); if ($NumResults > 0) { $LogIDs = $Result->collect('id'); $Log = $DB->query(' SELECT ID, Message, Time FROM log WHERE ID IN (' . implode(',', $LogIDs) . ')
$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&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&type=request&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&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); header("Location: requests.php?action=view&id={$RequestID}");