. require_once("../inc/credit.inc"); require_once("../inc/email.inc"); require_once("../inc/util.inc"); require_once("../inc/team.inc"); require_once("../inc/friend.inc"); require_once("../inc/forum_db.inc"); require_once("../inc/notify.inc"); require_once("../inc/ldap.inc"); function get_other_projects($user) { $cpid = md5($user->cross_project_id . $user->email_addr); $url = "http://boinc.netsoft-online.com/get_user.php?cpid=".$cpid; // Check the cache for that URL // $cacheddata = get_cached_data(REMOTE_PROJECTS_TTL, $url); if ($cacheddata){ $remote = unserialize($cacheddata); } else { // Fetch the XML, then auto-cast the project list to an array of stdClass projects // $timeout = 3; $old_timeout = ini_set('default_socket_timeout', $timeout); $remote = @json_decode(json_encode((array)simplexml_load_file($url)))->project; ini_set('default_socket_timeout', $old_timeout); if (!$remote) { return $user; } else { // Cache the results set_cached_data(REMOTE_PROJECTS_TTL, serialize($remote), $url); } } $user->projects = $remote; return $user; } function show_project($project) { if ($project->url == "http://www.worldcommunitygrid.org/") { $x = $project->name; } else { $x = "url"."show_user.php?userid=$project->id\">$project->name"; } echo "
".tra("Click for user page")."
", tra("Total credit"), tra("Average credit"), tra("Since") )); foreach($user->projects as $project) { show_project($project); } end_table(); } function total_posts($user) { return BoincPost::count("user=$user->id"); } function show_credit($user) { row2(tra("Total credit"), format_credit_large($user->total_credit)); row2(tra("Recent average credit"), format_credit($user->expavg_credit)); if (function_exists("project_user_credit")) { project_user_credit($user); } } require_once("../inc/stats_sites.inc"); // show dynamic user info (private) // function show_user_stats_private($user) { global $cpid_stats_sites; row1(tra("Computing and credit")); show_credit($user); $config = get_config(); row2(tra("Computers on this account"), "".tra("View").""); row2(tra("Tasks"), "id\">".tra("View").""); $cpid = md5($user->cross_project_id . $user->email_addr); $x = ""; shuffle($cpid_stats_sites); foreach ($cpid_stats_sites as $site) { $name = $site[0]; $y = sprintf($site[1], $cpid); $x .= "$name".tra("Used in community functions")."
", $user->id); if (!no_computing()) { row2( tra("Account keys"), "".tra("View")."" ); } row1("".tra("Preferences")); if (!no_computing()) { row2( tra("When and how BOINC uses your computer"), "".tra("Computing preferences")."" ); } row2(tra("Message boards and private messages"), "".tra("Community preferences")."" ); if (!no_computing()) { row2(tra("Preferences for this project"), "".tra("%1 preferences", PROJECT)."" ); } } function friend_links($user) { if (is_banished($user)) { return ""; } $x = "";
if ($user->has_profile) {
$profile = BoincProfile::lookup_fields("has_picture", "userid=$user->id");
if ($profile && $profile->has_picture) {
$img_url = profile_thumb_url($user->id);
} else {
$img_url = URL_BASE."img/head_20.png";
}
$title = tra("View the profile of %1", $user->name);
$alt = tra("Profile");
$x .= ' '; } $x .= " id."\">".$user->name.""; if ($user->donated == 1) { require_once("../project/donations.inc"); $x .= DONATION_LINK; } $x .= " |
".tra("(foundership change request pending)")."
"; } row2(tra("Member of team"), $x); } else { row2(tra("Team"), tra("None")." · ".tra("find a team").""); } $teams_founded = BoincTeam::enum("userid=$user->id"); foreach ($teams_founded as $team) { if ($team->id != $user->teamid) { $x = "id\">$team->name"; $x .= "| id."\">".tra("Administer").""; if ($team->ping_user > 0) { $x .= "".tra("(foundership change request pending)")."";
}
row2(tra("Founder but not member of"), $x);
}
}
}
$friends = BoincFriend::enum("user_src=$user->id and reciprocated=1");
$x = "".tra("Find friends")."
\n";
$n = count($friends);
if ($n) {
foreach($friends as $friend) {
$fuser = BoincUser::lookup_id($friend->user_dest);
if (!$fuser) continue;
$x .= friend_links($fuser);
}
row2(tra("Friends")." ($n)", $x);
} else {
row2(tra("Friends"), $x);
}
}
// show summary of dynamic and static info (public)
//
function show_user_summary_public($user) {
global $g_logged_in_user;
row2(tra("User ID"), $user->id);
row2(tra("%1 member since", PROJECT), date_str($user->create_time));
row2(tra("Country"), $user->country);
// don't show URL if user has no recent credit (spam suppression)
//
if (strlen($user->url)) {
if (no_computing() || $user->expavg_credit > 1) {
row2(tra("URL"), "url\">http://$user->url");
}
}
if (!no_computing()) {
show_credit($user);
if ($user->show_hosts) {
row2(tra("Computers"), "id\">".tra("View")."");
} else {
row2(tra("Computers"), tra("hidden"));
}
}
if ($user->donated == 1) {
if (file_exists("../project/donations.inc")) {
require_once("../project/donations.inc");
row2(tra("Donor"), DONATION_LINK);
}
}
}
// Returns a cacheable community links data object
// @param user The user to produce a community links object for
function get_community_links_object($user){
$cache_object = new StdClass;
$cache_object->post_count = total_posts($user);
$cache_object->user = $user;
$cache_object->team = BoincTeam::lookup_id($user->teamid);
$cache_object->friends = array();
$friends = BoincFriend::enum("user_src=$user->id and reciprocated=1");
foreach($friends as $friend) {
$fuser = BoincUser::lookup_id($friend->user_dest);
if (!$fuser) continue;
$cache_object->friends[] = $fuser;
}
return $cache_object;
}
function community_links($clo, $logged_in_user){
$user = $clo->user;
$team = $clo->team;
$friends = $clo->friends;
$tot = $clo->post_count;
if (!DISABLE_TEAMS) {
if ($user->teamid && $team) {
row2(tra("Team"), "id\">$team->name");
} else {
row2(tra("Team"), tra("None"));
}
}
if (!DISABLE_FORUMS) {
if ($tot) {
row2(tra("Message boards"), "id\">".tra("%1 posts", $tot)."");
}
}
if ($logged_in_user && $logged_in_user->id != $user->id) {
row2(tra("Contact"), "id."\">".tra("Send private message")."");
$friend = BoincFriend::lookup($logged_in_user->id, $user->id);
if ($friend && $friend->reciprocated) {
row2(tra("This person is a friend"),
"id\">".tra("Cancel friendship").""
);
} else if ($friend) {
row2(tra("Friends"), "id\">".tra("Request pending")."");
} else {
row2(tra("Friends"), "id\">".tra("Add as friend")."");
}
}
if ($friends) {
$x = "";
foreach($friends as $friend) {
$x .= friend_links($friend);
}
row2(tra("Friends")." (".sizeof($friends).")", $x);
}
}
function show_profile_link($user) {
if ($user->has_profile) {
row2(tra("Profile"), "id\">".tra("View")."");
}
}
function show_account_private($user) {
start_table_noborder();
echo "