You are here

function notifications_account_subscription_list_form in Notifications 7

List form for subscriptions of the same type for a user

@todo Add enable /disable operations @todo Add pager

Parameters

$type: Subscription type

$account: User account, owner of these subscriptions

$subscriptions: Predefined array of subscriptions to display, so we don't search more nor allow new ones.

$fields: Predefined field values for new subscriptions, as type => value array

1 string reference to 'notifications_account_subscription_list_form'
notifications_account_subscription_list_page in notifications_account/notifications_account.module
Generic user page for a subscription type

File

notifications_account/notifications_account.pages.inc, line 101
User pages for Notifications

Code

function notifications_account_subscription_list_form($form, &$form_state, $type, $account) {
  if (isset($form_state['values']['op']) && $form_state['values']['op'] == t('Delete')) {
    if ($selected = array_filter($form_state['values']['subscriptions']['select'])) {
      $list = Notifications_Subscription_List::build_sids(array_keys($selected));
      return notifications_subscription_list_form($form, $form_state, 'delete', $list);
    }
  }
  $account = messaging_user_object($account);
  $substype = notifications_subscription($type);
  $form['account'] = array(
    '#type' => 'value',
    '#value' => $account,
  );
  $form['subscription_type'] = array(
    '#type' => 'value',
    '#value' => $type,
  );

  // Build a template subscriptions. These subscriptions should have a unique subscription variable field
  $form['info'] = array(
    '#type' => 'item',
    '#title' => t('@type subscriptions', array(
      '@type' => $substype
        ->get_title(),
    )),
    '#description' => check_plain($substype
      ->get_description()),
  );
  $subscriptions = new Notifications_Subscription_Table();
  $subscriptions
    ->set_header()
    ->set_conditions(array(
    'uid' => $account->uid,
    'type' => $type,
  ))
    ->query_load();
  $form['subscriptions'] = $subscriptions
    ->table_select();
  if (count($subscriptions)) {
    $form['operations'] = array(
      '#type' => 'fieldset',
    );
  }
  return $form;
}