function subscriptions_content_type_form in Subscriptions 6
Same name and namespace in other branches
- 5.2 subscriptions_content.module \subscriptions_content_type_form()
Build the Content Types subscriptions form at user/UID/subscriptions/type.
1 string reference to 'subscriptions_content_type_form'
- subscriptions_content_page_type in ./
subscriptions_content.module - Subscriptions page callback: List content types subscriptions.
File
- ./
subscriptions_content.module, line 968 - Subscriptions to content events
Code
function subscriptions_content_type_form(&$form_state, $account, $form) {
$subscriptions = array();
$bulk_op = empty($_SESSION['subscriptions']['bulk_op']) ? '' : $_SESSION['subscriptions']['bulk_op'];
if ($bulk_op) {
// No initialization for bulk subscription.
$uid = -DRUPAL_AUTHENTICATED_RID;
}
else {
$arg5 = subscriptions_arg(5);
$uid = isset($account) ? $account->uid : (is_numeric($arg5) ? -$arg5 : -DRUPAL_AUTHENTICATED_RID);
$result = db_query(db_rewrite_sql("\n SELECT s.value, s.send_interval, s.author_uid, s.send_comments, s.send_updates, nt.type, nt.name\n FROM {subscriptions} s\n INNER JOIN {node_type} nt ON s.value = nt.type\n WHERE s.module = 'node' AND s.field = 'type' AND s.recipient_uid = %d\n ORDER BY s.author_uid", 'nt', 'type'), $uid);
while ($s = db_fetch_array($result)) {
$subscriptions[$s['value']][$s['author_uid']] = $s;
}
}
$unlisteds = variable_get('subscriptions_unlisted_content_types', array());
$blockeds = variable_get('subscriptions_blocked_content_types', array());
$omits = array_merge($unlisteds, $blockeds);
$form[0] = array(
'#type' => 'item',
'#title' => '',
'#tree' => TRUE,
'#theme' => 'subscriptions_form_table',
);
$intervals = _subscriptions_send_intervals();
foreach (node_get_types() as $type) {
// add the active subscriptions
$type_name = check_plain($type->name);
if (in_array($type->type, $omits)) {
if (user_access('subscribe to all content types') || user_access('administer site configuration')) {
if (in_array($type->type, $blockeds)) {
$type_name = '<span class="error" title="' . t('This !content_type is blocked.', array(
'!content_type' => t('content type'),
)) . '">' . $type_name . '</span> ' . SUBSCRIPTIONS_UNAVAILABLE;
}
else {
$type_name = $type_name . ' ' . SUBSCRIPTIONS_UNAVAILABLE;
}
}
else {
continue;
}
}
if (!isset($subscriptions[$type->type][-1])) {
// author-less item is missing -- add it here:
$subscriptions[$type->type][-1] = array(
'send_interval' => _subscriptions_get_setting('send_interval', $uid < 0 ? $uid : $account),
'send_comments' => _subscriptions_get_setting('send_comments', $uid < 0 ? $uid : $account),
'send_updates' => _subscriptions_get_setting('send_updates', $uid < 0 ? $uid : $account),
'author_uid' => FALSE,
);
}
foreach ($subscriptions[$type->type] as $author_uid => $subscription) {
subscriptions_form_helper($form[0], $defaults, $author_uid, $type->type, $type_name, $subscription);
}
}
if (isset($form[0]['checkboxes'])) {
$form[0]['defaults'] = array(
'#type' => 'value',
'#value' => $defaults,
);
subscriptions_form_column_filter($form[0], $uid);
$form['#tree'] = TRUE;
$form['uid'] = array(
'#type' => 'value',
'#value' => $bulk_op ? $_SESSION['subscriptions']['uids'] : $uid,
);
$form['access_key'] = array(
'#type' => 'value',
'#value' => 'type',
);
$form['module'] = array(
'#type' => 'value',
'#value' => 'node',
);
$form['field'] = array(
'#type' => 'value',
'#value' => 'type',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
'#weight' => 10,
);
$form['#submit'][] = 'subscriptions_page_form_submit';
}
else {
$form['header']['#value'] = t('There are no available !subs_types.', array(
'!subs_types' => t('content types'),
));
unset($form['footer']);
}
return $form;
}