/**
* date.php
*
- * Copyright (c) 1999-2005 The SquirrelMail Project Team
- * Licensed under the GNU GPL. For full terms see the file COPYING.
- *
* Takes a date and parses it into a usable format. The form that a
* date SHOULD arrive in is:
* <Tue,> 29 Jun 1999 09:52:11 -0500 (EDT)
* (as specified in RFC 822) -- 'Tue' is optional
*
+ * @copyright © 1999-2007 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
* @subpackage date
*/
-/** Load up some useful constants */
-require_once(SM_PATH . 'functions/constants.php');
+/**
+ * dependency information
+ * - none
+ */
/**
* Corrects a time stamp to be the local time.
case 'IST':
case 'MET DST':
case 'METDST':
+ case 'MEST':
+ case 'CEST':
$tzc = '+0200';
break;
case 'HKT':
* and taking localization into accout.
*
* @param int stamp the timestamp
+ * @param string fallback string to use when stamp not valid
* @return string the long date string
*/
-function getLongDateString( $stamp ) {
+function getLongDateString( $stamp, $fallback = '' ) {
global $hour_format;
if ($stamp == -1) {
- return '';
+ return $fallback;
}
if ( $hour_format == SMPREF_TIME_12HR ) {
* and everything would be bumped up one.
*/
- /*
- * Simply check to see if the first element in the dateParts
- * array is an integer or not.
- * Since the day of week is optional, this check is needed.
- */
- if (count($dateParts) <2) {
+ if (count($dateParts) <2) {
return -1;
- } else if (count($dateParts) ==3) {
+ } else if (count($dateParts) ==3) {
if (substr_count($dateParts[0],'-') == 2 &&
substr_count($dateParts[1],':') == 2) {
// dd-Month-yyyy 23:19:05 +0200
$newDate = array($aDate[0],$aDate[1],$aDate[2],$dateParts[1],$dateParts[2]);
$dateParts = $newDate;
}
- }
+ }
- /* remove day of week */
+ /*
+ * Simply check to see if the first element in the dateParts
+ * array is an integer or not.
+ * Since the day of week is optional, this check is needed.
+ */
if (!is_numeric(trim($dateParts[0]))) {
- $dataParts = array_shift($dateParts);
+ /* cope with broken mailers that send "Tue,23" without space */
+ if ( preg_match ('/^\w+,(\d{1,2})$/', $dateParts[0], $match) ) {
+ /* replace Tue,23 with 23 */
+ $dateParts[0] = $match[1];
+ } else {
+ /* just drop the day of week */
+ array_shift($dateParts);
+ }
}
+
/* calculate timestamp separated from the zone and obs-zone */
$stamp = strtotime(implode (' ', array_splice ($dateParts,0,4)));
if (!isset($dateParts[0])) {
return getGMTSeconds($stamp, $dateParts[0]);
}
}
-
-/* I use this function for profiling. Should never be called in
- actual versions of SquirrelMail released to public. */
-/*
- function getmicrotime() {
- $mtime = microtime();
- $mtime = explode(' ',$mtime);
- $mtime = $mtime[1] + $mtime[0];
- return ($mtime);
- }
-*/
-?>
\ No newline at end of file