include(SERVER_ROOT.'/classes/text.class.php'); // Text formatting class
$Text = new TEXT;
if (empty($_GET['id']) || !is_numeric($_GET['id']) || (!empty($_GET['preview']) && !is_numeric($_GET['preview']))) {
error(404);
}
$UserID = $_GET['id'];
$Preview = isset($_GET['preview']) ? $_GET['preview'] : 0;
if ($UserID == $LoggedUser['ID']) {
$OwnProfile = true;
if ($Preview == 1) {
$OwnProfile = false;
$ParanoiaString = $_GET['paranoia'];
$CustomParanoia = explode(',', $ParanoiaString);
}
} else {
$OwnProfile = false;
//Don't allow any kind of previewing on others' profiles
$Preview = 0;
}
$EnabledRewards = Donations::get_enabled_rewards($UserID);
$Rewards = Donations::get_rewards($UserID);
$ProfileRewards = Donations::get_profile_rewards($UserID);
$AvatarMouseOverText = '';
$SecondAvatar = '';
if ($EnabledRewards['HasAvatarMouseOverText'] && !empty($Rewards['AvatarMouseOverText'])) {
$AvatarMouseOverText = "title=\"$Rewards[AvatarMouseOverText]\" alt=\"$Rewards[AvatarMouseOverText]\"";
}
if ($EnabledRewards['HasSecondAvatar'] && !empty($Rewards['SecondAvatar'])) {
$SecondAvatar = 'data-gazelle-second-avatar="' . ImageTools::process($Rewards['SecondAvatar']) . '"';
}
if (check_perms('users_mod')) { // Person viewing is a staff member
$DB->query("
SELECT
m.Username,
m.Email,
m.LastAccess,
m.IP,
p.Level AS Class,
m.Uploaded,
m.Downloaded,
m.RequiredRatio,
m.Title,
m.torrent_pass,
m.Enabled,
m.Paranoia,
m.Invites,
m.can_leech,
m.Visible,
i.JoinDate,
i.Info,
i.Avatar,
i.AdminComment,
i.Donor,
i.Artist,
i.Warned,
i.SupportFor,
i.RestrictedForums,
i.PermittedForums,
i.Inviter,
inviter.Username,
COUNT(posts.id) AS ForumPosts,
i.RatioWatchEnds,
i.RatioWatchDownload,
i.DisableAvatar,
i.DisableInvites,
i.DisablePosting,
i.DisableForums,
i.DisableTagging,
i.DisableUpload,
i.DisableWiki,
i.DisablePM,
i.DisableIRC,
i.DisableRequests," . "
m.FLTokens,
SHA1(i.AdminComment),
i.InfoTitle
FROM users_main AS m
JOIN users_info AS i ON i.UserID = m.ID
LEFT JOIN users_main AS inviter ON i.Inviter = inviter.ID
LEFT JOIN permissions AS p ON p.ID = m.PermissionID
LEFT JOIN forums_posts AS posts ON posts.AuthorID = m.ID
WHERE m.ID = '$UserID'
GROUP BY AuthorID");
if (!$DB->has_results()) { // If user doesn't exist
header("Location: log.php?search=User+$UserID");
}
list($Username, $Email, $LastAccess, $IP, $Class, $Uploaded, $Downloaded, $RequiredRatio, $CustomTitle, $torrent_pass, $Enabled, $Paranoia, $Invites, $DisableLeech, $Visible, $JoinDate, $Info, $Avatar, $AdminComment, $Donor, $Artist, $Warned, $SupportFor, $RestrictedForums, $PermittedForums, $InviterID, $InviterName, $ForumPosts, $RatioWatchEnds, $RatioWatchDownload, $DisableAvatar, $DisableInvites, $DisablePosting, $DisableForums, $DisableTagging, $DisableUpload, $DisableWiki, $DisablePM, $DisableIRC, $DisableRequests, $FLTokens, $CommentHash, $InfoTitle) = $DB->next_record(MYSQLI_NUM, array(8, 11));
} else { // Person viewing is a normal user
$DB->query("
SELECT
m.Username,
m.Email,
m.LastAccess,
m.IP,
p.Level AS Class,
m.Uploaded,
m.Downloaded,
m.RequiredRatio,
m.Enabled,
m.Paranoia,
m.Invites,
m.Title,
m.torrent_pass,
m.can_leech,
i.JoinDate,
i.Info,
i.Avatar,
m.FLTokens,
i.Donor,
i.Warned,
COUNT(posts.id) AS ForumPosts,
i.Inviter,
i.DisableInvites,
inviter.username,
i.InfoTitle
FROM users_main AS m
JOIN users_info AS i ON i.UserID = m.ID
LEFT JOIN permissions AS p ON p.ID = m.PermissionID
LEFT JOIN users_main AS inviter ON i.Inviter = inviter.ID
LEFT JOIN forums_posts AS posts ON posts.AuthorID = m.ID
WHERE m.ID = $UserID
GROUP BY AuthorID");
if (!$DB->has_results()) { // If user doesn't exist
header("Location: log.php?search=User+$UserID");
}
list($Username, $Email, $LastAccess, $IP, $Class, $Uploaded, $Downloaded,
$RequiredRatio, $Enabled, $Paranoia, $Invites, $CustomTitle, $torrent_pass,
$DisableLeech, $JoinDate, $Info, $Avatar, $FLTokens, $Donor, $Warned,
$ForumPosts, $InviterID, $DisableInvites, $InviterName, $InfoTitle) = $DB->next_record(MYSQLI_NUM, array(9, 11));
}
// Image proxy CTs
$DisplayCustomTitle = $CustomTitle;
if (check_perms('site_proxy_images') && !empty($CustomTitle)) {
$DisplayCustomTitle = preg_replace_callback('~src=("?)(http.+?)(["\s>])~',
function($Matches) {
return 'src=' . $Matches[1] . ImageTools::process($Matches[2]) . $Matches[3];
}, $CustomTitle);
}
if ($Preview == 1) {
if (strlen($ParanoiaString) == 0) {
$Paranoia = array();
} else {
$Paranoia = $CustomParanoia;
}
} else {
$Paranoia = unserialize($Paranoia);
if (!is_array($Paranoia)) {
$Paranoia = array();
}
}
$ParanoiaLevel = 0;
foreach ($Paranoia as $P) {
$ParanoiaLevel++;
if (strpos($P, '+') !== false) {
$ParanoiaLevel++;
}
}
$JoinedDate = time_diff($JoinDate);
$LastAccess = time_diff($LastAccess);
function check_paranoia_here($Setting) {
global $Paranoia, $Class, $UserID, $Preview;
if ($Preview == 1) {
return check_paranoia($Setting, $Paranoia, $Class);
} else {
return check_paranoia($Setting, $Paranoia, $Class, $UserID);
}
}
View::show_header($Username, "jquery.imagesloaded,jquery.wookmark,user,bbcode,requests,lastfm,comments,info_paster", "tiles");
?>
=Users::format_username($UserID, true, true, true, false, true)?>
if (!$OwnProfile) { ?>
Send message
$DB->query("
SELECT FriendID
FROM friends
WHERE UserID = '$LoggedUser[ID]'
AND FriendID = '$UserID'");
if (!$DB->has_results()) { ?>
Add to friends
} ?>
Report user
}
if (check_perms('users_edit_profiles', $Class) || $LoggedUser['ID'] == $UserID) {
?>
Settings
}
if (check_perms('users_view_invites', $Class)) {
?>
Invites
}
if (check_perms('admin_manage_permissions', $Class)) {
?>
Permissions
}
if (check_perms('users_logout', $Class) && check_perms('users_view_ips', $Class)) {
?>
Sessions
}
if (check_perms('admin_reports')) {
?>
Reports
}
if (check_perms('users_mod')) {
?>
FL tokens
}
if (check_perms('admin_clear_cache') && check_perms('users_override_paranoia')) {
?>
Clear cache
} ?>
if ($RatioWatchEnds != '0000-00-00 00:00:00'
&& (time() < strtotime($RatioWatchEnds))
&& ($Downloaded * $RequiredRatio) > $Uploaded
) {
?>
Ratio watch
This user is currently on ratio watch and must upload =Format::get_size(($Downloaded * $RequiredRatio) - $Uploaded)?> in the next =time_diff($RatioWatchEnds)?>, or their leeching privileges will be revoked. Amount downloaded while on ratio watch: =Format::get_size($Downloaded - $RatioWatchDownload)?>
} ?>
=!empty($InfoTitle) ? $InfoTitle : 'Profile';?>
Hide
if (!$Info) { ?>
This profile is currently empty.
} else {
echo $Text->full_format($Info);
}
?>
DonationsView::render_profile_rewards($EnabledRewards, $ProfileRewards); ?>
if (check_paranoia_here('snatched')) {
$RecentSnatches = $Cache->get_value("recent_snatches_$UserID");
if ($RecentSnatches === false) {
$DB->query("
SELECT
g.ID,
g.Name,
g.WikiImage
FROM xbt_snatched AS s
INNER JOIN torrents AS t ON t.ID = s.fid
INNER JOIN torrents_group AS g ON t.GroupID = g.ID
WHERE s.uid = '$UserID'
AND g.CategoryID = '1'
AND g.WikiImage != ''
GROUP BY g.ID
ORDER BY s.tstamp DESC
LIMIT 5");
$RecentSnatches = $DB->to_array();
$Artists = Artists::get_artists($DB->collect('ID'));
foreach ($RecentSnatches as $Key => $SnatchInfo) {
$RecentSnatches[$Key]['Artist'] = Artists::display_artists($Artists[$SnatchInfo['ID']], false, true);
}
$Cache->cache_value('recent_snatches_'.$UserID, $RecentSnatches, 0); //inf cache
}
if (!empty($RecentSnatches)) {
?>
# Recent Snatches
|
foreach ($RecentSnatches as $RS) { ?>
|
} ?>
}
}
if (check_paranoia_here('uploads')) {
$RecentUploads = $Cache->get_value("recent_uploads_$UserID");
if ($RecentUploads === false) {
$DB->query("
SELECT
g.ID,
g.Name,
g.WikiImage
FROM torrents_group AS g
INNER JOIN torrents AS t ON t.GroupID = g.ID
WHERE t.UserID = '$UserID'
AND g.CategoryID = '1'
AND g.WikiImage != ''
GROUP BY g.ID
ORDER BY t.Time DESC
LIMIT 5");
$RecentUploads = $DB->to_array();
$Artists = Artists::get_artists($DB->collect('ID'));
foreach ($RecentUploads as $Key => $UploadInfo) {
$RecentUploads[$Key]['Artist'] = Artists::display_artists($Artists[$UploadInfo['ID']], false, true);
}
$Cache->cache_value("recent_uploads_$UserID", $RecentUploads, 0); //inf cache
}
if (!empty($RecentUploads)) {
?>
# Recent Uploads
|
foreach ($RecentUploads as $RU) { ?>
|
} ?>
}
}
$DB->query("
SELECT ID, Name
FROM collages
WHERE UserID = '$UserID'
AND CategoryID = '0'
AND Deleted = '0'
ORDER BY Featured DESC,
Name ASC");
$Collages = $DB->to_array(false, MYSQLI_NUM, false);
$FirstCol = true;
foreach ($Collages as $CollageInfo) {
list($CollageID, $CName) = $CollageInfo;
$DB->query("
SELECT ct.GroupID,
tg.WikiImage,
tg.CategoryID
FROM collages_torrents AS ct
JOIN torrents_group AS tg ON tg.ID = ct.GroupID
WHERE ct.CollageID = '$CollageID'
ORDER BY ct.Sort
LIMIT 5");
$Collage = $DB->to_array(false, MYSQLI_ASSOC, false);
?>
# =display_str($CName)?> - See full
=$FirstCol ? 'Hide' : 'Show' ?>
|
foreach ($Collage as $C) {
$Group = Torrents::get_groups(array($C['GroupID']), true, true, false);
extract(Torrents::array_group($Group[$C['GroupID']]));
$Name = '';
$Name .= Artists::display_artists(array('1' => $Artists), false, true);
$Name .= $GroupName;
?>
|
} ?>
$FirstCol = false;
}
// Linked accounts
if (check_perms('users_mod')) {
include(SERVER_ROOT.'/sections/user/linkedfunctions.php');
user_dupes_table($UserID);
}
if ((check_perms('users_view_invites')) && $Invited > 0) {
include(SERVER_ROOT.'/classes/invite_tree.class.php');
$Tree = new INVITE_TREE($UserID, array('visible' => false));
?>
}
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) // Limit to 100 requests
->query();
if ($SphQLResult->has_results()) {
$SphRequests = $SphQLResult->to_array('id', MYSQLI_ASSOC);
?>
Request Name
|
Vote
|
Bounty
|
Added
|
$Row = 0;
$Requests = Requests::get_requests(array_keys($SphRequests));
foreach ($SphRequests as $RequestID => $SphRequest) {
$Request = $Requests[$RequestID];
$VotesCount = $SphRequest['votes'];
$Bounty = $SphRequest['bounty'] * 1024; // Sphinx stores bounty in kB
$CategoryName = $Categories[$Request['CategoryID'] - 1];
if ($CategoryName == 'Music') {
$ArtistForm = Requests::get_artists($RequestID);
$ArtistLink = Artists::display_artists($ArtistForm, true, true);
$FullName = "$ArtistLink$Request[Title] [$Request[Year]]";
} elseif ($CategoryName == 'Audiobooks' || $CategoryName == 'Comedy') {
$FullName = "$Request[Title] [$Request[Year]]";
} else {
$FullName = "$Request[Title]";
}
?>
=$FullName ?>
|
=$VotesCount?>
if (check_perms('site_vote')) { ?>
+
} ?>
|
=Format::get_size($Bounty)?>
|
=time_diff($Request['TimeAdded']) ?>
|
} ?>
}
}
$IsFLS = isset($LoggedUser['ExtraClasses'][FLS_TEAM]);
if (check_perms('users_mod', $Class) || $IsFLS) {
$UserLevel = $LoggedUser['EffectiveClass'];
$DB->query("
SELECT
SQL_CALC_FOUND_ROWS
ID,
Subject,
Status,
Level,
AssignedToUser,
Date,
ResolverID
FROM staff_pm_conversations
WHERE UserID = $UserID
AND (Level <= $UserLevel OR AssignedToUser = '".$LoggedUser['ID']."')
ORDER BY Date DESC");
if ($DB->has_results()) {
$StaffPMs = $DB->to_array();
?>
Subject |
Date |
Assigned to |
Resolved by |
foreach ($StaffPMs as $StaffPM) {
list($ID, $Subject, $Status, $Level, $AssignedToUser, $Date, $ResolverID) = $StaffPM;
// Get assigned
if ($AssignedToUser == '') {
// Assigned to class
$Assigned = ($Level == 0) ? 'First Line Support' : $ClassLevels[$Level]['Name'];
// No + on Sysops
if ($Assigned != 'Sysop') {
$Assigned .= '+';
}
} else {
// Assigned to user
$Assigned = Users::format_username($UserID, true, true, true, true);
}
if ($ResolverID) {
$Resolver = Users::format_username($ResolverID, true, true, true, true);
} else {
$Resolver = '(unresolved)';
}
?>
=display_str($Subject)?> |
=time_diff($Date, 2, true)?> |
=$Assigned?> |
=$Resolver?> |
} ?>
}
}
// Displays a table of forum warnings viewable only to Forum Moderators
if ($LoggedUser['Class'] == 650 && check_perms('users_warn', $Class)) {
$DB->query("
SELECT Comment
FROM users_warnings_forums
WHERE UserID = '$UserID'");
list($ForumWarnings) = $DB->next_record();
if ($DB->has_results()) {
?>
}
}
if (check_perms('users_mod', $Class)) { ?>
}
?>
View::show_footer(); ?>