mirror of https://github.com/BOINC/boinc.git
Drupal: Modified how team users' data are queried.
Replaced user_load() with separate queries into BOINC and drupal databases to build team member information.
This commit is contained in:
parent
5f768bfcb5
commit
d10f778957
|
@ -1135,40 +1135,55 @@ function boinccore_team_email_list() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$members = array();
|
// Query BOINC database user table
|
||||||
db_set_active('boinc');
|
db_set_active('boinc');
|
||||||
$result = db_query("
|
$result = db_query("
|
||||||
SELECT
|
SELECT
|
||||||
u.name, u.email_addr
|
u.id, u.name, u.cross_project_id, u.create_time, u.email_addr, u.total_credit, u.expavg_credit, u.expavg_time
|
||||||
FROM {user} u
|
FROM {user} u
|
||||||
WHERE u.teamid = %d
|
WHERE u.teamid = %d ORDER BY u.email_addr ASC",
|
||||||
ORDER BY u.email_addr ASC",
|
|
||||||
$boincteam_id
|
$boincteam_id
|
||||||
);
|
);
|
||||||
db_set_active('default');
|
db_set_active('default');
|
||||||
|
|
||||||
|
// Extract information from BOINC database for team members.
|
||||||
|
$team_members = array();
|
||||||
while ($member = db_fetch_object($result)) {
|
while ($member = db_fetch_object($result)) {
|
||||||
$members[] = user_load(array('mail' => $member->email_addr));
|
$team_members[$member->id] = array(
|
||||||
|
'id' => $member->id,
|
||||||
|
'cpid' => md5($member->cross_project_id.$member->email_addr),
|
||||||
|
'create_time' => $member->create_time,
|
||||||
|
'name' => htmlspecialchars($member->name),
|
||||||
|
'country' => NULL,
|
||||||
|
'total_credit' => round($member->total_credit),
|
||||||
|
'expavg_credit' => round($member->expavg_credit),
|
||||||
|
'expavg_time' => round($member->expavg_time),
|
||||||
|
'url' => NULL,
|
||||||
|
'has_profile' => 0,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$xml = array('users' => array());
|
// Query Drupal database, multiple tables
|
||||||
foreach ($members as $member) {
|
$sql1 = "
|
||||||
$content_profile = content_profile_load('profile', $member->uid);
|
SELECT
|
||||||
$team_member = array(
|
bu.boinc_id, du.uid, du.name, n.nid, n.type, n.field_country_value, n.field_url_value
|
||||||
'id' => $member->boincuser_id,
|
FROM {drupal.boincuser} AS bu
|
||||||
'cpid' => $member->boincuser_cpid,
|
INNER JOIN {drupal.users} AS du ON bu.uid=du.uid
|
||||||
'create_time' => $member->created,
|
LEFT JOIN (
|
||||||
'name' => $member->boincuser_name,
|
SELECT node.nid, node.uid, node.type, p.field_country_value, p.field_url_value
|
||||||
'country' => $content_profile->field_country[0]['value'],
|
FROM {node}
|
||||||
'total_credit' => $member->boincuser_total_credit,
|
INNER JOIN {content_type_profile} AS p ON node.nid=p.nid
|
||||||
'expavg_credit' => $member->boincuser_expavg_credit,
|
WHERE node.type='profile' ) n ON du.uid=n.uid
|
||||||
'expavg_time' => $member->boincuser_expavg_time,
|
WHERE bu.boinc_id IN (%s)";
|
||||||
'url' => $content_profile->field_url[0]['value'],
|
$memberidlist = implode(',', array_keys($team_members));
|
||||||
'has_profile' => ($content_profile->status AND !$content_profile->moderate) ? 1 : 0,
|
$result = db_query( $sql1, $memberidlist );
|
||||||
);
|
while ($member = db_fetch_object($result)) {
|
||||||
$xml['users']['user'][] = $team_member;
|
$team_members[$member->boinc_id]['country'] = $member->field_country_value;
|
||||||
}
|
$team_members[$member->boinc_id]['url'] = $member->field_url_value;
|
||||||
|
$team_members[$member->boinc_id]['has_profile'] = isset($member->nid) ? 1: 0;
|
||||||
|
$xml['users']['user'][] = $team_members[$member->boinc_id];
|
||||||
}
|
}
|
||||||
|
} // end if credit_only
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$xml = array(
|
$xml = array(
|
||||||
|
@ -1177,7 +1192,7 @@ function boinccore_team_email_list() {
|
||||||
'error_msg' => 'Not found',
|
'error_msg' => 'Not found',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
} // end if boincteam_id
|
||||||
print xml_to_text(array_to_xml($xml), TRUE, TRUE);
|
print xml_to_text(array_to_xml($xml), TRUE, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue