check_auth('u_member_view');
if ( (isset($_GET[URI_NAME])) && (strval($_GET[URI_NAME] != '')) )
{
$sort_order = array(
0 => array('raid_name', 'raid_name desc'),
1 => array('raid_count desc', 'raid_count')
);
$current_order = switch_order($sort_order);
$sql = 'SELECT member_id, member_name, member_earned, member_spent, member_adjustment, (member_earned-member_spent+member_adjustment) AS member_current,
member_firstraid, member_lastraid
FROM ' . MEMBERS_TABLE . "
WHERE member_name='".$_GET[URI_NAME]."'";
if ( !($member_result = $db->query($sql)) )
{
message_die('Could not obtain member information', '', __FILE__, __LINE__, $sql);
}
// Make sure they provided a valid member name
if ( !$member = $db->fetch_record($member_result) )
{
message_die($user->lang['error_invalid_name_provided']);
}
// Find the percent of raids they've attended in the last 30, 60 and 90 days
$percent_of_raids = array(
'30' => raid_count(mktime(0, 0, 0, date('m'), date('d')-30, date('Y')), time(), $member['member_name']),
'60' => raid_count(mktime(0, 0, 0, date('m'), date('d')-60, date('Y')), time(), $member['member_name']),
'90' => raid_count(mktime(0, 0, 0, date('m'), date('d')-90, date('Y')), time(), $member['member_name']),
'lifetime' => raid_count($member['member_firstraid'], $member['member_lastraid'], $member['member_name'])
);
//
// Raid Attendance
//
$rstart = ( isset($_GET['rstart']) ) ? $_GET['rstart'] : 0;
// Find $current_earned based on the page. This prevents us having to pass the
// current earned as a GET variable which could result in user error
if ( (!isset($_GET['rstart'])) || ($_GET['rstart'] == '0') )
{
$current_earned = $member['member_earned'];
}
else
{
$current_earned = $member['member_earned'];
$sql = 'SELECT raid_value
FROM ' . RAIDS_TABLE . ' r, ' . RAID_ATTENDEES_TABLE . " ra
WHERE (ra.raid_id = r.raid_id)
AND (ra.member_name='" . $member['member_name']."')
ORDER BY r.raid_date DESC
LIMIT " . $rstart;
if ( !($earned_result = $db->query($sql)) )
{
message_die('Could not obtain raid information', '', __FILE__, __LINE__, $sql);
}
while ( $ce_row = $db->fetch_record($earned_result) )
{
$current_earned -= $ce_row['raid_value'];
}
$db->free_result($earned_result);
}
$sql = 'SELECT r.raid_id, r.raid_name, r.raid_date, r.raid_note, r.raid_value
FROM ' . RAIDS_TABLE . ' r, ' . RAID_ATTENDEES_TABLE . " ra
WHERE (ra.raid_id = r.raid_id)
AND (ra.member_name='" . $member['member_name'] . "')
ORDER BY r.raid_date DESC
LIMIT " . $rstart . ',' . $user->data['user_rlimit'];
if ( !($raids_result = $db->query($sql)) )
{
message_die('Could not obtain raid information', '', __FILE__, __LINE__, $sql);
}
while ( $raid = $db->fetch_record($raids_result) )
{
$tpl->assign_block_vars('raids_row', array(
'ROW_CLASS' => $eqdkp->switch_row_class(),
'DATE' => ( !empty($raid['raid_date']) ) ? date($user->style['date_notime_short'], $raid['raid_date']) : ' ',
'U_VIEW_RAID' => 'viewraid.php'.$SID.'&' . URI_RAID . '='.$raid['raid_id'],
'NAME' => ( !empty($raid['raid_name']) ) ? stripslashes($raid['raid_name']) : '<Not Found>',
'NOTE' => ( !empty($raid['raid_note']) ) ? stripslashes($raid['raid_note']) : ' ',
'EARNED' => $raid['raid_value'],
'CURRENT_EARNED' => sprintf("%.2f", $current_earned))
);
$current_earned -= $raid['raid_value'];
}
$db->free_result($raids_result);
$sql = 'SELECT count(*)
FROM ' . RAIDS_TABLE . ' r, ' . RAID_ATTENDEES_TABLE . " ra
WHERE (ra.raid_id = r.raid_id)
AND (ra.member_name='" . addslashes($member['member_name']) . "')";
$total_attended_raids = $db->query_first($sql);
//
// Item Purchase History
//
$istart = ( isset($_GET['istart']) ) ? $_GET['istart'] : 0;
if ( (!isset($_GET['istart'])) || ($_GET['istart'] == '0') )
{
$current_spent = $member['member_spent'];
}
else
{
$current_spent = $member['member_spent'];
$sql = 'SELECT item_value
FROM ' . ITEMS_TABLE . "
WHERE (item_buyer='" . $member['member_name'] . "')
ORDER BY item_date DESC
LIMIT " . $istart;
if ( !($spent_result = $db->query($sql)) )
{
message_die('Could not obtain item information', '', __FILE__, __LINE__, $sql);
}
while ( $cs_row = $db->fetch_record($spent_result) )
{
$current_spent -= $cs_row['item_value'];
}
$db->free_result($spent_result);
}
$sql = 'SELECT i.item_id, i.item_name, i.item_value, i.item_date, i.raid_id, r.raid_name
FROM ( ' . ITEMS_TABLE . ' i
LEFT JOIN ' . RAIDS_TABLE . " r
ON r.raid_id = i.raid_id )
WHERE (i.item_buyer='" . $member['member_name'] . "')
ORDER BY i.item_date DESC
LIMIT " . $istart . ',' . $user->data['user_ilimit'];
if ( !($items_result = $db->query($sql)) )
{
message_die('Could not obtain item information', 'Database error', __FILE__, __LINE__, $sql);
}
while ( $item = $db->fetch_record($items_result) )
{
$tpl->assign_block_vars('items_row', array(
'ROW_CLASS' => $eqdkp->switch_row_class(),
'DATE' => ( !empty($item['item_date']) ) ? date($user->style['date_notime_short'], $item['item_date']) : ' ',
'U_VIEW_ITEM' => 'viewitem.php'.$SID.'&' . URI_ITEM . '=' . $item['item_id'],
'U_VIEW_RAID' => 'viewraid.php'.$SID.'&' . URI_RAID . '=' . $item['raid_id'],
'NAME' => stripslashes($item['item_name']),
'RAID' => ( !empty($item['raid_name']) ) ? stripslashes($item['raid_name']) : '<Not Found>',
'SPENT' => $item['item_value'],
'CURRENT_SPENT' => sprintf("%.2f", $current_spent))
);
$current_spent -= $item['item_value'];
}
$db->free_result($items_result);
$total_purchased_items = $db->query_first('SELECT count(*) FROM ' . ITEMS_TABLE . " WHERE item_buyer='" . $member['member_name'] . "' ORDER BY item_date DESC");
//
// Individual Adjustment History
//
$sql = 'SELECT adjustment_value, adjustment_date, adjustment_reason
FROM ' . ADJUSTMENTS_TABLE . "
WHERE member_name='" . $member['member_name'] . "'
ORDER BY adjustment_date DESC";
if ( !($adjustments_result = $db->query($sql)) )
{
message_die('Could not obtain adjustment information', '', __FILE__, __LINE__, $sql);
}
while ( $adjustment = $db->fetch_record($adjustments_result) )
{
$tpl->assign_block_vars('adjustments_row', array(
'ROW_CLASS' => $eqdkp->switch_row_class(),
'DATE' => ( !empty($adjustment['adjustment_date']) ) ? date($user->style['date_notime_short'], $adjustment['adjustment_date']) : ' ',
'REASON' => ( !empty($adjustment['adjustment_reason']) ) ? stripslashes($adjustment['adjustment_reason']) : ' ',
'C_INDIVIDUAL_ADJUSTMENT' => color_item($adjustment['adjustment_value']),
'INDIVIDUAL_ADJUSTMENT' => $adjustment['adjustment_value'])
);
}
//
// Attendance by Event
//
$raid_counts = array();
// Find the count for each for for this member
$sql = 'SELECT e.event_id, r.raid_name, count(ra.raid_id) AS raid_count
FROM ' . EVENTS_TABLE . ' e, ' . RAID_ATTENDEES_TABLE . ' ra, ' . RAIDS_TABLE . " r
WHERE (e.event_name = r.raid_name)
AND (r.raid_id = ra.raid_id)
AND (ra.member_name = '" . $member['member_name'] . "')
AND (r.raid_date >= " . $member['member_firstraid'] . ")
GROUP BY ra.member_name, r.raid_name";
$result = $db->query($sql);
while ( $row = $db->fetch_record($result) )
{
// The count now becomes the percent
$raid_counts[ $row['raid_name'] ] = $row['raid_count'];
$event_ids[ $row['raid_name'] ] = $row['event_id'];
}
$db->free_result($result);
// Find the count for reach raid
$sql = 'SELECT raid_name, count(raid_id) AS raid_count
FROM ' . RAIDS_TABLE . '
WHERE raid_date >= ' . $member['member_firstraid'] . '
GROUP BY raid_name';
$result = $db->query($sql);
while ( $row = $db->fetch_record($result) )
{
if ( isset($raid_counts[$row['raid_name']]) )
{
$percent = round(($raid_counts[ $row['raid_name'] ] / $row['raid_count']) * 100);
$raid_counts[$row['raid_name']] = array('percent' => $percent, 'count' => $raid_counts[ $row['raid_name'] ]);
unset($percent);
}
}
$db->free_result($result);
// Since we can't sort in SQL for this case, we have to sort
// by the array
switch ( $current_order['sql'] )
{
// Sort by key
case 'raid_name':
ksort($raid_counts);
break;
case 'raid_name desc':
krsort($raid_counts);
break;
// Sort by value (keeping relational keys in-tact)
case 'raid_count':
asort($raid_counts);
break;
case 'raid_count desc':
arsort($raid_counts);
break;
}
reset($raid_counts);
foreach ( $raid_counts as $event => $data )
{
$tpl->assign_block_vars('event_row', array(
'EVENT' => stripslashes($event),
'U_VIEW_EVENT' => 'viewevent.php' . $SID . '&' . URI_EVENT . '=' . $event_ids[$event],
'BAR' => create_bar($data['percent'] . '%', $data['count'] . ' (' . $data['percent'] . '%)'))
);
}
unset($raid_counts, $event_ids);
$tpl->assign_vars(array(
'GUILDTAG' => $eqdkp->config['guildtag'],
'NAME' => $member['member_name'],
'L_EARNED' => $user->lang['earned'],
'L_SPENT' => $user->lang['spent'],
'L_ADJUSTMENT' => $user->lang['adjustment'],
'L_CURRENT' => $user->lang['current'],
'L_RAIDS_30_DAYS' => sprintf($user->lang['raids_x_days'], 30),
'L_RAIDS_60_DAYS' => sprintf($user->lang['raids_x_days'], 60),
'L_RAIDS_90_DAYS' => sprintf($user->lang['raids_x_days'], 90),
'L_RAIDS_LIFETIME' => sprintf($user->lang['raids_lifetime'],
date($user->style['date_notime_short'], $member['member_firstraid']),
date($user->style['date_notime_short'], $member['member_lastraid'])),
'L_RAID_ATTENDANCE_HISTORY' => $user->lang['raid_attendance_history'],
'L_DATE' => $user->lang['date'],
'L_NAME' => $user->lang['name'],
'L_NOTE' => $user->lang['note'],
'L_EARNED' => $user->lang['earned'],
'L_CURRENT' => $user->lang['current'],
'L_ITEM_PURCHASE_HISTORY' => $user->lang['item_purchase_history'],
'L_RAID' => $user->lang['raid'],
'L_INDIVIDUAL_ADJUSTMENT_HISTORY' => $user->lang['individual_adjustment_history'],
'L_REASON' => $user->lang['reason'],
'L_ADJUSTMENT' => $user->lang['adjustment'],
'L_ATTENDANCE_BY_EVENT' => $user->lang['attendance_by_event'],
'L_EVENT' => $user->lang['event'],
'L_PERCENT' => $user->lang['percent'],
'O_EVENT' => $current_order['uri'][0],
'O_PERCENT' => $current_order['uri'][1],
'EARNED' => $member['member_earned'],
'SPENT' => $member['member_spent'],
'ADJUSTMENT' => $member['member_adjustment'],
'CURRENT' => $member['member_current'],
'RAIDS_30_DAYS' => sprintf($user->lang['of_raids'], $percent_of_raids['30']),
'RAIDS_60_DAYS' => sprintf($user->lang['of_raids'], $percent_of_raids['60']),
'RAIDS_90_DAYS' => sprintf($user->lang['of_raids'], $percent_of_raids['90']),
'RAIDS_LIFETIME' => sprintf($user->lang['of_raids'], $percent_of_raids['lifetime']),
'C_ADJUSTMENT' => color_item($member['member_adjustment']),
'C_CURRENT' => color_item($member['member_current']),
'C_RAIDS_30_DAYS' => color_item($percent_of_raids['30'], true),
'C_RAIDS_60_DAYS' => color_item($percent_of_raids['60'], true),
'C_RAIDS_90_DAYS' => color_item($percent_of_raids['90'], true),
'C_RAIDS_LIFETIME' => color_item($percent_of_raids['lifetime'], true),
'RAID_FOOTCOUNT' => sprintf($user->lang['viewmember_raid_footcount'], $total_attended_raids, $user->data['user_rlimit']),
'RAID_PAGINATION' => generate_pagination('viewmember.php'.$SID.'&name='.$member['member_name'].'&istart='.$istart, $total_attended_raids, $user->data['user_rlimit'], $rstart, 'rstart'),
'ITEM_FOOTCOUNT' => sprintf($user->lang['viewmember_item_footcount'], $total_purchased_items, $user->data['user_ilimit']),
'ITEM_PAGINATION' => generate_pagination('viewmember.php'.$SID.'&name='.$member['member_name'].'&rstart='.$rstart, $total_purchased_items, $user->data['user_ilimit'], $istart, 'istart'),
'ADJUSTMENT_FOOTCOUNT' => sprintf($user->lang['viewmember_adjustment_footcount'], $db->num_rows($adjustments_result)),
'U_VIEW_MEMBER' => 'viewmember.php' . $SID . '&' . URI_NAME . '=' . $member['member_name'] . '&')
);
$db->free_result($adjustments_result);
$pm->do_hooks('/viewmember.php');
$eqdkp->set_vars(array(
'page_title' => sprintf($user->lang['title_prefix'], $eqdkp->config['guildtag'], $eqdkp->config['dkp_name']).': '.sprintf($user->lang['viewmember_title'], $member['member_name']),
'template_file' => 'viewmember.html',
'display' => true)
);
}
else
{
message_die($user->lang['error_invalid_name_provided']);
}
// ---------------------------------------------------------
// Page-specific functions
// ---------------------------------------------------------
function raid_count($start_date, $end_date, $member_name)
{
global $db;
$raid_count = $db->query_first('SELECT count(*) FROM ' . RAIDS_TABLE . ' WHERE (raid_date BETWEEN ' . $start_date . ' AND ' . $end_date . ')');
$sql = 'SELECT count(*)
FROM ' . RAIDS_TABLE . ' r, ' . RAID_ATTENDEES_TABLE . " ra
WHERE (ra.raid_id = r.raid_id)
AND (ra.member_name='" . $member_name . "')
AND (r.raid_date BETWEEN " . $start_date . ' AND ' . $end_date . ')';
$individual_raid_count = $db->query_first($sql);
$percent_of_raids = ( $raid_count > 0 ) ? round(($individual_raid_count / $raid_count) * 100) : 0;
$raid_count_stats = array(
'percent' => $percent_of_raids,
'total_count' => $raid_count,
'indiv_count' => $individual_raid_count);
return $raid_count_stats['percent']; // Only thing needed ATM
}
?>