thomascube
2011-01-23 03d772e80d9cc059eed12a24cd9e9a3dc850068a
program/include/main.inc
@@ -978,6 +978,37 @@
/**
 * Improved equivalent to strtotime()
 *
 * @param string Date string
 * @return int
 */
function rcube_strtotime($date)
{
  // check for MS Outlook vCard date format YYYYMMDD
  if (preg_match('/^([12][90]\d\d)([01]\d)(\d\d)$/', trim($date), $matches)) {
    return mktime(0,0,0, intval($matches[2]), intval($matches[3]), intval($matches[1]));
  }
  else if (is_numeric($date))
    return $date;
  // support non-standard "GMTXXXX" literal
  $date = preg_replace('/GMT\s*([+-][0-9]+)/', '\\1', $date);
  // if date parsing fails, we have a date in non-rfc format.
  // remove token from the end and try again
  while ((($ts = @strtotime($date)) === false) || ($ts < 0)) {
    $d = explode(' ', $date);
    array_pop($d);
    if (!$d) break;
    $date = implode(' ', $d);
  }
  return $ts;
}
/**
 * Convert the given date to a human readable form
 * This uses the date formatting properties from config
 *
@@ -991,22 +1022,8 @@
  
  $ts = NULL;
  if (is_numeric($date))
    $ts = $date;
  else if (!empty($date))
    {
    // support non-standard "GMTXXXX" literal
    $date = preg_replace('/GMT\s*([+-][0-9]+)/', '\\1', $date);
    // if date parsing fails, we have a date in non-rfc format.
    // remove token from the end and try again
    while ((($ts = @strtotime($date))===false) || ($ts < 0))
      {
        $d = explode(' ', $date);
        array_pop($d);
        if (!$d) break;
        $date = implode(' ', $d);
      }
    }
  if (!empty($date))
    $ts = rcube_strtotime($date);
  if (empty($ts))
    return '';
@@ -1475,7 +1492,7 @@
      $classes[] = 'unread';
    $js_name = JQ($folder['id']);
    $html_name = Q($foldername . ($unread ? " ($unread)" : ''));
    $html_name = Q($foldername) . ($unread ? html::span('unreadcount', " ($unread)") : '');
    $link_attrib = $folder['virtual'] ? array() : array(
      'href' => rcmail_url('', array('_mbox' => $folder['id'])),
      'onclick' => sprintf("return %s.command('list','%s',this)", JS_OBJECT_NAME, $js_name),