Navigation

    Kopano
    • Register
    • Login
    • Search
    • Categories
    • Get Official Kopano Support
    • Recent
    Statement regarding the closure of the Kopano community forum and the end of the community edition

    Importinc an ical apointment is shown 1 Hr later

    Kopano WebApp
    3
    15
    605
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • strippe96
      strippe96 @strippe96 last edited by

      @strippe96
      I have found the reason for this timeshift:

      DTSTART:20200227T155500
      DTEND:20200227T165500

      was Date & Time. It seems, that Kopano Webapp assumes this as

      DTSTART:20200227T155500Z
      DTEND:20200227T165500Z

      and not for timezone Europe/Berlin.

      Could this be a bug?

      BR THomas

      strippe96 1 Reply Last reply Reply Quote 0
      • strippe96
        strippe96 @strippe96 last edited by

        @strippe96 Found the bug:

        Pls. have a look to /usr/share/kopano-webapp/plugins/files/php/Files/Backend/Webdav/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/DateTime.php at line 246. If an Appointment without Timezone ( eg. “Z” -> DTSTART:20200227T155500 ) is passed to function setDateTime, the function assumed type “LOCAL” and does not take care of the local timezone. Inserting

        $this->offsetSet(‘TZID’, $dt->getTimeZone()->getName());

        just before the “break;” will sove this.

        BR Thomas

        1 Reply Last reply Reply Quote 0
        • marty
          marty Kopano (Inactive) last edited by

          @strippe96

          Line 246 does not exist in that file.

          The extra hour is also added without having files plugin on the server.

          https://documentation.kopano.io/deskapp_admin_manual
          http://documentation.kopano.io/webapp_smime_manual
          https://documentation.kopano.io/webapp_admin_manual

          1 Reply Last reply Reply Quote 0
          • strippe96
            strippe96 last edited by

            Sorry, my failure. Please add the line (No 76) “$this->offsetSet(‘TZID’, $dt->getTimeZone()->getName());” in “case self::LOCAL :” just before “break;”

            public function setDateTime(\DateTime $dt, $dateType = self::LOCALTZ) {
            
                switch($dateType) {
            
                    case self::LOCAL :
                        $this->setValue($dt->format('Ymd\\THis'));
                        $this->offsetUnset('VALUE');
                        $this->offsetUnset('TZID');
                        $this->offsetSet('VALUE','DATE-TIME');
                        $this->offsetSet('TZID', $dt->getTimeZone()->getName());
                        break;
                    case self::UTC :
                        $dt->setTimeZone(new \DateTimeZone('UTC'));
                        $this->setValue($dt->format('Ymd\\THis\\Z'));
                        $this->offsetUnset('VALUE');
                        $this->offsetUnset('TZID');
                        $this->offsetSet('VALUE','DATE-TIME');
                        break;
                    case self::LOCALTZ :
                        $this->setValue($dt->format('Ymd\\THis'));
                        $this->offsetUnset('VALUE');
                        $this->offsetUnset('TZID');
                        $this->offsetSet('VALUE','DATE-TIME');
                        $this->offsetSet('TZID', $dt->getTimeZone()->getName());
                        break;
                    case self::DATE :
                        $this->setValue($dt->format('Ymd'));
                        $this->offsetUnset('VALUE');
                        $this->offsetUnset('TZID');
                        $this->offsetSet('VALUE','DATE');
                        break;
                    default :
                        throw new \InvalidArgumentException('You must pass a valid dateType constant');
            
                }
                $this->dateTime = $dt;
                $this->dateType = $dateType;
            
            }
            

            Cheers, Thomas

            marty 1 Reply Last reply Reply Quote 0
            • marty
              marty Kopano (Inactive) @strippe96 last edited by

              @strippe96

              What makes you think this code is used while importing an ics?

              https://documentation.kopano.io/deskapp_admin_manual
              http://documentation.kopano.io/webapp_smime_manual
              https://documentation.kopano.io/webapp_admin_manual

              strippe96 1 Reply Last reply Reply Quote 0
              • strippe96
                strippe96 @marty last edited by

                @marty Dear Marty,

                when I´ll try to Import an ICS-file, where the DTSTART / DTEND Tags are noted without a timezone marker (e.g. “Z” at the End), the Appointment will be 1 hr later in the Calendar. This is fixed after applying this Change. All Appointments are shown at the correct time.

                1 Reply Last reply Reply Quote 0
                • marty
                  marty Kopano (Inactive) last edited by

                  @strippe96 Can you try to reproduce it without this plugin installed on the server
                  (I could, as stated before)

                  https://documentation.kopano.io/deskapp_admin_manual
                  http://documentation.kopano.io/webapp_smime_manual
                  https://documentation.kopano.io/webapp_admin_manual

                  strippe96 1 Reply Last reply Reply Quote 0
                  • strippe96
                    strippe96 @marty last edited by

                    @marty Sorry Marty, I´ll missunderstood you. Can you please explain, witch module and how to deinstall?
                    Thanks in Advance.

                    Thomas

                    1 Reply Last reply Reply Quote 0
                    • marty
                      marty Kopano (Inactive) last edited by

                      @strippe96
                      The code you modified is from an external module inside the files plugin.

                      Without the files plugin, the described behavior i.e. bug is also reproducible.
                      And a fix for WebApp in an external plugin is not a good idea.

                      https://documentation.kopano.io/deskapp_admin_manual
                      http://documentation.kopano.io/webapp_smime_manual
                      https://documentation.kopano.io/webapp_admin_manual

                      strippe96 2 Replies Last reply Reply Quote 0
                      • strippe96
                        strippe96 @marty last edited by

                        @marty Hey marty, after removing files, I´ve got the same result. 1 Hr in advance.

                        1 Reply Last reply Reply Quote 0
                        • strippe96
                          strippe96 @marty last edited by

                          @marty From my point of view, I´ll want to say, that this module is “fromoutside to webapp” but it´s local to the files module. This function seems to be used only if files (importing an appointment e.g.) is using it.
                          For me, it´s ok to change it here. Isn´t it?

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post