6.0.0-alpha12
6/10/25

[#14132] vCalendar timezone definition ignored in case of starting far ago
Summary vCalendar timezone definition ignored in case of starting far ago
Queue Kronolith
Queue Version 4.2.9
Type Bug
State Not Reproducible
Priority 1. Low
Owners mrubinsk (at) horde (dot) org
Requester v.henkel (at) wenzel-elektronik (dot) de
Created 10/08/2015 (3533 days ago)
Due
Updated 12/02/2015 (3478 days ago)
Assigned 11/12/2015 (3498 days ago)
Resolved 12/02/2015 (3478 days ago)
Github Issue Link
Github Pull Request
Milestone
Patch No

History
12/02/2015 11:34:11 PM Git Commit Comment #11 Reply to this comment
Changes have been made in Git (master):

commit 94273fbbe3b61b75ef306ce091e77ef0e9ad3824
Author: Michael J Rubinsky <mrubinsk@horde.org>
Date:   Wed Dec 2 18:33:25 2015 -0500

     Add additional (passing) test.

     Related to Bug: 14132

  framework/Icalendar/package.xml                    |    6 ++-
  .../Icalendar/test/Horde/Icalendar/ParseTest.php   |   11 +++++
  .../test/Horde/Icalendar/fixtures/bug14132_2.ics   |   46 
++++++++++++++++++++
  3 files changed, 61 insertions(+), 2 deletions(-)

http://github.com/horde/horde/commit/94273fbbe3b61b75ef306ce091e77ef0e9ad3824
12/02/2015 11:32:38 PM Michael Rubinsky Comment #10
Assigned to Michael Rubinsky
State ⇒ Not Reproducible
Reply to this comment
I have no idea. I can't reproduce that. Both ics files behave 
identically for me. I've added a separate test with the good.ics file 
and it passes. Maybe your timezone database is old/incorrect/corrupt?
12/02/2015 06:47:08 PM v (dot) henkel (at) wenzel-elektronik (dot) de Comment #9 Reply to this comment
why is good.ics and bad.ics that different in HORDE?
I  still think, that they should give the same results.

[Show Quoted Text - 10 lines]
12/02/2015 05:22:11 PM Michael Rubinsky Comment #8 Reply to this comment
Hi Michael,
I apologize for contractional statements in my last response  and 
the screen shot attached.
To be more precise now:
- the item in "bad.ics"  is entered here with 3 am (german winter time)
No, it's not. According to the data in the bad.ics file, it's entered 
at 3am "Eastern Standard Time" - and is even specified in the ics file 
as UTC -5.

12/02/2015 05:09:19 PM v (dot) henkel (at) wenzel-elektronik (dot) de Comment #7
New Attachment: good.ics Download
Reply to this comment
Hi Michael,
I apologize for contractional statements in my last response  and the 
screen shot attached.
To be more precise now:
- the item in "bad.ics"  is entered here with 3 am (german winter time)
    instead of 7 am, as shown in the screenshot.
- please ckeck the attached file "Bildschirmfoto vom 2015-11-30 09_28_42.png"

as soon as the timezone definition is changed to a more recent date, 
everything is fine:
please check the difference between "good.ics" (attached here) and 
former "bad.ics"

$diff good.ics bad.ics
8c8
< DTSTART:20010101T020000
---
DTSTART:16010101T020000
14c14
< DTSTART:20010101T020000
---
DTSTART:16010101T020000
the item in "good.ics" is shown here correctly at 9am german winter 
time 07am UTC

hence, I am still convinced, there must be a serious bug in SW or 
environment. hopefully you can reproduce it now.
BR
7AM is the correct time, if you are viewing it in UTC.
12/02/2015 01:47:13 PM Michael Rubinsky Comment #6 Reply to this comment
7AM is the correct time, if you are viewing it in UTC.
11/30/2015 08:34:52 AM v (dot) henkel (at) wenzel-elektronik (dot) de Comment #5
New Attachment: Bildschirmfoto vom 2015-11-30 09:28:42.png Download
Reply to this comment
webmail does not present my example "bad.ics" with 7am.
It shows begin 3:00 am, end 3:29am.
This is wrong.
I have attached my screen shot.

After accepting this invitation received by email, the event is 
inserted into kronolith calendar  with 7:00 am.
This is wrong again, but in line of course with webmail presentation.
Can you be more specific as to what you are seeing that is 
incorrect? I created a unit test for this and it works as expected. 
That is, the vTimezone is correctly parsed, the DTSTART of the event 
in your example file is represented as 3am on 10/9 in 
America/New_York. This, converted to UTC yields a time of 7am since 
this date is within DST and has an offset of UTC - 4 hours.
11/15/2015 03:05:21 PM Git Commit Comment #4 Reply to this comment
Changes have been made in Git (master):

commit 1dfebf6fdad4391f520bf2265181d432368df3b8
Merge: 8472ef2 805b9b5
Author: Jan Schneider <jan@horde.org>
Date:   Sun Nov 15 16:05:04 2015 +0100

     Merge branch 'master' of ssh://dev.horde.org/horde/git/horde

  .travis.yml                                        |   18 +-
  framework/ActiveSync/composer.json                 |    4 +-
  .../lib/Horde/ActiveSync/Connector/Exporter.php    |    8 +-
  .../ActiveSync/lib/Horde/ActiveSync/Device.php     |  112 ++-
  .../ActiveSync/lib/Horde/ActiveSync/Device/Ios.php |   79 ++
  .../lib/Horde/ActiveSync/Message/Base.php          |    2 +-
  .../lib/Horde/ActiveSync/Message/Contact.php       |   15 +
  .../lib/Horde/ActiveSync/Request/Search.php        |    2 -
  .../lib/Horde/ActiveSync/State/Mongo.php           |    2 +-
  .../ActiveSync/lib/Horde/ActiveSync/State/Sql.php  |   24 +-
  .../lib/Horde/ActiveSync/Wbxml/Decoder.php         |    4 +-
  framework/ActiveSync/package.xml                   |   61 ++-
  .../test/Horde/ActiveSync/ContactTest.php          |   24 +-
  .../test/Horde/ActiveSync/DeviceTest.php           |   51 +-
  framework/Core/composer.json                       |    4 +-
  framework/Core/js/map/horde.js                     |    6 +
  framework/Core/js/map/owm.js                       |   89 ++
  .../Core/lib/Horde/Core/ActiveSync/Connector.php   |    3 +-
  .../Core/lib/Horde/Core/ActiveSync/Driver.php      |   32 +-
  .../lib/Horde/Core/ActiveSync/Logger/Factory.php   |    2 +-
  .../Ajax/Imple/WeatherLocationAutoCompleter.php    |    9 +-
  framework/Core/lib/Horde/Core/Factory/Alarm.php    |    2 +-
  framework/Core/lib/Horde/Core/Factory/Weather.php  |    2 +-
  framework/Core/lib/Horde/Deprecated.php            |    2 +-
  framework/Core/package.xml                         |   43 +-
  .../test/Horde/Exception/ExceptionTest.php         |    4 +-
  framework/Icalendar/lib/Horde/Icalendar.php        |   34 +-
  framework/Icalendar/package.xml                    |   10 +-
  .../Icalendar/test/Horde/Icalendar/ParseTest.php   |   23 +
  .../test/Horde/Icalendar/fixtures/bug14132.ics     |   46 +
  .../test/Horde/Icalendar/fixtures/bug14153.ics     |  263 ++++++
  .../lib/Horde/Kolab/Filter/Transport.php           |    2 +-
  .../lib/Horde/Kolab/Storage/Cache/Data.php         |   38 +-
  framework/Nls/composer.json                        |    4 +-
  framework/Nls/package.xml                          |   21 +-
  framework/Notification/composer.json               |    4 +-
  framework/Notification/package.xml                 |   19 +-
  framework/Pdf/composer.json                        |    4 +-
  framework/Pdf/package.xml                          |   19 +-
  .../phpseclib/phpseclib/phpseclib/Crypt/AES.php    |   20 +-
  .../phpseclib/phpseclib/phpseclib/Crypt/Base.php   |  838 ++++++++++++++----
  .../phpseclib/phpseclib/Crypt/Blowfish.php         |   81 +-
  .../phpseclib/phpseclib/phpseclib/Crypt/DES.php    |   73 +-
  .../phpseclib/phpseclib/phpseclib/Crypt/Hash.php   |   38 +-
  .../phpseclib/phpseclib/phpseclib/Crypt/RC2.php    |  160 +++-
  .../phpseclib/phpseclib/phpseclib/Crypt/RC4.php    |   50 +-
  .../phpseclib/phpseclib/phpseclib/Crypt/RSA.php    |  176 +++-
  .../phpseclib/phpseclib/phpseclib/Crypt/Random.php |    6 +-
  .../phpseclib/phpseclib/Crypt/Rijndael.php         |  861 +++++++-----------
  .../phpseclib/phpseclib/Crypt/TripleDES.php        |   71 ++-
  .../phpseclib/phpseclib/Crypt/Twofish.php          |   31 +-
  .../phpseclib/phpseclib/phpseclib/File/ANSI.php    |  283 ++++---
  .../phpseclib/phpseclib/phpseclib/File/ASN1.php    |   29 +-
  .../phpseclib/phpseclib/phpseclib/File/X509.php    |   90 ++-
  .../phpseclib/phpseclib/Math/BigInteger.php        |  191 ++--
  .../phpseclib/phpseclib/phpseclib/Net/SCP.php      |    8 +-
  .../phpseclib/phpseclib/phpseclib/Net/SFTP.php     |  191 +++-
  .../phpseclib/phpseclib/Net/SFTP/Stream.php        |    7 +-
  .../phpseclib/phpseclib/phpseclib/Net/SSH1.php     |   14 +-
  .../phpseclib/phpseclib/phpseclib/Net/SSH2.php     |  959 
++++++++++++++------
  .../phpseclib/phpseclib/System/SSH/Agent.php       |  147 +++
  framework/Queue/composer.json                      |    4 +-
  framework/Queue/package.xml                        |   19 +-
  framework/Secret/composer.json                     |    4 +-
  framework/Secret/package.xml                       |   19 +-
  framework/Service_Weather/composer.json            |    4 +-
  .../Service_Weather/lib/Horde/Service/Weather.php  |   16 +
  .../lib/Horde/Service/Weather/Base.php             |    8 +-
  .../lib/Horde/Service/Weather/Current/Owm.php      |   94 ++
  .../lib/Horde/Service/Weather/Forecast/Owm.php     |   73 ++
  .../lib/Horde/Service/Weather/Owm.php              |  379 ++++++++
  .../lib/Horde/Service/Weather/Period/Base.php      |    2 +-
  .../lib/Horde/Service/Weather/Period/Owm.php       |   89 ++
  .../Horde/Service/Weather/WeatherUnderground.php   |   12 +-
  .../lib/Horde/Service/Weather/Wwo.php              |    3 +-
  framework/Service_Weather/package.xml              |   33 +-
  .../test/Horde/Service/Weather/Wwov2Test.php       |   11 +-
  framework/SessionHandler/composer.json             |    6 +-
  framework/SessionHandler/package.xml               |   20 +-
  framework/Token/composer.json                      |    4 +-
  framework/Token/package.xml                        |   19 +-
  framework/Vcs/test/Horde/Vcs/CvsTest.php           |    1 +
  framework/Vcs/test/Horde/Vcs/RcsTest.php           |    1 +
  gollem/lib/Gollem.php                              |    1 +
  hermes/js/hermes.js                                |    1 +
  hermes/lib/Ajax/Application/Handler.php            |   11 +-
  hermes/templates/dynamic/deliverables.inc          |    2 +
  hermes/themes/default/dynamic/screen.css           |    6 +-
  horde/admin/cmdshell.php                           |    3 +-
  horde/admin/phpshell.php                           |    2 +
  horde/admin/sqlshell.php                           |    5 +-
  horde/config/conf.xml                              |    5 +-
  horde/docs/CHANGES                                 |    1 +
  horde/js/weatherblockmap.js                        |   33 +
  horde/lib/Block/Weather.php                        |   25 +-
  horde/lib/Test.php                                 |    2 +-
  horde/lib/View/Sidebar.php                         |   20 +-
  horde/package.xml                                  |   12 +-
  horde/templates/admin/cmdshell.html.php            |    2 +
  horde/templates/admin/phpshell.html.php            |    2 +
  horde/templates/admin/sqlshell.html.php            |    2 +
  horde/templates/block/weather.html.php             |  144 +---
  horde/templates/block/weather_content.html.php     |  127 +++
  horde/themes/default/block/screen.css              |   28 +-
  imp/config/hooks.php.dist                          |   20 +
  imp/docs/CHANGES                                   |    1 +
  imp/lib/Ajax/Application/Handler/Dynamic.php       |    2 +-
  imp/lib/Auth.php                                   |    9 +
  imp/lib/Compose.php                                |   12 +-
  imp/lib/Mime/Viewer/Html.php                       |    2 +-
  imp/lib/Prefs/Special/PgpPrivateKey.php            |    1 +
  imp/lib/Smime.php                                  |    2 +-
  imp/package.xml                                    |    1 +
  imp/templates/prefs/pgpprivatekey.html.php         |    2 +
  ingo/lib/Basic/Forward.php                         |    8 +-
  ingo/lib/Basic/Spam.php                            |    8 +-
  ingo/lib/Basic/Vacation.php                        |    8 +-
  kronolith/lib/Ajax/Application/Handler.php         |   91 ++-
  kronolith/lib/Api.php                              |   13 +-
  kronolith/lib/Application.php                      |    8 +-
  kronolith/lib/Event.php                            |   20 +-
  kronolith/lib/Kronolith.php                        |   19 +-
  nag/app/controllers/SaveTask.php                   |    3 -
  nag/lib/Api.php                                    |    4 +-
  nag/lib/Driver.php                                 |    5 +
  nag/lib/Search.php                                 |   27 +-
  nag/lib/TagBrowser.php                             |    9 +-
  nag/lib/Task.php                                   |   49 +-
  nag/task.php                                       |    2 -
  trean/data.php                                     |   17 +-
  trean/docs/CHANGES                                 |    1 +
  trean/lib/Data/Html.php                            |   86 ++
  trean/package.xml                                  |    5 +-
  turba/lib/Api.php                                  |   27 +-
  turba/lib/Driver.php                               |    4 +
  turba/lib/Driver/Kolab.php                         |    2 +-
  turba/lib/Driver/Sql.php                           |    4 +-
  turba/lib/Driver/Vbook.php                         |   13 +-
  turba/lib/Turba.php                                |    1 +
  whups/lib/Api.php                                  |    6 +-
  whups/lib/Driver.php                               |   24 +-
  whups/lib/Driver/Sql.php                           |   48 +-
  142 files changed, 5304 insertions(+), 1930 deletions(-)

http://github.com/horde/horde/commit/1dfebf6fdad4391f520bf2265181d432368df3b8
11/12/2015 05:00:52 PM Git Commit Comment #3 Reply to this comment
Changes have been made in Git (master):

commit beae0888cbfd176fe0977ce7bb6fb12c531323c0
Author: Michael J Rubinsky <mrubinsk@horde.org>
Date:   Thu Nov 12 12:00:23 2015 -0500

     Might as well add this test since it's here...

  .../Icalendar/test/Horde/Icalendar/ParseTest.php   |   11 +++++
  .../test/Horde/Icalendar/fixtures/bug14132.ics     |   46 
++++++++++++++++++++
  2 files changed, 57 insertions(+), 0 deletions(-)

http://github.com/horde/horde/commit/beae0888cbfd176fe0977ce7bb6fb12c531323c0
11/12/2015 04:56:59 PM Michael Rubinsky Comment #2
State ⇒ Feedback
Priority ⇒ 1. Low
Reply to this comment
Can you be more specific as to what you are seeing that is incorrect? 
I created a unit test for this and it works as expected. That is, the 
vTimezone is correctly parsed, the DTSTART of the event in your 
example file is represented as 3am on 10/9 in America/New_York. This, 
converted to UTC yields a time of 7am since this date is within DST 
and has an offset of UTC - 4 hours.
10/08/2015 10:02:59 AM v (dot) henkel (at) wenzel-elektronik (dot) de Comment #1
New Attachment: bad.ics Download
State ⇒ Unconfirmed
Patch ⇒ No
Milestone ⇒
Queue ⇒ Kronolith
Summary ⇒ vCalendar timezone definition ignored in case of starting far ago
Type ⇒ Bug
Priority ⇒ 2. Medium
Reply to this comment
Timezone definition start dates far ago are ignored.

Our buggy example has a define startdate of 1.Jan.1601.
BEGIN:VTIMEZONE
TZID:Eastern Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
...

However, an entry like
DTSTART:20010101T02000
would be processed in correct manner.

Saved Queries