function user_get_profile($uid) { if (!($db = db::get())) { return false; } if (!is_numeric($uid)) { return false; } $peer_uid = session::get_value('UID'); if (!($table_prefix = get_table_prefix())) { return false; } if (!($forum_fid = get_forum_fid())) { return false; } $user_groups_array = array(); $user_prefs = user_get_prefs($uid); $session_gc_maxlifetime = ini_get('session.gc_maxlifetime'); $session_cutoff_datetime = date(MYSQL_DATETIME, time() - $session_gc_maxlifetime); $sql = "SELECT USER.UID, USER.LOGON, USER.NICKNAME, USER_PEER.PEER_NICKNAME, "; $sql .= "UNIX_TIMESTAMP(USER_FORUM.LAST_VISIT) AS LAST_VISIT, "; $sql .= "UNIX_TIMESTAMP(USER.REGISTERED) AS REGISTERED, "; $sql .= "UNIX_TIMESTAMP(USER_TRACK.USER_TIME_BEST) AS USER_TIME_BEST, "; $sql .= "UNIX_TIMESTAMP(USER_TRACK.USER_TIME_TOTAL) AS USER_TIME_TOTAL, "; $sql .= "USER_PEER.RELATIONSHIP, SESSIONS.ID FROM USER USER "; $sql .= "LEFT JOIN USER_PREFS USER_PREFS_GLOBAL ON (USER_PREFS_GLOBAL.UID = USER.UID) "; $sql .= "LEFT JOIN `{$table_prefix}USER_PREFS` USER_PREFS_FORUM "; $sql .= "ON (USER_PREFS_FORUM.UID = USER.UID) "; $sql .= "LEFT JOIN `{$table_prefix}USER_PEER` USER_PEER "; $sql .= "ON (USER_PEER.PEER_UID = USER.UID AND USER_PEER.UID = '{$peer_uid}') "; $sql .= "LEFT JOIN USER_FORUM USER_FORUM ON (USER_FORUM.UID = USER.UID "; $sql .= "AND USER_FORUM.FID = '{$forum_fid}') "; $sql .= "LEFT JOIN `{$table_prefix}USER_TRACK` USER_TRACK "; $sql .= "ON (USER_TRACK.UID = USER.UID) "; $sql .= "LEFT JOIN SESSIONS ON (SESSIONS.UID = USER.UID "; $sql .= "AND SESSIONS.TIME >= CAST('{$session_cutoff_datetime}' AS DATETIME)) "; $sql .= "WHERE USER.UID = '{$uid}' "; $sql .= "GROUP BY USER.UID"; if (!($result = $db->query($sql))) { return false; } if ($result->num_rows == 0) { return false; } $user_profile = $result->fetch_assoc(); if (isset($user_prefs['ANON_LOGON']) && $user_prefs['ANON_LOGON'] > USER_ANON_DISABLED) { $anon_logon = $user_prefs['ANON_LOGON']; } else { $anon_logon = USER_ANON_DISABLED; } if ($anon_logon == USER_ANON_DISABLED && isset($user_profile['LAST_VISIT']) && $user_profile['LAST_VISIT'] > 0) { $user_profile['LAST_LOGON'] = format_time($user_profile['LAST_VISIT']); } else { $user_profile['LAST_LOGON'] = gettext("Unknown"); } if (isset($user_profile['REGISTERED']) && $user_profile['REGISTERED'] > 0) { $user_profile['REGISTERED'] = format_date($user_profile['REGISTERED']); } else { $user_profile['REGISTERED'] = gettext("Unknown"); } if (isset($user_profile['USER_TIME_BEST']) && $user_profile['USER_TIME_BEST'] > 0) { $user_profile['USER_TIME_BEST'] = format_time_display($user_profile['USER_TIME_BEST']); } else { $user_profile['USER_TIME_BEST'] = gettext("Unknown"); } if (isset($user_profile['USER_TIME_TOTAL']) && $user_profile['USER_TIME_TOTAL'] > 0) { $user_profile['USER_TIME_TOTAL'] = format_time_display($user_profile['USER_TIME_TOTAL']); } else { $user_profile['USER_TIME_TOTAL'] = gettext("Unknown"); } if (isset($user_prefs['DOB_DISPLAY']) && !empty($user_prefs['DOB']) && $user_prefs['DOB'] != "0000-00-00") { if ($user_prefs['DOB_DISPLAY'] == USER_DOB_DISPLAY_BOTH) { $user_profile['DOB'] = format_birthday($user_prefs['DOB']); $user_profile['AGE'] = format_age($user_prefs['DOB']); } else { if ($user_prefs['DOB_DISPLAY'] == USER_DOB_DISPLAY_DATE) { $user_profile['DOB'] = format_birthday($user_prefs['DOB']); } else { if ($user_prefs['DOB_DISPLAY'] == USER_DOB_DISPLAY_AGE) { $user_profile['AGE'] = format_age($user_prefs['DOB']); } } } } if (isset($user_prefs['PIC_URL']) && strlen($user_prefs['PIC_URL']) > 0) { $user_profile['PIC_URL'] = $user_prefs['PIC_URL']; } if (isset($user_prefs['PIC_AID']) && is_md5($user_prefs['PIC_AID'])) { $user_profile['PIC_AID'] = $user_prefs['PIC_AID']; } if (isset($user_prefs['AVATAR_URL']) && strlen($user_prefs['AVATAR_URL']) > 0) { $user_profile['AVATAR_URL'] = $user_prefs['AVATAR_URL']; } if (isset($user_prefs['AVATAR_AID']) && is_md5($user_prefs['AVATAR_AID'])) { $user_profile['AVATAR_AID'] = $user_prefs['AVATAR_AID']; } if (isset($user_prefs['HOMEPAGE_URL']) && strlen($user_prefs['HOMEPAGE_URL']) > 0) { $user_profile['HOMEPAGE_URL'] = $user_prefs['HOMEPAGE_URL']; } if (!isset($user_profile['RELATIONSHIP'])) { $user_profile['RELATIONSHIP'] = 0; } if (isset($user_profile['PEER_NICKNAME'])) { if (!is_null($user_profile['PEER_NICKNAME']) && strlen($user_profile['PEER_NICKNAME']) > 0) { $user_profile['NICKNAME'] = $user_profile['PEER_NICKNAME']; } } if ($anon_logon == USER_ANON_DISABLED) { if (isset($user_profile['ID'])) { $user_profile['STATUS'] = gettext("Online"); } else { $user_profile['STATUS'] = gettext("Inactive / Offline"); } } else { $user_profile['STATUS'] = gettext("Unknown"); } if ($user_post_count = user_get_post_count($uid)) { $user_profile['POST_COUNT'] = $user_post_count; } else { $user_profile['POST_COUNT'] = 0; } if ($user_local_time = user_format_local_time($user_prefs)) { $user_profile['LOCAL_TIME'] = $user_local_time; } if (user_is_banned($uid)) { $user_profile['USER_GROUPS'] = gettext("Banned"); } else { perm_user_get_group_names($uid, $user_groups_array); if (sizeof($user_groups_array) > 0) { $user_profile['USER_GROUPS'] = implode(', ', $user_groups_array); } else { $user_profile['USER_GROUPS'] = gettext("Registered"); } } return $user_profile; }
function user_get_profile($uid) { if (!($db = db::get())) { return false; } if (!is_numeric($uid)) { return false; } if (!isset($_SESSION['UID']) || !is_numeric($_SESSION['UID'])) { return false; } if (!($table_prefix = get_table_prefix())) { return false; } if (!($forum_fid = get_forum_fid())) { return false; } $user_prefs = user_get_prefs($uid); $session_gc_maxlifetime = ini_get('session.gc_maxlifetime'); $session_cutoff_datetime = date(MYSQL_DATETIME, time() - $session_gc_maxlifetime); $sql = "SELECT USER.UID, USER.LOGON, USER.NICKNAME, USER_PEER.PEER_NICKNAME, USER_PEER.RELATIONSHIP, "; $sql .= "SESSIONS.ID, UNIX_TIMESTAMP(USER_FORUM.LAST_VISIT) AS LAST_VISIT, UNIX_TIMESTAMP(USER.REGISTERED) AS REGISTERED, "; $sql .= "COALESCE(USER_POST_RATING.RATING, 0) AS POST_RATING, COUNT(POST_USER_RATING.RATING) AS POST_VOTE_TOTAL, "; $sql .= "COALESCE(SUM(IF(POST_USER_RATING.RATING > 0, 1, 0)), 0) AS POST_VOTE_UP, "; $sql .= "COALESCE(SUM(IF(POST_USER_RATING.RATING < 0, 1, 0)), 0) AS POST_VOTE_DOWN FROM USER USER "; $sql .= "LEFT JOIN USER_PREFS USER_PREFS_GLOBAL ON (USER_PREFS_GLOBAL.UID = USER.UID) "; $sql .= "LEFT JOIN `{$table_prefix}USER_PREFS` USER_PREFS_FORUM ON (USER_PREFS_FORUM.UID = USER.UID) "; $sql .= "LEFT JOIN `{$table_prefix}USER_PEER` USER_PEER ON (USER_PEER.PEER_UID = USER.UID AND USER_PEER.UID = '{$_SESSION['UID']}') "; $sql .= "LEFT JOIN USER_FORUM USER_FORUM ON (USER_FORUM.UID = USER.UID AND USER_FORUM.FID = '{$forum_fid}') "; $sql .= "LEFT JOIN SESSIONS ON (SESSIONS.UID = USER.UID AND SESSIONS.TIME >= CAST('{$session_cutoff_datetime}' AS DATETIME)) "; $sql .= "LEFT JOIN `{$table_prefix}POST_RATING` POST_USER_RATING ON (POST_USER_RATING.UID = USER.UID AND POST_USER_RATING.RATING IN (-1, 1)) "; $sql .= "LEFT JOIN (SELECT POST.FROM_UID AS UID, SUM(POST_RATING.RATING) AS RATING FROM `{$table_prefix}POST` POST "; $sql .= "INNER JOIN `{$table_prefix}POST_RATING` POST_RATING ON (POST_RATING.TID = POST.TID AND POST_RATING.PID = POST.PID) "; $sql .= "WHERE POST.FROM_UID = '{$uid}' GROUP BY POST.FROM_UID) AS USER_POST_RATING ON (USER_POST_RATING.UID = USER.UID) "; $sql .= "WHERE USER.UID = '{$uid}' GROUP BY USER.UID"; if (!($result = $db->query($sql))) { return false; } if ($result->num_rows == 0) { return false; } $user_profile = $result->fetch_assoc(); if (isset($user_prefs['ANON_LOGON']) && $user_prefs['ANON_LOGON'] > USER_ANON_DISABLED) { $anon_logon = $user_prefs['ANON_LOGON']; } else { $anon_logon = USER_ANON_DISABLED; } if ($anon_logon == USER_ANON_DISABLED && isset($user_profile['LAST_VISIT']) && $user_profile['LAST_VISIT'] > 0) { $user_profile['LAST_LOGON'] = format_date_time($user_profile['LAST_VISIT']); } else { $user_profile['LAST_LOGON'] = gettext("Unknown"); } if (isset($user_profile['REGISTERED']) && $user_profile['REGISTERED'] > 0) { $user_profile['REGISTERED'] = format_date_time($user_profile['REGISTERED']); } else { $user_profile['REGISTERED'] = gettext("Unknown"); } if (isset($user_prefs['DOB_DISPLAY']) && !empty($user_prefs['DOB']) && $user_prefs['DOB'] != "0000-00-00") { if ($user_prefs['DOB_DISPLAY'] == USER_DOB_DISPLAY_BOTH) { $user_profile['DOB'] = format_birthday($user_prefs['DOB']); $user_profile['AGE'] = format_age($user_prefs['DOB']); } else { if ($user_prefs['DOB_DISPLAY'] == USER_DOB_DISPLAY_DATE) { $user_profile['DOB'] = format_birthday($user_prefs['DOB']); } else { if ($user_prefs['DOB_DISPLAY'] == USER_DOB_DISPLAY_AGE) { $user_profile['AGE'] = format_age($user_prefs['DOB']); } } } } if (isset($user_prefs['PIC_URL']) && filter_var($user_prefs['PIC_URL'], FILTER_VALIDATE_URL)) { $user_profile['PIC_URL'] = $user_prefs['PIC_URL']; } if (isset($user_prefs['PIC_AID']) && is_numeric($user_prefs['PIC_AID'])) { $user_profile['PIC_AID'] = $user_prefs['PIC_AID']; } if (isset($user_prefs['AVATAR_URL']) && filter_var($user_prefs['AVATAR_URL'], FILTER_VALIDATE_URL)) { $user_profile['AVATAR_URL'] = $user_prefs['AVATAR_URL']; } if (isset($user_prefs['AVATAR_AID']) && is_numeric($user_prefs['AVATAR_AID'])) { $user_profile['AVATAR_AID'] = $user_prefs['AVATAR_AID']; } if (isset($user_prefs['HOMEPAGE_URL']) && filter_var($user_prefs['HOMEPAGE_URL'], FILTER_VALIDATE_URL)) { $user_profile['HOMEPAGE_URL'] = $user_prefs['HOMEPAGE_URL']; } if (!isset($user_profile['RELATIONSHIP'])) { $user_profile['RELATIONSHIP'] = 0; } if (isset($user_profile['PEER_NICKNAME'])) { if (!is_null($user_profile['PEER_NICKNAME']) && strlen($user_profile['PEER_NICKNAME']) > 0) { $user_profile['NICKNAME'] = $user_profile['PEER_NICKNAME']; } } if ($anon_logon == USER_ANON_DISABLED) { if (isset($user_profile['ID'])) { $user_profile['STATUS'] = gettext("Online"); } else { $user_profile['STATUS'] = gettext("Inactive / Offline"); } } else { $user_profile['STATUS'] = gettext("Unknown"); } if (($user_post_count = user_get_post_count($uid)) !== false) { $user_profile['POST_COUNT'] = $user_post_count; } else { $user_profile['POST_COUNT'] = 0; } if (($user_local_time = user_format_local_time($user_prefs)) !== false) { $user_profile['LOCAL_TIME'] = $user_local_time; } if (user_is_banned($uid)) { $user_profile['GROUPS'] = gettext("Banned"); } else { if ($user_groups_array = perm_user_get_group_names($uid)) { $user_profile['GROUPS'] = implode(', ', $user_groups_array); } else { $user_profile['GROUPS'] = gettext("Registered"); } } return $user_profile; }