The node repeat module is using the date_repeat_rrule form to generate its recurrences, but the answer it gets can be off by two instances because of issues with the UNTIL string generated by the form.
Say that the user inputs value into the form: Frequency => Every, Period => Days, Until=> 6/30/2010. Then when the form is processed, the returned RRULE will be RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20100630T000000Z;WKST=SU.
This is wrong on two counts: first, a user inputting an "until" value would generally assume an inclusive relationship, in which case the time should be 235959 instead of 000000. Second, the time zone is incorrect -- the user is thinking in terms of her timezone, not UTC. I understand the iCal RFC says that the UNTIL string should always be specified in UTC (that, at least, is the claim in the date_api_ical function that the form uses to generate the UNTIL string). But that doesn't help the user put in the correct date. Either the string should be generated without a timezone (or with the site default timezone), or the function that creates the string should make the appropriate calculation from the user's timezone into UTC.
These are trivial fixes in date_api_ical.inc (well, if we just omit the TZ rather than attempt the conversion into UTC it's trivial, but the conversion too wouldn't be too hard) for which I can easily generate a patch, but I wonder what else might be expecting the conversion to work the way it does now and what such fixes might break. Maybe the node_repeat authors (and I) are missing something about how the form is supposed to be used?
Comments
Comment #1
damienmckennaUnfortunately the Drupal 6 version of the Date module is no longer supported. That said, we appreciate that you took time to work on this issue. Should this request still be relevant for Drupal 7 please feel free to reopen it. Thank you.