Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

If you've problems with unsupported - non official ;-) - functionalities use this forum please.
Post Reply
User avatar
Uwe367
Posts: 925
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 » Wed 14. Nov 2018, 06:00

Navchdem ich nun schoin mehrmals sah daß die verschiedenen Navigationsscripte im Wiki, die Knut einst schrieb, alle nicht mit PHP 7 kompatibel sind würde ich mich freuen wenn sich das mal jemand anschauen könnte.
Die Funktion preg_replace sowie der Modifiere werden von PHP 7 nicht mehr unterstützt, stattdessen soll perg_replace_callback verwendet werden was ich auch versuchsweise machte.
Wenns denn auch so einfach wäre, aber Pustekuchen.
Nehme ich den Modifier raus und setzte perg_replace_callback an die entsprechende Stelle, so kommt eine Fehlermeldung:
Warning: preg_replace_callback(): Requires argument 2, 'buildNavi_vert("$1","0","$2"-1);', to be a valid callback in
Und schon stehe ich auf dem Schlauch.
Der Code, aus dem der Fehler kommt ist dieser:

Code: Select all

$content["all"] = preg_replace_callback('/\{NAV_VERT_FO:(.*?),(.*?)\}/','buildNavi_vert("$1","0","$2"-1);', $content["all"]);
Im Original sieht die Zeile so aus:

Code: Select all

$content["all"] = preg_replace('/\{NAV_VERT_FO:(.*?),(.*?)\}/e','buildNavi_vert("$1","0","$2"-1);', $content["all"]);
Für jemanden, der sich damit auskennt sicher ein leichtes Spiel und daher frage ich mal ganz freundlich unseren Oliver ob er sich das mal anschauen und vielleicht richten könnte :)
Eines der Scripte, die den Fehler verursachen liegt hier: https://wiki.phpwcms.org/doku.php/deuts ... v_horiz_dd

Die anderen Scripte werden ebenso den gleichen Fehler auslösen, aber ich traue mir zu diese nach einem vorhandenen Beispiel selbst zu korrigieren wenn ich ein Beispiel dafür bekomme.

Oliver... könntest du dir das mal anschauen und ein Beispiel dafür geben wie man das in Ordnung bringen kann?
Wäre wirklich toll und für viele, die diese Scripte noch nutzen, sehr hilfreich.
Vielen Dank.

User avatar
Oliver Georgi
Site Admin
Posts: 9482
Joined: Fri 3. Oct 2003, 22:22
Location: Dessau
Contact:

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Oliver Georgi » Sun 18. Nov 2018, 08:45

Ich habe neulich erst die {NAV_HORIZ_DD} für einen Kunden umgebaut. Das ist ja die gleiche Geschichte. Die habe ich noch weiter aufgeräumt. Aber in der Hauptsache geht es um das Einführen einer Wrapper-Funktion.

Code: Select all

if(strpos($content["all"], '{NAV_VERT_FO') !== false) {
    $content["all"] = str_replace('{NAV_VERT_FO}', '{NAV_VERT_FO:0,100}', $content["all"]);
    $content["all"] = preg_replace_callback('/\{NAV_VERT_FO:(.*?)\}/i', 'buildNavi_vert_wrapper', $content["all"]);
}

function buildNavi_vert_wrapper($matches) {

    $start = 0;
    $counter = 0;
    $depth = 99;

    if (!isset($matches[1]) || empty($matches[1])) {
        return buildNavi_vert($start, $counter, $depth);
    }

    $value = explode(',', trim($matches[1]));

    $start = intval(trim($value[0]));
    if (isset($value[1])) {
        $depth = intval(trim($value[1]));
        if ($depth) {
            $depth = $depth - 1;
        }
    }

    return buildNavi_vert($start, $counter, $depth);
}
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Kleintierpraxis am Georgengarten

User avatar
Uwe367
Posts: 925
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 » Sun 18. Nov 2018, 10:12

Danke Oliver :)
So wie ich das sehe müßte das ja eigentlich auf alle anderen Scripte, die eine ähnliche Navi erzeugen, anwendbar sein oder?

User avatar
Oliver Georgi
Site Admin
Posts: 9482
Joined: Fri 3. Oct 2003, 22:22
Location: Dessau
Contact:

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Oliver Georgi » Sun 18. Nov 2018, 11:11

Ja, das Prinzip ist immer identisch.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Kleintierpraxis am Georgengarten

User avatar
Uwe367
Posts: 925
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 » Sun 18. Nov 2018, 17:28

Ok, Danke für den Hinweis.
Dann werde ich in den nächsten Tagen mal versuchen die Scripte aus dem Wiki enstsprechend zu bearbeiten so daß diese wieder lauffähig sind.

fhadmin
Posts: 2
Joined: Mon 12. Nov 2018, 21:40

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by fhadmin » Mon 19. Nov 2018, 10:12

Oliver Georgi wrote:
Sun 18. Nov 2018, 08:45
Ich habe neulich erst die {NAV_HORIZ_DD} für einen Kunden umgebaut. Das ist ja die gleiche Geschichte. Die habe ich noch weiter aufgeräumt. Aber in der Hauptsache geht es um das Einführen einer Wrapper-Funktion.

Code: Select all

if(strpos($content["all"], '{NAV_HORIZ_DD') !== false) {
    $content["all"] = str_replace('{NAV_HORIZ_DD}', '{NAV_HORIZ_DD:0,100}', $content["all"]);
    $content["all"] = preg_replace_callback('/\{NAV_VERT_FO:(.*?)\}/i', 'buildNavi_vert_wrapper', $content["all"]);
}

function buildNavi_vert_wrapper($matches) {

    $start = 0;
    $counter = 0;
    $depth = 99;

    if (!isset($matches[1]) || empty($matches[1])) {
        return buildNavi_vert($start, $counter, $depth);
    }

    $value = explode(',', trim($matches[1]));

    $start = intval(trim($value[0]));
    if (isset($value[1])) {
        $depth = intval(trim($value[1]));
        if ($depth) {
            $depth = $depth - 1;
        }
    }

    return buildNavi_vert($start, $counter, $depth);
}
Ich habe diesen Code in folgendem Script entsprechend eingebunden, doch das Horizontale Menü funkrioniert nicht.

horizontal drop-down with ID output -> NAVI HORIZONTAL DROP-DOWN (Version 1.01 04.09.2010 KH 25.07.07 Oliver Georgi )

Zu sehen hier: Problem: {NAV_HORIZ_DD:0,3} wird nicht angezeigt
http://new.schwarzwaldverein-rheinfelden.de/
Last edited by fhadmin on Mon 19. Nov 2018, 10:31, edited 1 time in total.

User avatar
Oliver Georgi
Site Admin
Posts: 9482
Joined: Fri 3. Oct 2003, 22:22
Location: Dessau
Contact:

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Oliver Georgi » Mon 19. Nov 2018, 10:24

Genau schauen, das ist nur das Prinzip! Braucht Anpassung.

Da habe ich einiges gemixt in dem Beitrag. Habe es jetzt für die vertikale gefixt. Aber ich habe dieses so nicht getestet.

Habe hier nur das horizontale Script gefixt vorliegen. Das ist auch zusätzlich fehlerbereinigt, sodass es keinerlei Errormeldungen mehr wirft.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Kleintierpraxis am Georgengarten

Post Reply