function support_overview_page_user in Support Ticketing System 6
Same name and namespace in other branches
- 7 support_overview/support_overview.module \support_overview_page_user()
1 call to support_overview_page_user()
- support_overview_page_users in support_overview/
support_overview.module
1 string reference to 'support_overview_page_user'
- support_overview_menu in support_overview/
support_overview.module - Implementation of hook_menu().
File
- support_overview/
support_overview.module, line 413 - support_overview.module
Code
function support_overview_page_user($account, $all = FALSE, $page = TRUE) {
global $user;
if ($page) {
drupal_add_css(drupal_get_path('module', 'support_overview') . '/support-overview.css');
$output = '<div class="support-overview">';
if ($user->uid == $account->uid) {
drupal_set_title(t('My ticket overview'));
}
else {
drupal_set_title(t("@username's ticket overview", array(
'@username' => $account->name,
)));
}
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), NULL);
$breadcrumb[] = l($account->name, "user/{$account->uid}");
drupal_set_breadcrumb($breadcrumb);
}
$enabled_clients = variable_get('support_overview_clients', array());
$all_clients = _support_available_clients();
if ($all || !is_array($enabled_clients) || empty($enabled_clients)) {
$enabled_clients = array();
foreach ($all_clients as $clid => $client) {
$enabled_clients[] = $clid;
}
$all = TRUE;
}
$header = array(
t('Client'),
t('Tickets'),
);
$rows = array();
$current_row = 0;
foreach ($enabled_clients as $clid) {
if (isset($all_clients[$clid])) {
$total_sql = 'SELECT COUNT(t.nid) FROM {support_ticket} t WHERE t.client = %d AND t.assigned = %d';
$total_args = array(
$clid,
$account->uid,
);
$enabled_states = variable_get('support_overview_states', array());
if (!isset($enabled_states[0])) {
$state_append = ' AND state IN(';
$state_append .= implode(', ', $enabled_states);
$state_append .= ')';
$total_sql .= $state_append;
}
$count = db_result(db_query($total_sql, $total_args));
if ($count) {
$client = support_client_load($clid);
$rows[$current_row][] = '<a href="' . url("support/{$client->path}") . '" class="support-overview-title">' . check_plain($client->name) . '</a>';
$latest_sql = $oldest_sql = 'SELECT GREATEST(n.changed, l.last_comment_timestamp) AS last_update, n.nid FROM {node} n LEFT JOIN {support_ticket} t ON n.nid = t.nid INNER JOIN {node_comment_statistics} l ON n.nid = l.nid WHERE t.client = %d AND assigned = %d';
if (!empty($state_append)) {
$latest_sql .= $state_append;
$oldest_sql .= $state_append;
}
$args = array(
$clid,
$account->uid,
);
$latest_sql .= ' ORDER BY last_update DESC';
$latest = db_fetch_object(db_query_range($latest_sql, $args, 0, 1));
$latest_alert = _support_overview_alert($latest->last_update);
$node = node_load(array(
'nid' => $latest->nid,
));
$latest_update = t('most recent: !time ago, "!title"', array(
'!time' => format_interval(time() - $latest->last_update),
'!title' => l($node->title, "node/{$latest->nid}"),
));
if ($count > 1) {
$oldest_sql .= ' ORDER BY last_update ASC';
$oldest = db_fetch_object(db_query_range($oldest_sql, $args, 0, 1));
$oldest_alert = _support_overview_alert($oldest->last_update);
$node = node_load(array(
'nid' => $oldest->nid,
));
$oldest_update = t('oldest: !time ago, "!title"', array(
'!time' => format_interval(time() - $oldest->last_update),
'!title' => l($node->title, "node/{$oldest->nid}"),
));
}
else {
$oldest_update = '';
}
$rows[$current_row][] = t('!total !latest !oldest', array(
'!total' => "<span class='support-overview-total'>{$count}</span>",
'!latest' => "<div class='support-overview-latest {$latest_alert}'>{$latest_link} {$latest_update}</div>",
'!oldest' => "<div class='support-overview-oldest {$oldest_alert}'>{$oldest_link} {$oldest_update}</div>",
));
}
$current_row++;
}
}
$output .= theme('table', $header, $rows);
if ($page) {
$output .= '<div class="support-overview-link">' . l($all ? t('selected clients') : t('all clients'), $all ? "support/overview/user/{$account->uid}" : "support/overview/user/{$account->uid}/all") . '</div>';
$output .= '</div>';
}
return $output;
}