You are here

function _datereminder_form_summary in Date Reminder 7

Build a form with a list of reminders.

Parameters

array $formname: The name of the form

array $form_state: Current state of the form

object $arg: Can be node or user object, depending on $content

string $content: Determines content of the list. Allowed values: 'all_node' -- Show all reminders for this node 'all_user' -- Show all reminders for a given user 'all' -- Show all reminders

string $fieldset: String that indicates if the reminder form should be in a fieldset.

1 call to _datereminder_form_summary()
datereminder_form_summary in ./datereminder.module
Build a form with a list of reminders.

File

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

Code

function _datereminder_form_summary($formname, &$form_state, $arg, $content, $fieldset) {
  global $user;
  module_load_include('inc', 'datereminder', 'includes/date');
  module_load_include('inc', 'datereminder', 'includes/defines');
  module_load_include('inc', 'datereminder', DATEREMINDER_DB);
  $form = array();
  $douser = FALSE;
  $donode = FALSE;
  $allow_del = user_access(DATEREMINDER_ADMINISTER_REMINDERS);
  $sel = array();
  switch ($content) {
    case 'all_node':
      $douser = TRUE;
      $sel['nid'] = $arg->nid;
      break;
    case 'all':
      $douser = $donode = TRUE;
      break;
    case 'all_user':
      $donode = TRUE;
      $sel['uid'] = $arg->uid;
      if ($user->uid == $arg->uid) {
        $allow_del = TRUE;
      }
      break;
    default:
      return $form;
  }
  $all = _datereminder_load_reminders($sel, NULL, 'next_due');
  $reminders = array();
  foreach (array_values($all) as $rem) {
    $reminders[$rem->rid] = '';
    if ($douser) {
      $u = $rem->name;
      if (user_access('access user profiles')) {
        $u = l($u, 'user/' . $rem->uid . '/datereminder');
      }
      $form['user'][$rem->rid] = _datereminder_form_text_item($u);
    }
    if ($rem->email != '' && ($allow_del || $rem->uid == $user->uid)) {
      $emails[$rem->rid] = _datereminder_form_text_item(str_replace(',', '<br/>', check_plain($rem->email)));
    }
    if ($donode) {
      $form['title'][$rem->rid] = _datereminder_form_text_item(l($rem->title, 'node/' . $rem->nid));
    }

    // Get reminder leadtimes
    // Note: Can simplify this now that there's one reminder
    // per entry, not multiple.
    $times = drupal_map_assoc(array(
      $rem->leadtime,
    ), 'format_interval');
    $stimes = implode('</br>', array_values($times));
    $form['leads'][$rem->rid] = _datereminder_form_text_item($stimes);

    // Get time of next reminder in local tz.
    $dobj = _datereminder_internal_date_to_datetime($rem->next_due);
    $tz = timezone_open(drupal_get_user_timezone());
    $dobj
      ->setTimeZone($tz);
    if ($rem->expired) {
      $n = _datereminder_form_text_item(t('Expired'));
    }
    else {
      $shortformat = variable_get('date_format_short', 'm/d/Y - H:i');
      $n = _datereminder_form_text_item($dobj
        ->format($shortformat));
    }
    $form['next'][$rem->rid] = $n;
  }
  if (isset($emails)) {
    $form['email'] = $emails;
  }
  if ($allow_del) {
    $form['reminders'] = array(
      '#type' => 'checkboxes',
      '#options' => $reminders,
    );
    if (!empty($reminders)) {
      $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Delete selected reminders'),
        '#submit' => array(
          '_datereminder_admin_delete_set',
        ),
      );
    }
  }
  $form['#theme'] = 'datereminder_manage_reminders';
  form_load_include($form_state, 'inc', 'datereminder', 'includes/datereminder_form');
  return $form;
}