Hello
Old messages do not need to be recoded. But new ones are created all the same
with UTC timezone
maybe I did something wrong?
I just replaced the file in /usr/share/zoneinfo/Europe/Moscow
Best regards, Taras
27.07.2022, 14:55, < mailto:[email protected] [email protected] >
On Thu, Jul 21, 2022 at 08:50:45PM +0000, "????? ???????" wrote: > But it
didn't help me That will only impact event you create after installing the TZv1
file. Do youi still have the bug for newly created events? If you want to fix
the older events created while you had the TZv2 file, you will need to edit the
database. Below is the script I wrote to do that. You will need to adjust at
least the time zone (Europe/Paris in my case) and the date after which event
should be fixed, which is the day you updated the system and got the TZv2 file
(1587001800 in case). You probably also need to adjust the charset. I advise
you to work on a copy of your SOGo installation. Make a backup, run the script,
check for bugs, fix, restore backup and start over. Unfortunately there is no
way to spot events that users moved back to the appropriate time within the web
interface. The script will fix their time as if they were incorrect, relulting
in an icorrect time. --- cut here --- #!/bin/sh # create an ic() helper
function mysql << EOT DELIMITER // CREATE FUNCTION ics(haystack mediumtext,
field varchar(64)) RETURNS varchar(256) CHARACTER SET 'latin1' COLLATE
'latin1_swedish_ci' DETERMINISTIC BEGIN RETURN substr(haystack, instr(haystack,
field) + length(field), instr(substr(haystack, instr(haystack, field) +
length(field)),'\r') - 1); END // DELIMITER ; EOT for i in `echo " select
substr(c_location, instr(c_location, '/sogo/')+ 6) from sogo_folder_info where
c_folder_type='Appointment';" | mysql -ABN sogo` ; do echo " update ${i} set
c_content = replace( c_content, concat('DTSTART;TZID=Europe/Paris:',
ics(c_content, 'DTSTART;TZID=Europe/Paris:') ),
concat('DTSTART;TZID=Europe/Paris:', date_format( convert_tz( str_to_date(
ics(c_content, 'DTSTART;TZID=Europe/Paris:'),'%Y%m%dT%H%i%S'
),'Europe/Paris','UTC' ),'%Y%m%dT%H%i%S' ) ) ) where ics(c_content, 'PRODID:')
like '-//Inverse inc./SOGo%' and c_creationdate > 1587001800 and c_content like
'%DTSTART;TZID=Europe/Paris:%'; update ${i} set c_content = replace( c_content,
concat('DTEND;TZID=Europe/Paris:', ics(c_content, 'DTEND;TZID=Europe/Paris:')
), concat('DTEND;TZID=Europe/Paris:', date_format( convert_tz( str_to_date(
ics(c_content, 'DTEND;TZID=Europe/Paris:'),'%Y%m%dT%H%i%S'
),'Europe/Paris','UTC' ),'%Y%m%dT%H%i%S' ) ) ) where ics(c_content, 'PRODID:')
like '-//Inverse inc./SOGo%' and c_creationdate > 1587001800 and c_content like
'%DTEND;TZID=Europe/Paris:%'; update ${i}_quick q, ${i} c set q.c_startdate =
unix_timestamp( convert_tz( from_unixtime(q.c_startdate),'Europe/Paris','UTC' )
), q.c_enddate = unix_timestamp( convert_tz(
from_unixtime(q.c_enddate),'Europe/Paris','UTC' ) ), q.c_cycleenddate =
unix_timestamp( convert_tz(
from_unixtime(q.c_cycleenddate),'Europe/Paris','UTC' ) ) where q.c_name =
c.c_name and ics(c.c_content, 'PRODID:') like '-//Inverse inc./SOGo%' and
c.c_creationdate > 1587001800 and c.c_content like
'%DTSTART;TZID=Europe/Paris:%'; update ${i}_quick q, ${i} c set q.c_nextalarm =
unix_timestamp( convert_tz( from_unixtime(q.c_nextalarm),'Europe/Paris','UTC' )
) where q.c_name = c.c_name and q.c_nextalarm != 0 and ics(c.c_content,
'PRODID:') like '-//Inverse inc./SOGo%' and c.c_creationdate > 1587001800 and
c.c_content like '%DTSTART;TZID=Europe/Paris:%';" done --- cut here --- --
Emmanuel Dreyfus /compose/ [email protected] -- /compose/ [email protected]
https://inverse.ca/sogo/lists https://inverse.ca/sogo/lists
--
[email protected]
https://inverse.ca/sogo/lists