protected function _mapDate($date, $type, $params, $key)
{
switch ($type) {
case 'date':
case 'monthday':
case 'monthdayyear':
$dates = explode($params['delimiter'][$key], $date);
if (count($dates) != 3) {
return $date;
}
$index = array_flip(explode('/', $params['format'][$key]));
return $dates[$index['year']] . '-' . $dates[$index['month']] . '-' . $dates[$index['mday']];
case 'time':
$dates = explode($params['delimiter'][$key], $date);
if (count($dates) < 2 || count($dates) > 3) {
return $date;
}
if ($params['format'][$key] == 'ampm') {
if (strpos(Horde_String::lower($dates[count($dates) - 1]), 'pm') !== false) {
if ($dates[0] !== '12') {
$dates[0] += 12;
}
} elseif ($dates[0] == '12') {
$dates[0] = '0';
}
$dates[count($dates) - 1] = sprintf('%02d', $dates[count($dates) - 1]);
}
return $dates[0] . ':' . $dates[1] . (count($dates) == 3 ? ':' . $dates[2] : ':00');
case 'datetime':
switch ($params['order'][$key]) {
case -1:
return (string) (int) $date == $date ? date('Y-m-d H:i:s', $date) : $date;
case 0:
list($day, $time) = explode(' ', $date, 2);
break;
case 1:
list($time, $day) = explode(' ', $date, 2);
break;
}
$date = $this->_mapDate($day, 'date', array('delimiter' => $params['day_delimiter'], 'format' => $params['day_format']), $key);
$time = $this->_mapDate($time, 'time', array('delimiter' => $params['time_delimiter'], 'format' => $params['time_format']), $key);
return $date . ' ' . $time;
}
}