Einfache Termin (Event-) Anzeige gesucht / Eigenentwicklung streikt nach Update auf J4 bzw. PHP 8

  • Hallo zusammen,

    für eine Vereinswebseite suche ich eine ganz simple Terminanzeige für ein- und mehrtätige Events.

    Es soll ein Modul mit dem nächsten Termin und eine Terminübersicht geben.

    ich habe JEvents und iCagenda ausprobiert, wäre notfalls möglich aber viel zu overkill.

    Vielleicht kennt ja jemand etwas schlankes. :)


    Meine alte Lösung hat bisher mit J3 und PHP 7.4 immer prima funktioniert. Mag etwas "stump" sein, aber für meine Zwecke reicht es.

    Ich habe eine Terminliste als txt. Ein Modul für den nächsten Termin auf der Startseite. Ein Modul für die Terminliste auf der Seite /termine.

    Termine.txt
    Code: /templates/TEMPLATE/html/mod_custom/termine.txt
    12.03.2023|Sonntag, der 12. März 2023|Titel des Events am 12. März|<a href="termine">Alle Informationen erhalten Sie unter diesem Link</a>|Kurze Terminbeschreibung|
    02.04.2023|Sonntag, der 02. April 2023|Titel des Events am 02. April|<a href="termine">Alle Informationen erhalten Sie unter diesem Link</a>|Kurze Terminbeschreibung|<a href="https://example.org/" target="_blank" rel="noopener noreferrer">Weitere Informationen finden Sie auf der Homepage des Veranstalters</a>.
    02.07.2023|Samstag, der 01. Juli - Sonntag, der 02. Juli 2023|Titel des mehrtägigen Events|Es wird toll! <a href="interneeventseite">Alle Infos erhalten Sie unter diesem Link</a>.|<p><b>Absatz Fettschrift</p><p>Absatz 2</p><p>Absatz 3</p>
    Erklärung Spalten getrennt durch Pipe-Symbol
    Code
    Spalte 0: Tag bis zu dem der Termin angezeigt werden soll, bei mehrtätigen Terminen der letzte Tag
    Spalte 1: lange Datumsangabe (z.B. Sonntag, der 01.12.2000 oder Freitag, der 30.06. bis Montag, der 02.07.2000)
    Spalte 2: Titel des Termins 
    Spalte 3: Kurze Beschreibung für Nächster Termin
    Spalte 4: Lange Beschreibung für Terminliste
    Spalte 5: Weiterer Absatz für Terminliste
    Nächster Termin auf Startseite
    Terminliste

    Ich erhalte die Fehlermeldung  0 fgets(): Argument #1 ($stream) must be of type resource, bool given

    Leider bekomme ich es nicht hin das Script für J4 / PHP 8 anzupassen. Wenn dies gelingen würde, wäre das eine sehr schlanke Lösung. Bestenfalls die termine.txt als termine.php, damit man sie auch per defined('_JEXEC') or die;schützen kann.

    Vielleicht hat jemand Lust das anzupassen. :)

  • Ich erhalte die Fehlermeldung  0 fgets(): Argument #1 ($stream) must be of type resource, bool given

    Hallo,

    ich vermute ganz stark, dass das fopen zu dem fgets auf Fehler gelaufen ist, z. B. dass die Datei nicht vorhanden ist. fopen gibt dann false (bool) zurück und das akzeptiert fgets nicht.

    Vor php 8 lief das durch.

    Gruß

    kdh

  • kdh und christine2: Vielen Dank für eure schnellen Antworten!

    Zur Ergänzung: Die termine.txt ist UTF-BOM kodiert. (notepad++)

    Ich habe das jetzt mal aus Joomla herausgelöst und testweise in ein extra Verzeichnis ( auch PHP 8 ) gepackt.

    Dann habe ich die termine.txt relativ verknüpft.

    PHP
        $termine = fopen("termine.txt", "rb");

    ... und es funktioniert, egal ob relativer oder absoluter Pfad.

    Wenn ich die termine.txt im Joomla-Umfeld relativ verknüpfe, bleibt die Fehlermeldung bestehen. ?(

    Wenn ich bei den beiden Dateien dann testweise die Zeile defined('_JEXEC') or die; auskommentiere und sie direkt aufrufe, funktionieren beide.

    Hier die Fehlermeldung für die Datei /templates/TEMPLATE/html/mod_custom/naechstertermin.php, eingebunden auf der Startseite.


    Hier lag es wohl an: PHP 8.1 Fehler nach Umstellung auf PHP 8.1.11

    Liebe Grüße

    Christine

    Leider wird es dort ja nicht abschließend geklärt.