Hallo @hschottm und ggf. Mitentwickler,
nachdem die Kombination ContaoManager <-> PHP 7.4 bei meinem Hoster nicht ordentlich funktioniert (7.3 geht), "musste" ich auf PHP 8 wechseln.
Dabei ist aufgefallen, dass die Erweiterung - ich verwende sie gefühlt "schon immer" (seit Typolight, jetzt mit Contao 4.9) - nicht zu PHP 8 kompatibel ist. Es ist aber dem Anschein nach leicht, sie anzupassen:
Code:
$ diff CalendarImport.php.orig CalendarImport.php
39c39
< $arrCalendars = $this->Database->prepare("SELECT id FROM tl_calendar WHERE id IN (" . join($arrCalendars, ',') . ") AND ical_source = ?")
---
> $arrCalendars = $this->Database->prepare("SELECT id FROM tl_calendar WHERE id IN (" . join(',', $arrCalendars) . ") AND ical_source = ?")
839c839
< $arrFields['cep_participants'] = join($attendees, ',');
---
> $arrFields['cep_participants'] = join(',', $attendees);
854c854
< $arrFields['cep_contact'] = join($contacts, ',');
---
> $arrFields['cep_contact'] = join(',', $contacts);
und
Code:
$ diff ContentICal.php.orig ContentICal.php
94c94
< $this->Template->href = $this->addToUrl("ical=" . join($arrCalendars, ',') . "&title=" . urlencode($this->strTitle));
---
> $this->Template->href = $this->addToUrl("ical=" . join(',', $arrCalendars) . "&title=" . urlencode($this->strTitle));
Mehr Stellen gibt es wohl nicht.
(Ich habe, damit das diff "hübscher" ist, noch einen Umbruch in Zeile 39 entfernt.)
Die Funktion join() ist ein Alias auf implode(). Ich deute das so: die Parameter dürfen bereits seit PHP4 vertauscht sein und müssen es seit PHP8; siehe https://www.php.net/manual/de/function.implode.php
Viele Grüße
purzel