You are here

function notifications_forum_user_forum_form in Forum notifications 6

Same name and namespace in other branches
  1. 7 notifications_forum.module \notifications_forum_user_forum_form()

User forum notifications form.

1 string reference to 'notifications_forum_user_forum_form'
notifications_forum_menu in ./notifications_forum.module
Implements hook_menu().

File

./notifications_forum.module, line 159

Code

function notifications_forum_user_forum_form(&$form_state, $account) {
  $form = array();
  $account = messaging_user_object($account);
  $form['account'] = array(
    '#type' => 'value',
    '#value' => $account,
  );
  $send_methods = notifications_send_methods($account);
  $send_intervals = notifications_send_intervals($account);

  // lookup existing subscriptions and index by 'tid'
  $subs = array();
  foreach (notifications_get_subscriptions(array(
    'type' => 'taxonomy',
    'uid' => $account->uid,
  )) as $sub) {
    $subs[$sub->fields['tid']] = $sub;
  }
  $form['info'] = array(
    '#value' => '<p>' . t('Your forum subscriptions:') . '</p>',
  );
  $form['subscriptions'] = array(
    '#theme' => 'notifications_forum_user_subscriptions_form',
    '#tree' => TRUE,
  );
  foreach (forum_get_forums() as $forum) {
    $sub = !empty($subs[$forum->tid]) ? $subs[$forum->tid] : NULL;
    $wrapper = array();
    $wrapper['subscribe'] = array(
      '#type' => 'checkbox',
      '#title' => l($forum->name, "forum/{$forum->tid}"),
      '#default_value' => !is_null($sub),
    );
    $wrapper['tid'] = array(
      '#type' => 'value',
      '#value' => $forum->tid,
    );
    if (!is_null($sub)) {
      $wrapper['sid'] = array(
        '#type' => 'value',
        '#value' => $sub->sid,
      );
    }
    $wrapper['description'] = array(
      '#type' => 'item',
      '#title' => t('Description'),
      '#value' => $forum->description,
    );
    $wrapper['send_method'] = array(
      '#type' => 'select',
      '#title' => t('Send method'),
      '#options' => $send_methods,
      '#default_value' => is_null($sub) ? notifications_user_setting('send_method', $account) : $sub->send_method,
    );
    $wrapper['send_interval'] = array(
      '#type' => 'select',
      '#title' => t('Send interval'),
      '#options' => $send_intervals,
      '#default_value' => is_null($sub) ? notifications_user_setting('send_interval', $account) : $sub->send_interval,
    );
    $form['subscriptions'][] = $wrapper;
  }
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  return $form;
}