You are here

function subscriptions_content_type_form in Subscriptions 6

Same name and namespace in other branches
  1. 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>&nbsp;' . SUBSCRIPTIONS_UNAVAILABLE;
        }
        else {
          $type_name = $type_name . '&nbsp;' . 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;
}