* <Tue,> 29 Jun 1999 09:52:11 -0500 (EDT)
* (as specified in RFC 822) -- 'Tue' is optional
*
- * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @copyright 1999-2009 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
$ret = date('w#m#'. $ret, $stamp );
// extract day and month in order to replace later by intl day and month
$aParts = explode('#',$ret);
- $ret = str_replace(array('$1','$4','$2','$3',), array(getDayAbrv($aParts[0]),
- getMonthAbrv($aParts[1]),
- getMonthName($aParts[1]),
- getDayName($aParts[0])),
- $aParts[2]);
+ $ret = str_replace(array('$1','$4','$2','$3',),
+ array(getDayAbrv($aParts[0]),
+ getMonthAbrv($aParts[1]),
+ getMonthName($aParts[1]),
+ getDayName($aParts[0])),
+ $aParts[2]);
return( $ret );
}
* 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 ) {
*/
function getDateString( $stamp ) {
- global $invert_time, $hour_format, $show_full_date;
+ global $invert_time, $hour_format, $show_full_date, $custom_date_format;
if ( $stamp == -1 ) {
return '';
}
$nextmid = $midnight + 86400;
- if (($show_full_date == 1) || ($nextmid < $stamp)) {
+ $custom_date_format = trim($custom_date_format);
+ if (!empty($custom_date_format)) {
+ $date_format = $custom_date_format;
+ } else if ($show_full_date == 1 || $nextmid < $stamp) {
$date_format = _("M j, Y");
} else if ($midnight < $stamp) {
/* Today */
* 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])) {