function _subscriptions_content_type_form in Subscriptions 7
Same name and namespace in other branches
- 2.0.x subscriptions_content/subscriptions_content.admin.inc \_subscriptions_content_type_form()
Build the Content Types subscriptions form at user/UID/subscriptions/type.
Parameters
array $form:
int $uid: ID of a user if >0 or of a role if <0.
Return value
array
1 call to _subscriptions_content_type_form()
- subscriptions_content_page_type in ./
subscriptions_content.module - Subscriptions page callback: Lists content types subscriptions.
File
- ./
subscriptions_content.admin.inc, line 252 - Subscriptions Content module (admin functions).
Code
function _subscriptions_content_type_form(array $form, $uid) {
$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 {
$query = db_select('subscriptions', 's', array(
'fetch' => PDO::FETCH_ASSOC,
));
$nt_alias = $query
->join('node_type', 'nt', 's.value = nt.type');
$result = $query
->fields('s', array(
'value',
'send_interval',
'author_uid',
'send_comments',
'send_updates',
))
->fields($nt_alias, array(
'type',
'name',
))
->condition('s.module', 'node')
->condition('s.field', 'type')
->condition('s.recipient_uid', $uid)
->addTag('node_type_access')
->orderBy('s.author_uid')
->execute();
foreach ($result as $s) {
$subscriptions[$s['value']][$s['author_uid']] = $s;
}
}
$unlisteds = variable_get('subscriptions_unlisted_content_types', array());
/** @var $blockeds array */
$blockeds = variable_get('subscriptions_blocked_content_types', array());
$omits = array_merge($unlisteds, $blockeds);
$form[0] = array(
'#theme' => 'subscriptions_form_table',
);
$defaults = array();
$tr = 't';
foreach (node_type_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.') . '">' . $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),
'send_comments' => _subscriptions_get_setting('send_comments', $uid),
'send_updates' => _subscriptions_get_setting('send_updates', $uid),
'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);
}
else {
$form = array(
array(
'#markup' => t('There are no available content types.'),
),
);
}
return $form;
}