You are here

function datereminder_form in Date Reminder 6.2

Same name and namespace in other branches
  1. 6 includes/datereminder_form.inc \datereminder_form()
  2. 7 datereminder.module \datereminder_form()

Build the user reminder form.

Parameters

node $node: The fully loaded node object.

array $fieldset: Boolean that indicates if the reminder form should be in a fieldset.

2 string references to 'datereminder_form'
_datereminder_current_user_reminder in ./datereminder.module
Get table of the given node's reminders.
_datereminder_menu in includes/admin.settings.inc
Implements hook_menu().

File

includes/datereminder_form.inc, line 15
Support for forms displaying or entering reminders.

Code

function datereminder_form(&$form_state, $node, $fieldset = 'f') {
  module_load_include('inc', 'datereminder', 'includes/defines');
  global $user;
  $form = array();
  if (!_datereminder_has_future_dates($node)) {

    // Already past last repeat. Don't present option.
    return $form;
  }
  $form['nid'] = array(
    '#type' => 'value',
    '#value' => $node->nid,
  );
  $form['uid'] = array(
    '#type' => 'value',
    '#value' => $user->uid,
  );
  if ($fieldset == 'f') {
    $form['collapse'] = array(
      '#type' => 'fieldset',
      '#collapsible' => TRUE,
      '#collapsed' => variable_get('datereminder_fieldset_collapsed', 1),
    );
    $form['collapse']['#title'] = t("Get reminder for '@title'", array(
      '@title' => check_plain($node->title),
    ));
  }
  else {
    $form['collapse'] = array();
  }
  $tbl = array();
  $tbl['#table_name'] = 'datereminder';
  $tbl['#table_cols'] = array(
    array(
      'lead',
      t('Lead time'),
    ),
  );
  $doemail = FALSE;
  if (user_access(DATEREMINDER_OTHER_EMAIL)) {
    $tbl['#table_cols'][] = array(
      'email',
      t('Email Addresses (leave empty to use your default)'),
    );
    $doemail = TRUE;
  }
  $reminders = _datereminder_get_node_user_reminders($node);
  $rows = array();
  foreach ($reminders as $r) {
    $rid = $r->rid;
    $rows[] = $rid;
    $tbl["datereminder_lead_{$rid}"] = _datereminder_leadtime_form($r->leadtime);
    if ($doemail) {
      $tbl["datereminder_email_{$rid}"] = array(
        '#type' => 'textfield',
        '#size' => 72,
        '#maxlength' => 512,
        '#default_value' => $r->email,
      );
    }
  }

  // How many should we allow user to add at a time?
  $maxrem = variable_get('datereminder_max_reminders', DATEREMINDER_MAX_REMINDERS);
  $minadd = variable_get('datereminder_min_add', 1);
  $toadd = $maxrem - count($reminders);
  if ($toadd > $minadd) {
    $toadd = $minadd;
  }
  while ($toadd > 0) {
    $rows[] = "n{$toadd}";
    $tbl["datereminder_lead_n{$toadd}"] = _datereminder_leadtime_form(0);
    if ($doemail) {
      $tbl["datereminder_email_n{$toadd}"] = array(
        '#type' => 'textfield',
        '#size' => 72,
        '#maxlength' => 512,
      );
    }
    $toadd -= 1;
  }
  $tbl['#table_rows'] = $rows;
  $tbl['rids'] = array(
    '#type' => 'value',
    '#value' => implode(',', $rows),
  );
  $tbl['#theme'] = 'datereminder_table';
  $form['collapse']['datereminder'] = $tbl;
  $form['collapse']['send-now'] = array(
    '#type' => 'checkbox',
    '#title' => t('Send test email'),
    '#description' => t('Check to send example email now'),
    '#default_value' => FALSE,
  );
  $form['collapse']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Set reminder'),
    '#submit' => array(
      '_datereminder_form_submit_user',
    ),
  );
  $form['#validate'][] = '_datereminder_form_validate_user';
  return $form;
}