mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-31 02:21:28 +01:00
More robust handling of date formatting:
- Handle placeholders with prefixes - Use user format to parse date/time, in case it's already been formatted
This commit is contained in:
parent
025c3d3b44
commit
fb69fb21ea
@ -956,7 +956,7 @@ abstract class bo_merge
|
|||||||
{
|
{
|
||||||
$names = array();
|
$names = array();
|
||||||
foreach((array)$this->date_fields as $fieldname) {
|
foreach((array)$this->date_fields as $fieldname) {
|
||||||
$names[] = preg_quote($fieldname,'/');
|
$names[] = $fieldname;
|
||||||
}
|
}
|
||||||
$this->format_spreadsheet_dates($content, $names, $replacements, $mimetype.$mso_application_progid);
|
$this->format_spreadsheet_dates($content, $names, $replacements, $mimetype.$mso_application_progid);
|
||||||
}
|
}
|
||||||
@ -1046,13 +1046,23 @@ abstract class bo_merge
|
|||||||
))) return;
|
))) return;
|
||||||
|
|
||||||
// Properly format values for spreadsheet
|
// Properly format values for spreadsheet
|
||||||
foreach($names as $idx => $field)
|
foreach($names as $idx => &$field)
|
||||||
{
|
{
|
||||||
$key = '$$'.$field.'$$';
|
$key = '$$'.$field.'$$';
|
||||||
|
$field = preg_quote($field, '/');
|
||||||
if($values[$key])
|
if($values[$key])
|
||||||
{
|
{
|
||||||
$date = new egw_time($values[$key]);
|
try {
|
||||||
|
$date = egw_time::createFromFormat(
|
||||||
|
'!'.egw_time::$user_dateformat . ' ' .egw_time::$user_timeformat,
|
||||||
|
$values[$key],
|
||||||
|
egw_time::$user_timezone
|
||||||
|
);
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
// Couldn't get a date out of it... skip it
|
||||||
|
trigger_error("Unable to parse date $key = '{$values[$key]}' - left as text", E_USER_NOTICE);
|
||||||
|
}
|
||||||
if($mimetype == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')//Excel WTF
|
if($mimetype == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')//Excel WTF
|
||||||
{
|
{
|
||||||
$interval = $date->diff(new egw_time('1900-01-00 0:00'));
|
$interval = $date->diff(new egw_time('1900-01-00 0:00'));
|
||||||
@ -1070,6 +1080,7 @@ abstract class bo_merge
|
|||||||
unset($names[$idx]);
|
unset($names[$idx]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch($mimetype)
|
switch($mimetype)
|
||||||
{
|
{
|
||||||
case 'application/vnd.oasis.opendocument.spreadsheet': // open office calc
|
case 'application/vnd.oasis.opendocument.spreadsheet': // open office calc
|
||||||
|
Loading…
Reference in New Issue
Block a user