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;
}