You are here

function datereminder_form_summary in Date Reminder 6

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

Build a form with a list of reminders.

@todo This really ought to be combined with datereminder_form().

Parameters

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 string reference to 'datereminder_form_summary'
datereminder_menu in ./datereminder.module
Implements of hook_menu().

File

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

Code

function datereminder_form_summary(&$form_state, $arg, $content = 'all_node', $fieldset = 'f') {
  global $user;
  $form = array();
  $douser = FALSE;
  $donode = FALSE;
  $allow_del = user_access(DATEREMINDER_ADMINISTER_REMINDERS);
  $sel = array();
  switch ($content) {
    case 'all_node':
      $douser = TRUE;
      $ttl = t("All reminders for '@title'", array(
        '@title' => check_plain($arg->title),
      ));
      $sel['nid'] = $arg->nid;
      break;
    case 'all':
      $douser = $donode = TRUE;
      $ttl = t('All reminders');
      break;
    case 'all_user':
      $donode = TRUE;
      $ttl = t('All of your reminders');
      $sel['uid'] = $arg->uid;
      if ($user->uid == $arg->uid) {
        $allow_del = TRUE;
      }
      break;
    default:
      return $form;
  }
  $all = _datereminder_load_reminders($sel, NULL, 'next');
  $reminders = array();
  foreach ($all as $rid => $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] = array(
        '#value' => $u,
      );
    }
    if ($rem->email != '' && ($allow_del || $rem->uid == $user->uid)) {
      $emails[$rem->rid] = array(
        '#value' => str_replace(',', '</br>', check_plain($rem->email)),
      );
    }
    if ($donode) {
      $form['title'][$rem->rid] = array(
        '#value' => l($rem->title, 'node/' . $rem->nid),
      );
    }

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

    // Get time of next reminder in local tz.
    $dobj = date_create($rem->next, timezone_open('UTC'));
    date_timezone_set($dobj, timezone_open(date_default_timezone_name(FALSE)));
    if ($rem->expired) {
      $n = array(
        '#value' => t('Expired'),
      );
    }
    else {
      $n = array(
        '#value' => date_format_date($dobj, 'short'),
      );
    }
    $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';
  return $form;
}