You are here

function datereminder_tokens in Date Reminder 7

Implements hook_tokens().

File

./datereminder.module, line 625
Support for reminders for nodes with dates.

Code

function datereminder_tokens($type, $tokens, $data, $options) {
  $ret = array();

  // Check that this is for us.
  if ($type == 'datereminder') {
    $r = $data['datereminder'];
    if ($r) {
      module_load_include('inc', 'datereminder', 'includes/date');
      $datefield = _datereminder_get_datefield($r);
      $tz = isset($r->user->timezone) && variable_get('configurable_timezones', 1) ? $r->user->timezone : NULL;
      $next_due = $r->next_due;

      // We want then next-date tokens to show next occurrance after
      // the time this reminder will be sent. But if the reminder isn't
      // currently scheduled, use 'now'.
      if (isset($next_due)) {
        $next_due = _datereminder_internal_date_to_datetime($next_due);
      }
      else {
        $next_due = _datereminder_now();
      }
      $dobj = _datereminder_get_occurance_after_date($datefield, $next_due);
      if (isset($dobj)) {
        $tstamp = _datereminder_date_format_internal($dobj);

        // OK, so we have the time. Go head and format time.
        foreach ($tokens as $name => $orig) {
          if (substr($name, 0, 5) == 'next-') {
            $fmt = substr($name, 5);
            if ($fmt == 'short' || $fmt == 'medium' || $fmt == 'long') {
              $f = format_date($tstamp, $fmt, '', $tz);
            }
            else {
              $f = format_date($tstamp, 'custom', $fmt, $tz);
            }
            $ret[$orig] = $f;
          }
        }
      }
      else {
        foreach ($tokens as $name => $orig) {
          $ret[$orig] = t('Past');
        }
      }
    }
  }
  return $ret;
}