Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-85717

Correction to dateinterval* formats

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not a bug
    • Icon: Minor Minor
    • None
    • 4.3 regressions, 4.4 regressions, 4.5 regressions, 5.0 regressions
    • Language

      The days parameter of the following date interval format strings is incorrect:

      • dateintervalmoday
      • dateintervalmodayfull
      • dateintervalmodayhr
      • dateintervalmodayhrfull
      • dateintervalmodayhrmin
      • dateintervalmodayhrminfull
      • dateintervalmodayhrminsec
      • dateintervalmodayhrminsecfull
      • dateintervalmodayhrsec
      • dateintervalmodayhrsecfull
      • dateintervalyrmoday
      • dateintervalyrmodayfull
      • dateintervalyrmodayhr
      • dateintervalyrmodayhrfull
      • dateintervalyrmodayhrmin
      • dateintervalyrmodayhrminfull
      • dateintervalyrmodayhrminsec
      • dateintervalyrmodayhrminsecfull
      • dateintervalyrmodayhrsec
      • dateintervalyrmodayhrsecfull
      • dateintervalyrmodaymin
      • dateintervalyrmodayminfull
      • dateintervalyrmodayminsec
      • dateintervalyrmodayminsecfull
        The number of days is specified using the %a parameter, which returns the "Total number of days" according to PHP documentation found at: https://www.php.net/manual/en/dateinterval.format.php.

      The correct parameter should be %d, which is the number of days.

      Example: With the %a parameter, the number of days parameter in the date intervals is rendering the total number of days in the interval, which is misleading:

      1 years 11 months 729 days 16 hours 12 minutes 43 seconds

      By replacing the %a with %d in the above-mentioned strings of the langconfig.php file, the date interval will be correctly rendered like:

      1 years 11 months 29 days 16 hours 12 minutes 43 seconds

      The following strings should be removed because they cannot be rendered correctly as an interval because PHP does not support formatting intervals using the number of days, hours, minutes, or seconds since the beginning of the year, month, or day. As a result, these formats produce misleading output.

      For example, the interval:

      1 years 43 seconds

      is rendered incorrectly. If it were to be rendered accurately (i.e., as the number of seconds since the start of the year), it would appear as:

      1 years 102203 seconds

      Affected Strings

      The following interval format strings should be removed:

      • dateintervaldayhrsec
      • dateintervaldayhrsecfull
      • dateintervaldaymin
      • dateintervaldayminfull
      • dateintervaldayminsec
      • dateintervaldayminsecfull
      • dateintervaldaysec
      • dateintervaldaysecfull
      • dateintervalhrsec
      • dateintervalhrsecfull
      • dateintervalmodayhrsec
      • dateintervalmodayhrsecfull
      • dateintervalmodaymin
      • dateintervalmodaymin
      • dateintervalmodayminfull
      • dateintervalmodayminfull
      • dateintervalmodayminsec
      • dateintervalmodayminsec
      • dateintervalmodayminsecfull
      • dateintervalmodayminsecfull
      • dateintervalmodaysec
      • dateintervalmodaysec
      • dateintervalmodaysecfull
      • dateintervalmodaysecfull
      • dateintervalmohrsecfull
      • dateintervalmomin
      • dateintervalmominfull
      • dateintervalmominsec
      • dateintervalmominsecfull
      • dateintervalmosec
      • dateintervalmosecfull
      • dateintervalyrday
      • dateintervalyrdayfull
      • dateintervalyrdayhr
      • dateintervalyrdayhrfull
      • dateintervalyrdayhrmin
      • dateintervalyrdayhrminfull
      • dateintervalyrdayhrminsec
      • dateintervalyrdayhrminsecfull
      • dateintervalyrdayhrsec
      • dateintervalyrdayhrsecfull
      • dateintervalyrdaymin
      • dateintervalyrdayminfull
      • dateintervalyrdayminsec
      • dateintervalyrdayminsecfull
      • dateintervalyrdaysec
      • dateintervalyrdaysecfull
      • dateintervalyrhr
      • dateintervalyrhrfull
      • dateintervalyrhrmin
      • dateintervalyrhrminfull
      • dateintervalyrhrminsec
      • dateintervalyrhrminsecfull
      • dateintervalyrhrsec
      • dateintervalyrhrsecfull
      • dateintervalyrmin
      • dateintervalyrminfull
      • dateintervalyrminsec
      • dateintervalyrminsecfull
      • dateintervalyrmodayhrsec
      • dateintervalyrmodayhrsecfull
      • dateintervalyrmodaymin
      • dateintervalyrmodayminfull
      • dateintervalyrmodayminsec
      • dateintervalyrmodayminsecfull
      • dateintervalyrmodaysec
      • dateintervalyrmodaysec
      • dateintervalyrmodaysecfull
      • dateintervalyrmodaysecfull
      • dateintervalyrmohr
      • dateintervalyrmohrfull
      • dateintervalyrmohrmin
      • dateintervalyrmohrminfull
      • dateintervalyrmohrminsec
      • dateintervalyrmohrminsecfull
      • dateintervalyrmohrsec
      • dateintervalyrmohrsecfull
      • dateintervalyrmomin
      • dateintervalyrmominfull
      • dateintervalyrmominsec
      • dateintervalyrmominsecfull
      • dateintervalyrmosec
      • dateintervalyrmosecfull
      • dateintervalyrsec
      • dateintervalyrsecfull

      These interval formats rely on unsupported logic and result in output that misrepresents the actual time interval.

      Intervals are composed of years, months, days, hours, minutes, and seconds. You can start and end at any point in this sequence, but you must include all intermediate units - none can be skipped.

            michael-milette Michael Milette
            michael-milette Michael Milette
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                Error rendering 'clockify-timesheets-time-tracking-reports:timer-sidebar'. Please contact your Jira administrators.