function subscriptions_page_user_overview in Subscriptions 6
Same name and namespace in other branches
- 5.2 subscriptions.admin.inc \subscriptions_page_user_overview()
- 7 subscriptions.admin.inc \subscriptions_page_user_overview()
- 2.0.x subscriptions.admin.old.php \subscriptions_page_user_overview()
Construct the overview page, which displays a summary of subscriptions per type as well as the user settings at user/UID/subscriptions. This form is also used for admin/settings/subscriptions/userdefaults.
@params $account Must be a valid user account from user_load() or NULL (for the admin form).
1 string reference to 'subscriptions_page_user_overview'
- subscriptions_menu in ./
subscriptions.module - Implementation of hook_menu().
File
- ./
subscriptions.admin.inc, line 331 - Subscriptions module (load-on-demand admin functions).
Code
function subscriptions_page_user_overview($account) {
// Build summary
$uid = isset($account) ? $account->uid : -DRUPAL_AUTHENTICATED_RID;
$counts = array();
$result = db_query("SELECT module, field, count(1) as number FROM {subscriptions} WHERE recipient_uid = %d GROUP BY module, field", $uid);
while ($subs = db_fetch_object($result)) {
if (!empty($subs->module)) {
$counts[$subs->module][$subs->field] = $subs->number;
}
}
// give other modules a chance to add their count(s)
$more_counts = module_invoke_all('count_user_subscriptions', $counts, $uid);
$counts = array_merge($counts, $more_counts);
$tr = 't';
$header = array(
array(
'data' => $tr('Type'),
'width' => '20%',
),
t('Number'),
);
$types = subscriptions_types();
if ($uid < 0) {
unset($types['node']);
}
uasort($types, '_subscriptions_cmp_by_weight');
$rows = array();
foreach ($types as $stype => $type) {
$has_access = $uid < 0 && user_access('administer site configuration') || user_access($type['access'], $account);
if ($has_access || user_access('administer user subscriptions')) {
$rows[] = array(
$has_access ? l($tr($type['title']), $uid < 0 ? "admin/settings/subscriptions/userdefaults/{$stype}" : "user/{$account->uid}/subscriptions/{$stype}") : $type['title'],
isset($counts[$type['fields'][0]][$type['fields'][1]]) ? $counts[$type['fields'][0]][$type['fields'][1]] : 0,
);
}
}
$output = theme('table', $header, $rows);
$output .= theme('item', array(
'#value' => '',
'#description' => t('Note: The counts on this page may differ from the ones on the detail pages for various technical reasons.'),
));
$output .= '<br />';
if (isset($account)) {
$output .= drupal_get_form('subscriptions_user_suspend_form', $account);
}
$output .= drupal_get_form('subscriptions_user_settings_form', $account);
drupal_set_title($uid < 0 ? t('Subscriptions') : check_plain($account->name));
return $output;
}