<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet href="https://dev.horde.org/themes/horde//default/feed-rss.xsl" type="text/xsl"?> 
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
 <channel> 
  <title>cannot modify/delete external caldav events</title> 
  <pubDate>Thu, 09 Apr 2026 21:37:12 +0000</pubDate> 
  <link>https://bugs.horde.org/ticket/14021</link> 
  <atom:link rel="self" type="application/rss+xml" title="cannot modify/delete external caldav events" href="https://bugs.horde.org/ticket/14021/rss" /> 
  <description>cannot modify/delete external caldav events</description> 
 
   
   
  <item> 
   <title>I have an external caldav calendar in Kronolith (Davical 1.1</title> 
   <description>I have an external caldav calendar in Kronolith (Davical 1.1.3.1). I can view and add events, but I cannot modify or delete events. Access from Lightning works fine, using Lightning I can also modify/delete events created by Kronolith. 

When I try to modify/delete an event with Kronolith I get a &quot;Resource not found&quot; error and the following Apache log: 

127.0.0.1 - martin [20/Jun/2015:10:51:21 +0200] &quot;GET /davical/caldav.php/martin/calendar/ical0 HTTP/1.1&quot; 404 465 &quot;-&quot; &quot;Horde_Http 2.1.5&quot;

sometimes I see ical1 instead of ical0. 

Creating this very event looked like this: 

127.0.0.1 - martin [20/Jun/2015:10:51:11 +0200] &quot;PUT /davical/caldav.php/martin/
calendar/5585297f-1ed8-483c-9d06-5c4e00000000.ics HTTP/1.1&quot; 201 485 &quot;-&quot; &quot;Horde_H
ttp 2.1.5&quot;

This is not a recent regression, it has been like this for quite some time (I have logs back to October 2014, but it might be older). 

My guess is that Kronolith somehow doesn&#039;t get the event ID right (but my understanding of Horde code ends here...). 

I have tried deleting/re-adding the external calendar in Kronolith and creating a new principal in Davical but the problem remained the same. Davical logs show nothing interesting, other than the fact that Horde requested &quot;ical0&quot; which does not exist. 

I have seen that Apache mod_rewrite can create problems, so I have tried disabling mod_rewrite, but it didn&#039;t change anything. Anyway, I have no rewrite rules enabled. 

Thanks in advance for any hint! If I can help with any log- or conf-files, please let me know. 

Martin</description> 
   <pubDate>Sat, 20 Jun 2015 09:37:41 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t88249</link> 
  </item> 
   
  <item> 
   <title>Enable debug logging in the Horde log and review/post any re</title> 
   <description>Enable debug logging in the Horde log and review/post any relevant entries.</description> 
   <pubDate>Sat, 20 Jun 2015 15:35:56 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t88252</link> 
  </item> 
   
  <item> 
   <title>I cannot see much in the horde debug logs either (does it lo</title> 
   <description>I cannot see much in the horde debug logs either (does it log the calls to davical at all?)

This is where the davical event is created: 

2015-06-21T09:49:09+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0014s)  
	SELECT object_id, object_name FROM `rampage_objects` WHERE object_name
	  IN (&#039;&#039;) AND type_id = 2 [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:09+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0013s)  
	SELECT MAX(history_ts) FROM horde_histories WHERE history_action =
	  &#039;add&#039; AND object_uid =
	  &#039;kronolith:http://localhost/davical/caldav.php/martin/calendar:55866c7
	  5-3a94-41ab-a70b-66cd00000000&#039; [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:09+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0012s)  
	SELECT MAX(history_ts) FROM horde_histories WHERE history_action =
	  &#039;modify&#039; AND object_uid =
	  &#039;kronolith:http://localhost/davical/caldav.php/martin/calendar:55866c7
	  5-3a94-41ab-a70b-66cd00000000&#039; [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:09+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0008s)  
	SELECT x(event_coordinates) as lat, y(event_coordinates) as lon,
	  event_zoom as zoom FROM kronolith_events_mysqlgeo WHERE event_id =
	  &#039;55866c75-3a94-41ab-a70b-66cd00000000.ics&#039; [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:09+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0009s)  
	DELETE FROM horde_alarms WHERE alarm_id =
	  &#039;55866c75-3a94-41ab-a70b-66cd00000000&#039; [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:09+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0015s)  
	SELECT alarm_id, alarm_uid, alarm_start, alarm_end, alarm_methods,
	  alarm_params, alarm_title, alarm_text, alarm_snooze, alarm_internal
	  FROM horde_alarms WHERE alarm_dismissed = 0 AND ((alarm_snooze IS NULL
	  AND alarm_start &lt;= &#039;2015-06-21 07:49:09&#039;) OR alarm_snooze &lt;=
	  &#039;2015-06-21 07:49:09&#039;) AND (alarm_end IS NULL OR alarm_end &gt;=
	  &#039;2015-06-21 07:49:09&#039;) AND (alarm_uid IS NULL OR alarm_uid = &#039;&#039; OR
	  alarm_uid = &#039;martin&#039;) ORDER BY alarm_start, alarm_end [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]

And here I open it again and try to delete it: 

2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0008s)  
	SELECT object_id, object_name FROM `rampage_objects` WHERE object_name
	  IN (&#039;55866c75-3a94-41ab-a70b-66cd00000000&#039;) AND type_id = 2 [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0003s)  
	SELECT x(event_coordinates) as lat, y(event_coordinates) as lon,
	  event_zoom as zoom FROM kronolith_events_mysqlgeo WHERE event_id =
	  &#039;ical0&#039; [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0017s)  
	SELECT alarm_id, alarm_uid, alarm_start, alarm_end, alarm_methods,
	  alarm_params, alarm_title, alarm_text, alarm_snooze, alarm_internal
	  FROM horde_alarms WHERE alarm_dismissed = 0 AND ((alarm_snooze IS NULL
	  AND alarm_start &lt;= &#039;2015-06-21 07:49:13&#039;) OR alarm_snooze &lt;=
	  &#039;2015-06-21 07:49:13&#039;) AND (alarm_end IS NULL OR alarm_end &gt;=
	  &#039;2015-06-21 07:49:13&#039;) AND (alarm_uid IS NULL OR alarm_uid = &#039;&#039; OR
	  alarm_uid = &#039;martin&#039;) ORDER BY alarm_start, alarm_end [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] Max memory usage: 1835008 bytes [pid 26317 on line 609 of &quot;/usr/share/php/Horde/Registry.php&quot;]
2015-06-21T07:49:13+00:00 DEBUG: HORDE5 Load config file (conf.php; app: horde) [pid 26317 on line 109 of &quot;/usr/share/php/Horde/Registry/Loadconfig.php&quot;]
2015-06-21T07:49:13+00:00 DEBUG: HORDE5 [kronolith] Load config file (conf.php; app: kronolith) [pid 26317 on line 109 of &quot;/usr/share/php/Horde/Registry/Loadconfig.php&quot;]
2015-06-21T07:49:13+00:00 DEBUG: HORDE5 [kronolith] Horde_HashTable_Memory: Deleted keys (hht_hht_horde|nhBAMPnKLeBYAi2RBUIwfKh|martin||horde) [pid 26317 on line 129 of &quot;/usr/share/php/Horde/HashTable/Base.php&quot;]
2015-06-21T07:49:13+00:00 DEBUG: HORDE5 [kronolith] Horde_HashTable_Memory: Non-existent keys (horde|nhBAMPnKLeBYAi2RBUIwfKh|martin||horde) [pid 26317 on line 240 of &quot;/usr/share/php/Horde/HashTable/Base.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] Horde_HashTable_Memory: Deleted keys (hht_hht_kronolith.tagger.type_ids) [pid 26317 on line 129 of &quot;/usr/share/php/Horde/HashTable/Base.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] Horde_HashTable_Memory: Deleted keys (hht_hht_kronolith.tagger.type_ids_t) [pid 26317 on line 129 of &quot;/usr/share/php/Horde/HashTable/Base.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] Horde_HashTable_Memory: Non-existent keys (kronolith.tagger.type_ids,kronolith.tagger.type_ids_t) [pid 26317 on line 240 of &quot;/usr/share/php/Horde/HashTable/Base.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0003s)  
	SELECT user_id, user_name FROM `rampage_users` WHERE user_name IN
	  (&#039;martin&#039;) [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0003s)  
	SELECT t.tag_id AS tag_id, tag_name, count FROM `rampage_tagged`
	  tagged INNER JOIN `rampage_tags` t ON tagged.tag_id = t.tag_id INNER
	  JOIN `rampage_user_tag_stats` uts ON t.tag_id = uts.tag_id AND
	  uts.user_id = 2 GROUP BY t.tag_id, tag_name, count ORDER BY count DESC
	  LIMIT 10 [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0004s)  
	SELECT alarm_id, alarm_uid, alarm_start, alarm_end, alarm_methods,
	  alarm_params, alarm_title, alarm_text, alarm_snooze, alarm_internal
	  FROM horde_alarms WHERE alarm_dismissed = 0 AND ((alarm_snooze IS NULL
	  AND alarm_start &lt;= &#039;2015-06-21 07:49:13&#039;) OR alarm_snooze &lt;=
	  &#039;2015-06-21 07:49:13&#039;) AND (alarm_end IS NULL OR alarm_end &gt;=
	  &#039;2015-06-21 07:49:13&#039;) AND (alarm_uid IS NULL OR alarm_uid = &#039;&#039; OR
	  alarm_uid = &#039;martin&#039;) ORDER BY alarm_start, alarm_end [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]
2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] Max memory usage: 1572864 bytes [pid 26317 on line 609 of &quot;/usr/share/php/Horde/Registry.php&quot;]
2015-06-21T07:49:17+00:00 DEBUG: HORDE5 Load config file (conf.php; app: horde) [pid 26317 on line 109 of &quot;/usr/share/php/Horde/Registry/Loadconfig.php&quot;]
2015-06-21T07:49:17+00:00 DEBUG: HORDE5 [kronolith] Load config file (conf.php; app: kronolith) [pid 26317 on line 109 of &quot;/usr/share/php/Horde/Registry/Loadconfig.php&quot;]
2015-06-21T07:49:17+00:00 DEBUG: HORDE5 [kronolith] Horde_HashTable_Memory: Deleted keys (hht_hht_horde|nhBAMPnKLeBYAi2RBUIwfKh|martin||horde) [pid 26317 on line 129 of &quot;/usr/share/php/Horde/HashTable/Base.php&quot;]
2015-06-21T07:49:17+00:00 DEBUG: HORDE5 [kronolith] Horde_HashTable_Memory: Non-existent keys (horde|nhBAMPnKLeBYAi2RBUIwfKh|martin||horde) [pid 26317 on line 240 of &quot;/usr/share/php/Horde/HashTable/Base.php&quot;]
2015-06-21T09:49:17+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0017s)  
	SELECT alarm_id, alarm_uid, alarm_start, alarm_end, alarm_methods,
	  alarm_params, alarm_title, alarm_text, alarm_snooze, alarm_internal
	  FROM horde_alarms WHERE alarm_dismissed = 0 AND ((alarm_snooze IS NULL
	  AND alarm_start &lt;= &#039;2015-06-21 07:49:17&#039;) OR alarm_snooze &lt;=
	  &#039;2015-06-21 07:49:17&#039;) AND (alarm_end IS NULL OR alarm_end &gt;=
	  &#039;2015-06-21 07:49:17&#039;) AND (alarm_uid IS NULL OR alarm_uid = &#039;&#039; OR
	  alarm_uid = &#039;martin&#039;) ORDER BY alarm_start, alarm_end [pid 26317 on line 321 of &quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]

Davical sees:

[Sun Jun 21 09:49:09.127830 2015] [:error] [pid 26313] [client 127.0.0.1:45166] davical: LOG: :PUT /davical/caldav.php/martin/calendar/55866c75-3a94-41ab-a70b-66cd00000000.ics

(...)

[Sun Jun 21 09:49:13.613334 2015] [:error] [pid 26527] [client 127.0.0.1:45169] davical: LOG: :GET /davical/caldav.php/martin/calendar/55866c75-3a94-41ab-a70b-66cd00000000.ics

(...)

[Sun Jun 21 09:49:17.623577 2015] [:error] [pid 26554] [client 127.0.0.1:45172] davical: LOG: :GET /davical/caldav.php/martin/calendar/ical0
</description> 
   <pubDate>Mon, 22 Jun 2015 06:10:34 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t88256</link> 
  </item> 
   
  <item> 
   <title>one more line might be relevant: 

2015-06-21T09:49:13+02:</title> 
   <description>one more line might be relevant: 

2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] PHP ERROR: Only variables should be passed by reference [pid 26317 on line 426 of &quot;/usr/share/php/www/horde/kronolith/lib/Driver/Ical.php&quot;]

I think I&#039;d better attach the full log, in case there is more to find that I didn&#039;t spot. </description> 
   <pubDate>Mon, 22 Jun 2015 19:53:24 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t88266</link> 
  </item> 
   
  <item> 
   <title>Bug still present as of Horde 5.2.7 / Kronolith 4.2.9</title> 
   <description>Bug still present as of Horde 5.2.7 / Kronolith 4.2.9</description> 
   <pubDate>Mon, 10 Aug 2015 16:20:13 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t88523</link> 
  </item> 
   
  <item> 
   <title>Bug still present as of Horde 5.2.8 / Kronolith 4.2.11
</title> 
   <description>Bug still present as of Horde 5.2.8 / Kronolith 4.2.11
</description> 
   <pubDate>Fri, 30 Oct 2015 14:39:16 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t88920</link> 
  </item> 
   
  <item> 
   <title>&gt; 2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] PHP ER</title> 
   <description>&gt; 2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] PHP ERROR: Only 
&gt; variables should be passed by reference [pid 26317 on line 426 of 
&gt; &quot;/usr/share/php/www/horde/kronolith/lib/Driver/Ical.php&quot;]

This is irrelevant because it&#039;s a strict warning.</description> 
   <pubDate>Mon, 25 Jan 2016 16:30:45 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t89619</link> 
  </item> 
   
  <item> 
   <title>Confirmed with Google Calendar.</title> 
   <description>Confirmed with Google Calendar.</description> 
   <pubDate>Mon, 25 Jan 2016 16:44:55 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t89620</link> 
  </item> 
   
  <item> 
   <title>If I read the logs correctly, when modifying/deleting an exi</title> 
   <description>If I read the logs correctly, when modifying/deleting an existing event, it is read once again before the actual modification, and this reading fails. 

This log entry: 

2015-06-21T09:49:13+02:00 DEBUG: HORDE5 [kronolith] SQL  (0,0003s)
        SELECT x(event_coordinates) as lat, y(event_coordinates) as lon,
          event_zoom as zoom FROM kronolith_events_mysqlgeo WHERE event_id =
          &#039;ical0&#039; [pid 26317 on line 321 of
&quot;/usr/share/php/Horde/Db/Adapter/Mysqli.php&quot;]

(copied from below) 

must be a result of line 335 of /usr/share/php/www/horde/kronolith/lib/Driver/Ical.php, where the event_id of the item to be read is composed - this works when opening an existing event, but when modifying/deleting it, this line:

335                 $event-&gt;id = $id ? $id : &#039;ical&#039; . $i;

ends in the event_id being &quot;ical0&quot; or &quot;ical1&quot; (some missing input value?). </description> 
   <pubDate>Mon, 25 Jan 2016 17:39:43 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t89626</link> 
  </item> 
   
  <item> 
   <title>I believe I have have found the problem: 

in file kronoli</title> 
   <description>I believe I have have found the problem: 

in file kronolith/lib/Driver/Ical.php, line 431/2 (as of kronolith 4.2.22)
_processComponents is called with one argument missing: 

    431                 $this-&gt;_processComponents($results, $ical, null, null, false,
    432                                           false, false, $eventId);

resulting in an event with an empty $id, which in turn becomes &#039;ical&#039; . $i in line 342. 

Adding one &quot;false, &quot; (is that the right thing to add?) ad the beginning of line 433 seems to fix the problem for me (see patch attached).
</description> 
   <pubDate>Thu, 17 Aug 2017 09:22:43 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t92125</link> 
  </item> 
   
  <item> 
   <title>Changes have been made in Git (FRAMEWORK_5_2):

commit 04df8</title> 
   <description>Changes have been made in Git (FRAMEWORK_5_2):

commit 04df8812cb11eec084733e5ed29b0bb602057117
Author: Jan Schneider &lt;jan@horde.org&gt;
Date:   Fri Aug 25 14:25:56 2017 +0200

    [jan] Fix updating and deleting events from external CalDAV servers (martin1@k0k.net, Bug #14021).

 kronolith/docs/CHANGES        | 2 ++
 kronolith/lib/Driver/Ical.php | 2 +-
 kronolith/package.xml         | 2 ++
 3 files changed, 5 insertions(+), 1 deletion(-)

http://github.com/horde/horde/commit/04df8812cb11eec084733e5ed29b0bb602057117</description> 
   <pubDate>Fri, 25 Aug 2017 12:28:14 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t92141</link> 
  </item> 
   
  <item> 
   <title>Nice catch, thanks!</title> 
   <description>Nice catch, thanks!</description> 
   <pubDate>Fri, 25 Aug 2017 12:29:08 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t92143</link> 
  </item> 
   
  <item> 
   <title>Changes have been made in Git (master):

commit 8aba6f762b6f</title> 
   <description>Changes have been made in Git (master):

commit 8aba6f762b6f3108366c5e290f88ad9f055b9f39
Author: Jan Schneider &lt;jan@horde.org&gt;
Date:   Fri Aug 25 14:25:56 2017 +0200

    [jan] Fix updating and deleting events from external CalDAV servers (martin1@k0k.net, Bug #14021).

 kronolith/lib/Driver/Ical.php | 2 +-
 kronolith/package.xml         | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

http://github.com/horde/horde/commit/8aba6f762b6f3108366c5e290f88ad9f055b9f39</description> 
   <pubDate>Fri, 25 Aug 2017 12:32:35 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t92144</link> 
  </item> 
   
  <item> 
   <title>Changes have been made in Git (FRAMEWORK_5_2):

commit 39d15</title> 
   <description>Changes have been made in Git (FRAMEWORK_5_2):

commit 39d1549a4d3116f0340b99567415eb6a59167b9a
Author: Jan Schneider &lt;jan@horde.org&gt;
Date:   Fri, 25 Aug 2017 14:27:57 +0200

[jan] Fix updating and deleting events from external CalDAV servers (martin1@k0k.net, Bug #14021).

 M docs/CHANGES
 M lib/Driver/Ical.php
 M package.xml

https://github.com/horde/kronolith/commit/39d1549a4d3116f0340b99567415eb6a59167b9a</description> 
   <pubDate>Fri, 20 Oct 2017 20:34:46 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14021#t92442</link> 
  </item> 
   
   
 
 </channel> 
</rss> 
